On Fri, Aug 26, 2022 at 08:05:51PM +0200, mwi...@suse.com wrote: > From: Martin Wilck <mwi...@suse.com>
For the set: Reviewed-by: Benjamin Marzinski <bmarz...@redhat.com> > > We observe that multipath operations take a long time if the multipaths > section in multipath.conf contains a lot of alias settings > (10000+ in our case). This hurts in particular in udev rules, when > multipath -u or multipath -U is invoked, but also for command line > invocations like "multipath -ll". > > This series provides a few optimizations for this use case. It speeds > up simple multipath operations in the test case by a factor of 20. > > Changes v3->v4: > > 02: more compilation fixes for msort.c to make it pass CI > (only re-posting this patch) > > Changes v2->v3, after discussion with Benjamin Marzinski: > > 01, 02: added msort.c from glibc and adapted to our needs. > Numbering changes accordingly. > 03, 04: (was 01, 02): remove pointer comparisons from v2 again, this was a > dumb idea. Use the stable msort algorithm instead. > > Changes wrt v1, after suggestions from Benjamin Marzinski: > > 01, 02: Use pointer comparisons to achieve stable sorting with qsort > 02: Fix return without popping the cleanup handler. The way I fixed this > leaves the possibility that some memory won't be freed if a thread is > killed while executing vector_convert(). I think this is acceptible; > avoiding it would complicate the code, with very small benefit. > 02: Remove unnecessary checks and break loop if alias==NULL is encountered. > > Martin Wilck (5): > libmultipath: add msort.c from glibc > libmultipath: modifications for msort.c > libmultipath: merge_mptable(): sort table by wwid > libmultipath: check_alias_settings(): pre-sort mptable by alias > multipath: optimize program startup for frequent invocations > > libmultipath/Makefile | 2 +- > libmultipath/alias.c | 37 +++++- > libmultipath/config.c | 15 ++- > libmultipath/msort.c | 271 ++++++++++++++++++++++++++++++++++++++++++ > libmultipath/msort.h | 6 + > libmultipath/vector.c | 9 ++ > libmultipath/vector.h | 1 + > multipath/main.c | 33 ++--- > 8 files changed, 352 insertions(+), 22 deletions(-) > create mode 100644 libmultipath/msort.c > create mode 100644 libmultipath/msort.h > > -- > 2.37.1 -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel