[dm-devel] Re: panic in dm_pg_init_complete+0x10
Alasdair G Kergon
agk at redhat.com
Thu Mar 10 16:29:13 UTC 2005
On Tue, Mar 08, 2005 at 04:23:59PM -0500, goggin, edward wrote:
> Looks to me like two issues here -- (1) probably should not allow
> concurrent pg_init i/os for the same multipath and
Some statements that the code should be checked against.
Only one pg_init can happen at once.
- enforced by pg_init_required only getting set to 1 in one place,
then set to 0 when the init is issued.
- BUG? it looks possible for __switch_pg to get called
while there's still a pg_init outstanding.
Suspend cannot complete until there is no I/O outstanding, including
any pg_init I/O.
- queueing is disabled while suspended
- the last I/O through cannot complete with an error until the last
path has failed, which can't happen until the pg_init for its PG
has completed.
multipath_dtr can only be called when there is no I/O in-flight
- dm_swap_table checks the device is suspended before calling __unbind
- BUG? dm_put only calls pre/post suspend but fails to wait for I/O to clear
Alasdair
--
agk at redhat.com
More information about the dm-devel
mailing list