[dm-devel] [PATCH 0/6] dm: restrict conflicting table loads and improve queue initialization

Mike Snitzer snitzer at redhat.com
Mon May 24 17:24:49 UTC 2010


On Mon, May 24 2010 at  6:00am -0400,
Kiyoshi Ueda <k-ueda at ct.jp.nec.com> wrote:

> Hi Mike,
> 
> On 05/24/2010 06:44 AM +0900, Mike Snitzer wrote:

> > But this new series eliminates v7's locking between table_load() and
> > do_resume() -- fixed md->type made this possible.  So these changes
> > may be more desirable overall (adds some clearer exclusion and state
> > transitions that I feel help DM without being too restrictive).
> 
> Yes, I think it's reasonable.

OK.

> > This work has expanded in scope somewhat (based on Mikulas' suggestion
> > that I pursue more constrained table/device type switching to avoid
> > Kiyoshi's locking concerns).  A mapped_device now has a specific type
> > (md->type) that is managed in table_{load,clear} (see patch 3/6).
>  
> Cancelling the type by table_clear() keeps the code/model complex
> even after changing model.
> I think the feature to cancel the type is not required any userspace
> tools nor admins at least for now.  So dropping the feature and
> completely fixing the type at the first table loading time may be
> a good meeting point to make the kernel code simple.

I initially thought it best to keep table_clear() more "friendly".. so
as not to impose a user explicitly delete a DM device just to switch
from bio-based to request-based tables (or vice-versa).

But I think I've come full-circle:

- I'm not against imposing your suggestion (never reset md->type).
  Certainly keeps the DM code simpler! :)

- We don't know all existing userspace code -- people could be using
  DM's clear ioctl and we'd break their assumptions; but do we _really_
  care?  They'll adapt (they'd have to do a device delete, device
  create, table load).

> I had only a quick look, so I may find some more comments.  But I'd
> like to have more review after we reach an agreement about the basic
> implementation design above.

Yes, wish I had the restraint to avoid making dm_clear_md_type() work ;)

But pulling out that support will be easy and will also simplify other
code:
- will eliminate concern for "rq -> bio -> rq" in
  dm_init_request_based_queue()
- can remove dm_clear_request_based_queue()
- maybe more...

Thanks,
Mike




More information about the dm-devel mailing list