[dm-devel] [PATCH 1/1] dm-mpath: Extend path selectorinterface for supporting Dell EqualLogic path selector

Jason Shamberger Jason_Shamberger at Dell.com
Wed Jul 14 21:34:18 UTC 2010


Thanks, all, for the feedback.

We will update our proposed patch to pass individual parameters to the
path
selector instead of the entire struct request *, so it is compatible
with 
either request-based or bio-based usage.  I do feel it makes sense to
define
a struct that will be passed through, now that we have more than just 
nr_bytes.  Mike, you have a  good point about not using a union, this
has 
been removed.

> What other inputs - in addition to offset - will the path selector
need to take
> into account to make its decision and how will it get those inputs?
> Presumably you envisage some sort of semi-static or cached
information,
> and not asking the hardware before every piece of I/O?
 
The additional parameters we would like to pass to the path selectors
are:
-	Start address
-	Whether the IO is a read or write.  This will be stored in a
flags 
field.
-	Timestamp of when the IO started, so the path selector can
calculate 
the latency in end_io()

We understand the full path selector code is necessary before this patch

can be accepted, and will post it in the near future.

> How many ranges are there likely to be in this offset-based routing
table?
> How frequently is the offset-based routing table likely to change?

> As Hannes points out, the dm table layer is already designed to handle
> offset-based routing, so I'll need some convincing there's a need to
duplicate
> part of this inside path selectors.
 
> If this information is rapidly changing - many reconfigurations per
minute,
> then we may need to consider some in-kernel solution.  Otherwise I'll
be
> seeking solutions performing the reconfiguration from userspace first.

We agree with doing much of the work in userspace, such as reading the 
information from the storage array.  The routing table can change at any

time, but is not likely to be changing frequently, so a userspace
solution 
is adequate.  This information will be cached on the host so only a
quick 
lookup is necessary in the IO path.

There are many ranges in our routing table - when we spread data across
the 
arrays in our group, each range is typically only 10s of MB, so it is
typical 
to have thousands of these ranges per LUN. 

Our initial design was to use a single entry in the dm table and a path 
selector that routed amongst paths based on the additional info proposed
above.
Based on Alasdair's and Hannes' feedback we have done some
experimentation 
with the dm table layer offset based routing and it seems a viable
alternative, 
but we hit a couple of problems.  In the current kernel the DM is
rejecting our 
table - the multipath target is request based, and it seems the request
based 
dm only supports tables that have a single target.  We have also tested
on an 
older kernel that uses a bio-based dm-multipath, and are able to load a
table 
with dmsetup.  However, we seem to be bumping into a scalability limit
when 
the table exceeds a few thousand lines.

Thanks,
Jason





More information about the dm-devel mailing list