[dm-devel] [PATCH 16/19] libmultipath: coalesce_paths: fix size mismatch handling

Martin Wilck mwilck at suse.com
Mon Dec 3 10:34:25 UTC 2018


On Thu, 2018-11-29 at 14:53 -0600,  Benjamin Marzinski  wrote:
> On Wed, Nov 21, 2018 at 11:18:36AM +0100, Martin Wilck wrote:
> > When there are paths with the same WWID but different sizes, and
> > coalesce_paths() walks the pathvec, it checks paths _after_
> > the current one for size mismatch and sets ACT_REJECT. However,
> > these paths will be reached in the main loop later, and this time
> > the already handled paths will not be checked for size mismatch;
> > thus a map could be created, possibly even with mismatching
> > devices.
> > 
> > Fix that by tracking which paths were already discarded, and
> > skipping them in the main loop later.
> 
> Previously, multipath would retry if coalesce_paths returned
> DOMAP_RETRY. With this patch, DOMAP_RETRY isn't returned, so that no
> longer happens. Is this intentional?

No, it was an oversight. Thanks for spotting it. Note: it's only
relevant for the case where lock_multipath() fails, which should hardly
ever happen any more since we are using shared locks (5ec07b3).
Whether we still need lock_multipath() is an open question. I
personally think we don't.

> 
> Also, I would prefer if coalesce_paths always used named constants
> for
> the return values, instead of converting them to numbers.

OK, I'll send an extra patch for that.

Martin

-- 
Dr. Martin Wilck <mwilck at suse.com>, Tel. +49 (0)911 74053 2107
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)





More information about the dm-devel mailing list