dm raid1: one kmirrord per mirror
authorHolger Smolinski <smolinski@de.ibm.com>
Wed, 9 May 2007 09:32:50 +0000 (02:32 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 9 May 2007 19:30:46 +0000 (12:30 -0700)
commit6ad36fe2b451cc85cc7b14f4128286759e217124
tree05e6111d39c969ee729309d6bded6bcfe08aa44e
parent8defab33774a5c33920196a2ee9c0a946d22ba67
dm raid1: one kmirrord per mirror

This patch replaces the single instance of kmirrord by one instance per mirror
set.  This change is required to avoid a deadlock in kmirrord when the
persistent dirty log of a mirror itself resides on a mirror.  The single
instance of kmirrord then issues a sync write to the dirty log in write_bits
which gets deferred to kmirrord itself later in the call chain.  But kmirrord
never does the deferred work because it is still waiting for the sync
write_bits.

_mirror_sets is removed as it no longer needed, and we always flush the
workqueue before destroying it to ensure all work is complete before
destroying it.

Signed-off-by: Holger Smolinski <smolinski@de.ibm.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/md/dm-raid1.c