md/linear: fix hot-add of devices to linear arrays.
authorNeilBrown <neilb@suse.de>
Thu, 22 Dec 2011 22:56:55 +0000 (09:56 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 22 Dec 2011 22:56:55 +0000 (09:56 +1100)
commit d70ed2e4fafdbef0800e73942482bb075c21578b
broke hot-add to a linear array.
After that commit, metadata if not written to devices until they
have been fully integrated into the array as determined by
saved_raid_disk.  That patch arranged to clear that field after
a recovery completed.

However for linear arrays, there is no recovery - the integration is
instantaneous.  So we need to explicitly clear the saved_raid_disk
field.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/linear.c

index c3273ef..6274565 100644 (file)
@@ -230,6 +230,7 @@ static int linear_add(struct mddev *mddev, struct md_rdev *rdev)
                return -EINVAL;
 
        rdev->raid_disk = rdev->saved_raid_disk;
                return -EINVAL;
 
        rdev->raid_disk = rdev->saved_raid_disk;
+       rdev->saved_raid_disk = -1;
 
        newconf = linear_conf(mddev,mddev->raid_disks+1);
 
 
        newconf = linear_conf(mddev,mddev->raid_disks+1);