md: Notify sysfs when RAID1/5/10 disk is In_sync.
authorAdrian Drzewiecki <adriand@vmware.com>
Wed, 18 Aug 2010 01:49:02 +0000 (11:49 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 18 Aug 2010 01:49:02 +0000 (11:49 +1000)
When RAID1 is done syncing disks, it'll update the state
of synced rdevs to In_sync. But it neglected to notify
sysfs that the attribute changed. So any programs that
are waiting for an rdev's state to change will not be
woken.

(raid5/raid10 added by neilb)

Signed-off-by: Adrian Drzewiecki <adriand@vmware.com>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c

index 73cc74f..0e1abf1 100644 (file)
@@ -1135,6 +1135,7 @@ static int raid1_spare_active(mddev_t *mddev)
                        spin_lock_irqsave(&conf->device_lock, flags);
                        mddev->degraded--;
                        spin_unlock_irqrestore(&conf->device_lock, flags);
+                       sysfs_notify_dirent(rdev->sysfs_state);
                }
        }
 
index a88aeb5..76d1fc9 100644 (file)
@@ -1130,6 +1130,7 @@ static int raid10_spare_active(mddev_t *mddev)
                        spin_lock_irqsave(&conf->device_lock, flags);
                        mddev->degraded--;
                        spin_unlock_irqrestore(&conf->device_lock, flags);
+                       sysfs_notify_dirent(tmp->rdev->sysfs_state);
                }
        }
 
index 866d4b5..7865dd0 100644 (file)
@@ -5341,6 +5341,7 @@ static int raid5_spare_active(mddev_t *mddev)
                        spin_lock_irqsave(&conf->device_lock, flags);
                        mddev->degraded--;
                        spin_unlock_irqrestore(&conf->device_lock, flags);
+                       sysfs_notify_dirent(tmp->rdev->sysfs_state);
                }
        }
        print_raid5_conf(conf);