]> git.karo-electronics.de Git - linux-beck.git/commit
md: reduce the number of synchronize_rcu() calls when multiple devices fail.
authorNeilBrown <neilb@suse.com>
Thu, 2 Jun 2016 06:19:53 +0000 (16:19 +1000)
committerShaohua Li <shli@fb.com>
Mon, 13 Jun 2016 18:54:22 +0000 (11:54 -0700)
commitd787be4092e27728cb4c012bee9762098ef3c662
treeb8de57ed842d3c01f6fdd4f6ee5be6408763a993
parentf5b67ae86ee317db20c0e10d54f16a0bbbd3207d
md: reduce the number of synchronize_rcu() calls when multiple devices fail.

Every time a device is removed with ->hot_remove_disk() a synchronize_rcu() call is made
which can delay several milliseconds in some case.
If lots of devices fail at once - as could happen with a large RAID10 where one set
of devices are removed all at once - these delays can add up to be very inconcenient.

As failure is not reversible we can check for that first, setting a
separate flag if it is found, and then all synchronize_rcu() once for
all the flagged devices.  Then ->hot_remove_disk() function can skip the
synchronize_rcu() step if the flag is set.

fix build error(Shaohua)
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
drivers/md/md.c
drivers/md/md.h
drivers/md/multipath.c
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c