All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] multipath: new and rebased patches
@ 2018-03-14 17:46 Benjamin Marzinski
  2018-03-14 17:46 ` [PATCH 01/12] Unit tests for basenamecpy Benjamin Marzinski
                   ` (12 more replies)
  0 siblings, 13 replies; 23+ messages in thread
From: Benjamin Marzinski @ 2018-03-14 17:46 UTC (permalink / raw)
  To: dm-devel; +Cc: Martin Wilck, christophe.varoqui

Patches 1-5 are minor bug fixes and a unit test for basenamecpy.

Patch 6 is revised version of my nanosleep patch, that only changes
the checkerloop code, since that is the only time when multipathd
actually sets an alarm without locking.

Patches 7-11 are a rebase of my "alternate dmevents waiter method"
patchset.  The only code that has changed outside of rebasing them is in
patch 11.  It adds a function, remove_map_by_alias(), and uses it in
dmevent_loop(). This simply moves the code the gets the multipath device
out of dmevents.c, so it can work exclusively in device names.  It also
changes the names of the functions the initialize and cleanup the
dmevents polling code to match similar multipathd functions and adds
a Makefile define to disable using the polling code, both suggested
by Martin Wilck.

Patch 12 is unit testing code for the new code in dmevents.c

Here is the description from my initial posting of the alternate dmevents
waiter method" patchset:

This patchset implements a new method of getting dmevents for
multipathd.

With the existing wait code, multipathd needs to create a waiter thread
for every multipath device. This can become very wasteful in setups with
large numbers of multipath devices. These duplicate threads all are
serialized to update the multipath devices, so they don't actually speed
up dmevent handling.

The new method uses the new dmevent polling ability introduced in the
4.37.0 device-mapper kernel module.  The original method has been
retained for backwards compatablility, and it is possible to force
multipathd to use the orignal method on newer kernels. The benefit of
this new method is that there is only one thread necessary to wait on
dmevents, which can be started when device-mapper starts, and stopped
during shutdown, just like the other main threads.

These patches use device-mapper features that don't have a libdevmapper
API.  They will switch over as soon as support is available in
libdevmapper.

Benjamin Marzinski (12):
  Unit tests for basenamecpy
  libmultipath: fix basenamecpy
  libmultipath: set dm_conf_verbosity
  multipathd: log thread cleanup
  libmultipath: fix log_pthread processing
  multipathd: use nanosleep for strict timing
  libmultipath: move remove_map waiter code to multipathd
  move waiter code from libmultipath to multipathd
  call start_waiter_thread() before setup_multipath()
  libmultipath: add helper functions
  multipathd: add new polling dmevents waiter thread
  multipath: add unit tests for dmevents code

 Makefile.inc               |   3 +
 libmultipath/Makefile      |   2 +-
 libmultipath/devmapper.c   |  29 +-
 libmultipath/devmapper.h   |   3 +-
 libmultipath/log_pthread.c |  40 +--
 libmultipath/log_pthread.h |  10 +-
 libmultipath/structs_vec.c | 140 +-------
 libmultipath/structs_vec.h |   8 +-
 libmultipath/util.c        |  25 +-
 libmultipath/util.h        |   2 +-
 libmultipath/vector.c      |  16 +-
 libmultipath/vector.h      |   1 +
 libmultipath/waiter.c      | 215 ------------
 libmultipath/waiter.h      |  17 -
 multipathd/Makefile        |   6 +-
 multipathd/dmevents.c      | 392 +++++++++++++++++++++
 multipathd/dmevents.h      |  13 +
 multipathd/main.c          | 230 ++++++++++--
 multipathd/waiter.c        | 215 ++++++++++++
 multipathd/waiter.h        |  17 +
 tests/Makefile             |   9 +-
 tests/dmevents.c           | 847 +++++++++++++++++++++++++++++++++++++++++++++
 tests/util.c               | 167 +++++++++
 23 files changed, 1944 insertions(+), 463 deletions(-)
 delete mode 100644 libmultipath/waiter.c
 delete mode 100644 libmultipath/waiter.h
 create mode 100644 multipathd/dmevents.c
 create mode 100644 multipathd/dmevents.h
 create mode 100644 multipathd/waiter.c
 create mode 100644 multipathd/waiter.h
 create mode 100644 tests/dmevents.c
 create mode 100644 tests/util.c

-- 
2.7.4

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2018-03-19 12:48 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-14 17:46 [PATCH 00/12] multipath: new and rebased patches Benjamin Marzinski
2018-03-14 17:46 ` [PATCH 01/12] Unit tests for basenamecpy Benjamin Marzinski
2018-03-19  9:49   ` Martin Wilck
2018-03-19 10:05     ` Martin Wilck
2018-03-14 17:46 ` [PATCH 02/12] libmultipath: fix basenamecpy Benjamin Marzinski
2018-03-14 17:46 ` [PATCH 03/12] libmultipath: set dm_conf_verbosity Benjamin Marzinski
2018-03-19 10:18   ` Martin Wilck
2018-03-14 17:46 ` [PATCH 04/12] multipathd: log thread cleanup Benjamin Marzinski
2018-03-19 10:20   ` Martin Wilck
2018-03-14 17:46 ` [PATCH 05/12] libmultipath: fix log_pthread processing Benjamin Marzinski
2018-03-19 10:22   ` Martin Wilck
2018-03-14 17:46 ` [PATCH 06/12] multipathd: use nanosleep for strict timing Benjamin Marzinski
2018-03-19 10:50   ` Martin Wilck
2018-03-14 17:46 ` [PATCH 07/12] libmultipath: move remove_map waiter code to multipathd Benjamin Marzinski
2018-03-19 10:57   ` Martin Wilck
2018-03-14 17:46 ` [PATCH 08/12] move waiter code from libmultipath " Benjamin Marzinski
2018-03-14 17:46 ` [PATCH 09/12] call start_waiter_thread() before setup_multipath() Benjamin Marzinski
2018-03-14 17:46 ` [PATCH 10/12] libmultipath: add helper functions Benjamin Marzinski
2018-03-14 17:46 ` [PATCH 11/12] multipathd: add new polling dmevents waiter thread Benjamin Marzinski
2018-03-19 12:48   ` Martin Wilck
2018-03-14 17:46 ` [PATCH 12/12] multipath: add unit tests for dmevents code Benjamin Marzinski
2018-03-19 12:01   ` Martin Wilck
2018-03-15 14:30 ` [PATCH 00/12] multipath: new and rebased patches Benjamin Marzinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.