Message ID | 20240717181106.2173527-1-bmarzins@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | path checker refactor and misc fixes | expand |
On Wed, 2024-07-17 at 14:10 -0400, Benjamin Marzinski wrote: > This patchset is based on discussions I had with Martin Wilck about > my > last, partially applied patchset. It's based on top of his mwilck-tip > branch, 4ef98926 "fixup! Makefile: add targets for test-progs.cpio > and > test-progs.tar". These patches are mostly orthogonal to the > libmp_mapinfo() work. I'll rebase them if further changes to that > patchset stop them form applying cleanly. > > The first two patches are reposts of patches from my earlier > patchset, > redone to work with the new libmp_mapinfo() API. They make it > possible > to add maps by WWID with "multipathd add map". > > The rest of the patches are work and bugfixes related to refactoring > checkerloop so that > > 1. multipath devices get resynced with the kernel occasionally, even > if > they have not paths > > 2. If multiple paths from a multipath device are checked in the same > loop, the multipath device will only get resynced once. > > 3. All the paths of a multipath device will converge to being checked > at > the same time (at least as much as their differing checkint values > will > allow). > > 4. The times for checking the paths of each multipath device will > spread > out as much as possible so multipathd doesn't do all of it's checking > in > a burst. > > 5. path checking is done my multipath device (for initialized paths, > the uninitialized paths are handled after all the adopted paths are > handled). > > Items 1 & 2 are handled by patch 10 and preceding patches. > > Items 3 & 4 and handled by patch 17 and preceding patches. > > Item 5 is handled by patch 18 and 19. > > Changes in v2 (old patch number in quotes): > 01: change from returning minor number to dm info (Martin) > 02: adapt to change in patch 01 > 05 (05-07): squash into one commit (Martin) > 08 (10): fix commit message (Matin) > 10 (12): rename do_check_mpp amd check_mpp > 11 (13): move the code that saved the path name to right before it > was > removed (Martin) > 14 (16): use symbolic return codes (Martin) > 15 (17): set path state to PATH_UNCHECKED when orphaned, and skip > paths > in INIT_REMOVED in sync_map_state() (Martin) > 17 (19): clear pp->pending_ticks in check_path() if the path is > delayed > instead of pending. Use a different equation to check if we > need to modify the ticks, that can adjust the ticks on every > check. adapt to change in patch 14 > 18 (20): adapt to change in patch 14 > 19 (21): adapt to change in patch 10 and 14 > 20 (22): Add fixes trailer > > Benjamin Marzinski (20): > libmultipath: rename dm_map_present_by_wwid() and add outputs > multipathd: make cli_add_map() handle adding maps by WWID correctly > multipathd: remove checker restart optimization > multipathd: refactor path state getting code into a helper > multipathd: handle uninitialized paths in new function > multipathd: check paths immediately after failing udev > initialization > multipathd: set pp->tick = max_checkint in > handle_uninitialized_path > multipathd: return 0 from check_path() if that path wasn't checked > multipathd: reorder path state checks > multipathd: adjust when mpp is synced with the kernel > multipathd: resync map after setup_map in ev_remove_path > multipathd: resync map after setup_map in resize_map > multipathd: always resync map in reload_and_sync_map > multipathd: correctly handle paths removed for a wwid change > multipathd: handle changed wwid when adding partial path > multipathd: don't read conf->checkint twice in check_path > multipathd: make multipath devices manage their path check times > multipathd: factor out actual path checking loop from checkerloop > multipathd: check paths in order by mpp > multipathd: clean up the correct wwid in check_path_wwid_change > > libmultipath/config.c | 12 + > libmultipath/config.h | 1 + > libmultipath/configure.c | 1 + > libmultipath/devmapper.c | 5 +- > libmultipath/devmapper.h | 2 +- > libmultipath/libmultipath.version | 5 + > libmultipath/structs.c | 2 + > libmultipath/structs.h | 3 + > libmultipath/structs_vec.c | 9 +- > libmultipath/valid.c | 2 +- > multipathd/cli_handlers.c | 66 ++-- > multipathd/main.c | 582 +++++++++++++++++++--------- > -- > multipathd/main.h | 2 +- > tests/valid.c | 13 +- > 14 files changed, 432 insertions(+), 273 deletions(-) > For the series, except 17/20: Reviewed-by: Martin Wilck <mwilck@suse.com>