]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
md: Don't acknowlege that stripe-expand is complete until it really is.
authorNeil Brown <neilb@notabene.brown>
Thu, 3 Jul 2008 02:45:35 +0000 (02:45 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 24 Jul 2008 16:14:03 +0000 (09:14 -0700)
commite116ec2ae0acf03d52459afeed259a449112b2b2
tree38eb8eca81dd99d8030289fd6f26adf24e92d541
parent583fe2db21978453aa522f56320f15b2de0d9d88
md: Don't acknowlege that stripe-expand is complete until it really is.

commit efe311431869b40d67911820a309f9a1a41306f3 upstream

We shouldn't acknowledge that a stripe has been expanded (When
reshaping a raid5 by adding a device) until the moved data has
actually been written out.  However we are currently
acknowledging (by calling md_done_sync) when the POST_XOR
is complete and before the write.

So track in s.locked whether there are pending writes, and don't
call md_done_sync yet if there are.

Note: we all set R5_LOCKED on devices which are are about to
read from.  This probably isn't technically necessary, but is
usually done when writing a block, and justifies the use of
s.locked here.

This bug can lead to a crash if an array is stopped while an reshape
is in progress.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/md/raid5.c