md: fix possible raid1/raid10 deadlock on read error during resync
authorNeilBrown <neilb@suse.de>
Tue, 4 Mar 2008 22:29:35 +0000 (14:29 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 5 Mar 2008 00:35:18 +0000 (16:35 -0800)
commit1c830532f6b44d10a1743ccd00e990c6b83396f5
tree506c8fef4d84f54e76b533756cff86c45bb61746
parent8ed3a19563b6c05b7625649b1769ddb063d53253
md: fix possible raid1/raid10 deadlock on read error during resync

Thanks to K.Tanaka and the scsi fault injection framework, here is a fix for
another possible deadlock in raid1/raid10 error handing.

If a read request returns an error while a resync is happening and a resync
request is pending, the attempt to fix the error will block until the resync
progresses, and the resync will block until the read request completes.  Thus
a deadlock.

This patch fixes the problem.

Cc: "K.Tanaka" <k-tanaka@ce.jp.nec.com>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/md/raid1.c
drivers/md/raid10.c