md: fix possible corruption of array metadata on shutdown.
authorNeilBrown <neilb@suse.de>
Tue, 24 Apr 2012 00:23:16 +0000 (10:23 +1000)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 May 2012 12:13:59 +0000 (13:13 +0100)
commit31097a1c490c409385e28a64284bde16a4bfe76b
treee707192a36b09a78807792630ef5a1ae38a8dd5b
parent4f75fb8504bd41f9fbb455188b3e75f8d248737e
md: fix possible corruption of array metadata on shutdown.

commit 30b8aa9172dfeaac6d77897c67ee9f9fc574cdbb upstream.

commit c744a65c1e2d59acc54333ce8
  md: don't set md arrays to readonly on shutdown.

removed the possibility of a 'BUG' when data is written to an array
that has just been switched to read-only, but also introduced the
possibility that the array metadata could be corrupted.

If, when md_notify_reboot gets the mddev lock, the array is
in a state where it is assembled but hasn't been started (as can
happen if the personality module is not available, or in other unusual
situations), then incorrect metadata will be written out making it
impossible to re-assemble the array.

So only call __md_stop_writes() if the array has actually been
activated.

This patch is needed for any stable kernel which has had the above
commit applied.

Reported-by: Christoph Nelles <evilazrael@evilazrael.de>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/md/md.c