md: fix clearing of the 'changed' flags for the bad blocks list.
authorNeilBrown <neilb@suse.de>
Mon, 19 Mar 2012 01:46:41 +0000 (12:46 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Apr 2012 17:31:56 +0000 (10:31 -0700)
commit9a4d77ce349485b9a9c2aa52265917ce4328789d
treefc4c4f871e4f0011f7a9b2dd82c09767eb5e0b49
parent8d79f898e169e1ef01cec78234ee48f0dd7dfb1e
md: fix clearing of the 'changed' flags for the bad blocks list.

commit d0962936bff659d20522555b517582a2715fd23f upstream.

In super_1_sync (the first hunk) we need to clear 'changed' before
checking read_seqretry(), otherwise we might race with other code
adding a bad block and so won't retry later.

In md_update_sb (the second hunk), in the case where there is no
metadata (neither persistent nor external), we treat any bad blocks as
an error.  However we need to clear the 'changed' flag before calling
md_ack_all_badblocks, else it won't do anything.

This patch is suitable for -stable release 3.0 and later.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/md.c