md: allow setting newly added device to 'in_sync' via sysfs.
authorNeilBrown <neilb@suse.de>
Tue, 14 Apr 2009 02:01:57 +0000 (12:01 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 14 Apr 2009 02:01:57 +0000 (12:01 +1000)
When adding devices to an active array via sysfs, there is currently
no way to mark a device as 'in-sync' which is useful when
incrementally assembling an array.

So add that option.

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

index ed5727c089a9403b2ad10bb7e581beae5b0d36ac..298731b8e95124f180bf3e3876da6a7be2bc32c3 100644 (file)
@@ -2086,6 +2086,7 @@ state_store(mdk_rdev_t *rdev, const char *buf, size_t len)
         *  -writemostly - clears write_mostly
         *  blocked - sets the Blocked flag
         *  -blocked - clears the Blocked flag
+        *  insync - sets Insync providing device isn't active
         */
        int err = -EINVAL;
        if (cmd_match(buf, "faulty") && rdev->mddev->pers) {
@@ -2117,6 +2118,9 @@ state_store(mdk_rdev_t *rdev, const char *buf, size_t len)
                set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery);
                md_wakeup_thread(rdev->mddev->thread);
 
+               err = 0;
+       } else if (cmd_match(buf, "insync") && rdev->raid_disk == -1) {
+               set_bit(In_sync, &rdev->flags);
                err = 0;
        }
        if (!err && rdev->sysfs_state)
@@ -2190,7 +2194,7 @@ slot_store(mdk_rdev_t *rdev, const char *buf, size_t len)
        } else if (rdev->mddev->pers) {
                mdk_rdev_t *rdev2;
                /* Activating a spare .. or possibly reactivating
-                * if we every get bitmaps working here.
+                * if we ever get bitmaps working here.
                 */
 
                if (rdev->raid_disk != -1)