On Thu, 2020-06-18 at 18:12 -0500, Benjamin Marzinski wrote: > On Thu, Jun 18, 2020 at 08:37:20PM +0000, Martin Wilck wrote: > > > > > -int dm_flush_maps (int retries) > > > +int dm_flush_maps (int need_suspend, int retries) > > > { > > > int r = 1; > > > struct dm_task *dmt; > > > @@ -1014,7 +1014,10 @@ int dm_flush_maps (int retries) > > > > > > r = 0; > > > do { > > > - r |= dm_suspend_and_flush_map(names->name, retries); > > > + if (need_suspend) > > > + r |= dm_suspend_and_flush_map(names->name, > > > retries); > > > + else > > > + r |= dm_flush_map(names->name); > > > > This is fine, but considering the previous discussion, I'd prefer > > to > > get rid of need_suspend and dm_suspend_and_flush_map() entirely. It > > would simplify the _dm_flush_map code path significantly. > > > > As we determined that we use the suspend/resume only in multipath > > anyway, we could add it there in the "non-delegated" code path. > > I'm confused. dm_flush_maps() is also called in the non-delegated > code > path, where it uses the dm_suspend_and_flush_map(). Are you proposing > an alternative version of dm_flush_maps() for multipath? No, just a different error handling in multipath. Instead of calling just calling dm_flush_maps() again from multipath with need_suspend=1, we could suspend / resume directly in the error path, and then call dm_flush_map again. Which would allow us to get rid of need_suspend, as no callers would set it any more. IOW, move the handling of this multipath-specific error situation out of libmultipath, into the multipath-specific code. Just an idea, I don't insist on it. Martin -- Dr. Martin Wilck <mwilck@xxxxxxxx>, Tel. +49 (0)911 74053 2107 SUSE Software Solutions Germany GmbH HRB 36809, AG Nürnberg GF: Felix Imendörffer -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel