Skip to content

Commit

Permalink
md: make sure new_level, new_chunksize, new_layout always have sensib…
Browse files Browse the repository at this point in the history
…le values.

When an md array is undergoing a change, we have new_* fields that
show the new values.
When no change is happening, it is least confusing if these have
the same value as the normal fields.
This is true in most cases, but not when the values are set via sysfs.

So fix this up.

A subsequent patch will BUG_ON if these things aren't consistent.


Signed-off-by: NeilBrown <neilb@suse.de>
  • Loading branch information
NeilBrown committed Mar 31, 2009
1 parent 67cc2b8 commit 34817e8
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -2633,9 +2633,9 @@ layout_store(mddev_t *mddev, const char *buf, size_t len)

if (mddev->pers)
return -EBUSY;
if (mddev->reshape_position != MaxSector)
mddev->new_layout = n;
else

mddev->new_layout = n;
if (mddev->reshape_position == MaxSector)
mddev->layout = n;
return len;
}
Expand Down Expand Up @@ -2702,9 +2702,9 @@ chunk_size_store(mddev_t *mddev, const char *buf, size_t len)

if (mddev->pers)
return -EBUSY;
else if (mddev->reshape_position != MaxSector)
mddev->new_chunk = n;
else

mddev->new_chunk = n;
if (mddev->reshape_position == MaxSector)
mddev->chunk_size = n;
return len;
}
Expand Down Expand Up @@ -3831,7 +3831,10 @@ static int do_md_run(mddev_t * mddev)
}
mddev->pers = pers;
spin_unlock(&pers_lock);
mddev->level = pers->level;
if (mddev->level != pers->level) {
mddev->level = pers->level;
mddev->new_level = pers->level;
}
strlcpy(mddev->clevel, pers->name, sizeof(mddev->clevel));

if (pers->level >= 4 && pers->level <= 6)
Expand Down

0 comments on commit 34817e8

Please sign in to comment.