summaryrefslogtreecommitdiff
path: root/Grow.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-06-24 13:04:38 +1000
committerNeilBrown <neilb@suse.de>2013-06-24 13:04:38 +1000
commitb397d7f3e08bdebcfce11ae9e281f93c5c4b9761 (patch)
treed573469e5e6d6803ee46393efd65cda085f1f950 /Grow.c
parenta6a78630acd3772b493c042c71fc8c22799fab4d (diff)
Grow: fix two problems with new_data_offset
1/ ignore failed devices - obviously 2/ We need to tell the kernel which direction the reshape should progress even if we didn't choose the particular data_offset to use. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Grow.c')
-rw-r--r--Grow.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Grow.c b/Grow.c
index 556bdafe..7bfb3ceb 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2267,6 +2267,8 @@ static int set_new_data_offset(struct mdinfo *sra, struct supertype *st,
char *dn = map_dev(sd->disk.major, sd->disk.minor, 0);
unsigned long long new_data_offset;
+ if (sd->disk.state & (1<<MD_DISK_FAULTY))
+ continue;
if (delta_disks < 0) {
/* Don't need any space as array is shrinking
* just move data_offset up by min
@@ -2308,9 +2310,9 @@ static int set_new_data_offset(struct mdinfo *sra, struct supertype *st,
dir = -1;
else
dir = 1;
- sysfs_set_str(sra, NULL, "reshape_direction",
- dir == 1 ? "backwards" : "forwards");
}
+ sysfs_set_str(sra, NULL, "reshape_direction",
+ dir == 1 ? "backwards" : "forwards");
if (dir > 0) {
/* Increase data offset */
if (after < min) {