[dm-devel] [PATCH 00/78] SUSE SLES resync

Christophe Varoqui christophe.varoqui at opensvc.com
Sun Mar 29 16:28:24 UTC 2015


Hi,

This patchset is merged up to 75734af37267100778468319813cecc050befb1a
: multipathd: push down lock in checkerloop().

Ben,
incidentally the find_multipath patches are in.

Best regards,
Christophe Varoqui


On Mon, Mar 16, 2015 at 1:35 PM, Hannes Reinecke <hare at suse.de> wrote:

> Hi Christophe,
>
> here are the patches which I've queued up during SLES12 development.
> Most of them are (more or less) obvious bugfixes, but there are some
> things which would warrant a deeper review:
> - device-mapper cookie handling: This _really_ is an arcane topic,
>   and I would love to have someone from the device-mapper team
>   to review it. I'm still facing some issues where udev emits
>   a warning 'conflicting device node /dev/mapper/XXX ..', so
>   there might be some issue with it.
> - Asynchronous configuration: On large systems configure() as
>   being called during multipathd startup might exceed the systemd
>   job timeout, resulting in multipathd being killed by systemd.
>   For that I've been implementing an udev retrigger method, which
>   just issues an 'add' event for all available block devices.
> - Related to the above: I've implemented an asynchronous 'reconfigure'
>   CLI call, as for the same reason systemd might kill the multipathd
>   during a 'restart' operation
> - systemd/udev integration: This is _a pain_. It took me months to
>   come up with a working solution. _Especially_ as apparently RH
>   is shipping an '11-dm-multipath.rules' udev ruleset for multipathd,
>   which supposedly should be handling this.
>   It didn't do it for me, though, so I've attached my own version here.
>   The udev integration I've been settling for works like this:
>   - 11-dm-mpath.rules checks if the device is eligible for multipathing
>     For that I've implemented a new option '-u' which looks at the
>     uevent variables _only_.
>   - if a device should be handled by multipathing the 'by-id' and
>     'by-uuid' persistent symlinks are _not_ generated, as this would
>     trigger systemd to start scanning/mounting/lvm activation/whatnot;
>     the 'by-id' and 'by-uuid' symlinks are only generated for the
>     multipath devices themselves.
>   - I've added a new multipath.rules file which should be inserted between
>     55-scsi-sg3_id.rules and 58-scsi_sg3_symlink.rules. This will
>     intercept the SCSI IDENT variables and blank them out if the (block)
>     device is handled by multipathing.
> - sysfs VPD page handling. I've planned to implement this as a direct
>   replacement of the original scsi_id program, but then it turned out
>   that our WWID handling is actually too generic for that: Both getuid
>   and uid_attribute can basically take _any_ value, so it's impossible
>   to tell if the system uses the original (scsi_id compatible) IDs or
>   not. And as the VPD parsing code can only generate scsi_id compatible
>   IDs we might run into compability issues.
>   So it's disabled per default. I'd really would like to clean it up,
>   as I suspect that about 95% of the installations are using scsi_id
>   compatible IDs. But for this to happen we need to clarify/restrict
>   the ID generation mechanism.
>
> As usual, comments and reviews are welcome.
>
> The patchset is based upon the 'find_multipaths' patchset from
> Ben Marzinski; it can be retrieved from
>
> github.com:/hreinecke/multipath-tools.git branch suse-resync
>
> Cheers,
>
> Hannes
>
> Hannes Reinecke (78):
>   libmultipath: remove compilation warning in devmapper.c
>   mpath_persist: Do not call exit() from a shared library
>   libmultipath: filter for missing property in get_refwwid()
>   Double uevent stacksize yet again
>   discovery: do not fail discovery on individual devices
>   libmultipath: Prefer deprecated 'getuid' callout
>   libmultipath: Skip paths with empty wwid
>   Make systemd installation path configurable
>   Add multipath rules for systemd support
>   Fixup multipathd.socket to resolve ordering dependeny
>   Fixup dependencies in multipathd.service
>   multipathd: set correct PID when running in debug mode
>   Do not print empty device strings during discovery
>   kpartx.rules: do not call blkid
>   Use 'SCSI_IDENT_.*' as the default property whitelist
>   Fixup wwid blacklist printing
>   Allow for empty path argument when printing information
>   Disable reassign maps per default
>   multipathd: implement 'list path <path>' cli command
>   Make checker_put() and prio_put() idempotent
>   Remove trailing linefeed from sysfs attributes
>   multipath: implement option '-u' for uevents
>   Install multipath rule under '56-multipath.rules'
>   multipath.rules: Whitelist devices
>   multipath.rules: fixup race condition with systemd
>   11-dm-mpath.rules: Import blkid values if all paths are down
>   kpartx.rules: Skip kpartx for multipath events
>   multipathd: handle DOMAP_RETRY
>   multipathd: cleanup foreground operation
>   Update hwtable for EMC XtremIO
>   multipath: check for running daemon when called with '-u'
>   Revert 'return PATH_DOWN for quiesced paths'
>   Do not treat 'transport-offline' paths as 'offline'
>   Check for valid DM_DEVICE_INFO before proceeding
>   Separate out uevent parsing functions
>   Use poll() when receiving uevents
>   mpath_persist: cleanup
>   kpartx: use standard 'major' and 'minor' macros
>   multipath: Use standard 'major' macro
>   Remove sysfs_get_dev
>   Add paths with a size of '0' as 'ghost' paths
>   Remove last argument from verify_paths()
>   Fixup device-mapper 'cookie' handling
>   multipath: do not print state 'orphan' for option '-l'
>   Return error when receiving CLI packet
>   Implement 'uxsock_timeout' keyword
>   Do not print empty multipaths section
>   multipathd: reload map if reinstate failed
>   multipathd: do not remove paths without uevents
>   Allow zero-sized devices during configuration
>   Rework uev_add_path()
>   multipathd: Issue warning on CLI command timeout
>   Use strlen() when checking for valid wwid
>   multipathd: Use standard lists for CLI handling
>   uxlsnr: use typedef for trigger function
>   multipathd: lock cli client list
>   multipath: enable sync support
>   Remove dm_udev_XXX wrapper functions
>   Revert to ACT_RELOAD in domap if the map exists
>   multipathd: use local variable for watchdog configuration
>   Ignore devices when sysfs_get_tgt_nodename fails
>   Skip USB devices during discovery
>   Read wwid from sysfs vpg_pg83 attribute
>   Assign local priority for NAA VPD descriptor
>   Use sysfs attribute vpd_pg80 to read serial number
>   Update multipath.conf.5 to clarify wwid generation
>   libmultipath: Fall back to SG_IO if no UID could be assigned
>   libmultipath: unset 'uid_attribute' on failure
>   Separate out vpd parsing functions
>   multipathd: use SG_IO as fallback to generate uid
>   Do not automatically fall back to vpd uid generation
>   libmultipath: make vpd page 0x80 optional
>   multipathd: push down lock in checkerloop()
>   Allow specific CLI commands to run unlocked
>   Push down vector lock during uevent processing
>   multipathd: timeout CLI commands when waiting for lock
>   multipathd: asynchronous configuration
>   multipathd: trigger all devices on startup
>
>  Makefile.inc                     |   8 +-
>  kpartx/devmapper.c               |  53 +++-
>  kpartx/devmapper.h               |  11 +-
>  kpartx/kpartx.c                  |  35 +--
>  kpartx/kpartx.rules              |  10 +-
>  libmpathpersist/mpath_persist.c  | 172 ++++++-----
>  libmpathpersist/mpath_updatepr.c |  20 +-
>  libmpathpersist/mpathpr.h        |   3 +-
>  libmultipath/blacklist.c         |   8 +-
>  libmultipath/blacklist.h         |   2 +-
>  libmultipath/checkers.c          |   2 +-
>  libmultipath/config.c            |   2 +
>  libmultipath/config.h            |   8 +-
>  libmultipath/configure.c         |  82 ++++--
>  libmultipath/defaults.h          |   4 +-
>  libmultipath/devmapper.c         |  77 +++--
>  libmultipath/devmapper.h         |   4 +-
>  libmultipath/dict.c              |  33 +++
>  libmultipath/discovery.c         | 613
> ++++++++++++++++++++++++++++++++++-----
>  libmultipath/discovery.h         |   8 +-
>  libmultipath/hwtable.c           |  13 +
>  libmultipath/list.h              |  49 +++-
>  libmultipath/lock.h              |   4 +-
>  libmultipath/log_pthread.c       |   2 +-
>  libmultipath/print.c             |  20 +-
>  libmultipath/prio.c              |   4 +-
>  libmultipath/propsel.c           |   6 +-
>  libmultipath/structs_vec.c       |  29 +-
>  libmultipath/structs_vec.h       |   2 +-
>  libmultipath/sysfs.c             |  53 ++++
>  libmultipath/sysfs.h             |   2 +
>  libmultipath/uevent.c            | 316 ++++++++++++--------
>  libmultipath/uxsock.c            |  32 +-
>  libmultipath/uxsock.h            |   4 +-
>  multipath.conf.defaults          |   2 +-
>  multipath/11-dm-mpath.rules      |   8 +-
>  multipath/Makefile               |   2 +
>  multipath/dev_t.h                |   3 -
>  multipath/main.c                 |  53 +++-
>  multipath/multipath.8            |   6 +-
>  multipath/multipath.conf.5       |  42 ++-
>  multipath/multipath.rules        |  14 +
>  multipathd/cli.c                 |  47 ++-
>  multipathd/cli.h                 |   4 +-
>  multipathd/cli_handlers.c        |  64 +++-
>  multipathd/cli_handlers.h        |   1 +
>  multipathd/main.c                | 400 ++++++++++++++++---------
>  multipathd/main.h                |   2 +
>  multipathd/multipathd.service    |   4 +-
>  multipathd/multipathd.socket     |   8 +-
>  multipathd/uxclnt.c              |  26 +-
>  multipathd/uxclnt.h              |   2 +-
>  multipathd/uxlsnr.c              | 102 +++++--
>  multipathd/uxlsnr.h              |   8 +-
>  54 files changed, 1834 insertions(+), 655 deletions(-)
>  delete mode 100644 multipath/dev_t.h
>  create mode 100644 multipath/multipath.rules
>
> --
> 1.8.4.5
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20150329/09226ea7/attachment.htm>


More information about the dm-devel mailing list