md: be careful when testing resync_max against curr_resync_completed.
authorNeilBrown <neilb@suse.com>
Fri, 17 Jul 2015 02:06:02 +0000 (12:06 +1000)
committerNeilBrown <neilb@suse.com>
Mon, 31 Aug 2015 17:37:33 +0000 (19:37 +0200)
commitc5e19d906a658f27fa858b09a95d9551b1a69bd0
tree4f24e56a076c2d544fbda272a85ba25e8d1e0242
parenta4a3d26d8757a30ae21724d8b0d79e00e113c38d
md: be careful when testing resync_max against curr_resync_completed.

While it generally shouldn't happen, it is not impossible for
curr_resync_completed to exceed resync_max.
This can particularly happen when reshaping RAID5 - the current
status isn't copied to curr_resync_completed promptly, so when it
is, it can exceed resync_max.
This happens when the reshape is 'frozen', resync_max is set low,
and reshape is re-enabled.

Taking a difference between two unsigned numbers is always dangerous
anyway, so add a test to behave correctly if
   curr_resync_completed > resync_max

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