Re: [PATCH 00/13] multipathd: More map reload handling, and checkerloop work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Dec 07, 2024 at 12:36:04AM +0100, Martin Wilck wrote:
> This patch set goes on top of Ben's set [1] for github issue 105 [2].
> 
> The first patch implements the remark I had on patch 2 on Ben's set.
> 
> Patch 2-4 add map reload logic for the case when update_pathvec_from_dm()
> detects an inconsistency: in this case, the map is now reloaded before
> the checkers are actually started. If the inconsistency can't be cleared,
> another attempt will be made when the checkers have finished.
> 
> Patch 5 ff. reshuffle the code in checkerloop(). There is now one function,
> checker_finished(), that takes all actions that need to be done with the vecs
> lock taken after the checkers have finished. checkerloop() enters this
> function immediately when the checkers have finished, without dropping and
> re-acquiring the vecs lock. The map reload logic is completely handled in this
> function.
> 
> The various _tick() functions don't loop over mpvec any more; they are now
> just called for a single mpp, and they simply return true if a map reload is
> required.  The actual reload action differs: if missing_uev_wait_tick()
> requests a reload, it needs to be a full update_map() (which calls
> adopt_paths()), whereas in the other cases, reload_and_sync_map() is sufficient.
> The last patch changes the reload action for the ghost delay tick.
> 
> Reviews & comments welcome.

For all the patches I haven't commented on:
Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx>

> 
> Regards
> Martin
> 
> [1] https://lore.kernel.org/dm-devel/20241205035638.1218953-1-bmarzins@xxxxxxxxxx/
> [2] https://github.com/opensvc/multipath-tools/issues/105
> 
> Martin Wilck (13):
>   multipathd: don't reload map in update_mpp_prio()
>   multipathd: remove dm_get_info() call from refresh_multipath()
>   multipathd: allow map removal in do_sync_mpp()
>   multipathd: reload maps in do_sync_mpp() if necessary
>   multipathd: move yielding for waiters to start of checkerloop
>   multipathd: add checker_finished()
>   multipathd: move "tick" calls into checker_finished()
>   multipathd: remove mpvec_garbage_collector()
>   multipathd: don't call reload_and_sync_map() from
>     deferred_failback_tick()
>   multipathd: move retry_count_tick() into existing mpvec loop
>   multipathd: don't call update_map() from missing_uev_wait_tick()
>   multipathd: don't call udpate_map() from ghost_delay_tick()
>   multipathd: only call reload_and_sync_map() when ghost delay expires
> 
>  multipathd/main.c | 295 +++++++++++++++++++---------------------------
>  1 file changed, 120 insertions(+), 175 deletions(-)
> 
> -- 
> 2.47.0





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux