[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