[dm-devel] [patch] dm-mpath pg_init could race with destructor

Lars Marowsky-Bree lmb at suse.de
Wed Jun 15 22:31:30 UTC 2005


On 2005-06-15T13:21:34, Mike Christie <michaelc at cs.wisc.edu> wrote:

> >Why send a pg_init request at this point if there are no queued ios?
> >This was in fact my solution, to only send a pg_init io if there are
> >queued ios.
> >
> Are there management situations where some admin wants to manually 
> switch. If he was going to take a controller temporarily offline for 
> maitnenance for example? Will multipath tools and dm-mutlipath be used 
> to do this type of management, or will it be some vendor specific tool 
> that sends a SG_IO directly?

I don't think that's a real problem. We will switch the group, but just
on the first IO.

That had already happened anyway (because otherwise no
process_queued_ios() would have been queued). The only place where this
really makes a difference is the queue_work() in presuspend: here, a
process_queued_ios() would be qeueued even if no IO was pending, which
could lead to a pg_init being issued, and then the object being free'd -
bang.

> It would not be possible to just have dm-multipath increment some 
> refcount like pending so you cannot destroy things while a pg_init IO is 
> in flight would it?

See my other mails.

The problem is indeed that the DM multipath's internal operations are
not accounted for in the top-level struct mapped_device pending field.
However, trying to get at that from within dm-mpath.c is non-trivial and
a major conceptual change, it appears.

It's sort-of related to "try to give a sane log message from within
dm-mpath, which actually mentions the map / dm dev we belong to".  The
trigger_event() "fix" is also very much related.

The layering is pretty well isolated, which is good, but can make such
changes difficult.

Long-term, that fix will be needed: DM personalities need to be more
involved in their reference counting. 


Sincerely,
    Lars Marowsky-Brée <lmb at suse.de>

-- 
High Availability & Clustering
SUSE Labs, Research and Development
SUSE LINUX Products GmbH - A Novell Business	 -- Charles Darwin
"Ignorance more frequently begets confidence than does knowledge"




More information about the dm-devel mailing list