All of lore.kernel.org
 help / color / mirror / Atom feed
* multipath breaks with recent udev/systemd
@ 2014-12-15  9:31 Hannes Reinecke
  2014-12-15 12:53 ` Alexander E. Patrakov
  2014-12-16 22:10 ` Benjamin Marzinski
  0 siblings, 2 replies; 9+ messages in thread
From: Hannes Reinecke @ 2014-12-15  9:31 UTC (permalink / raw)
  To: device-mapper development
  Cc: Benjamin Marzinski, Kay Sievers, systemd Mailing List,
	Mike Snitzer

Hi all,

in commit 3ebdb81ef088afd3b4c72b516beb5610f8c93a0d
(udev: serialize/synchronize block device event handling with file
locks) udev started using flock() on the device node, supposedly to
synchronize with an ominous 'block event handling'.

The code looks like this:

                  if (d) {
                        fd_lock = open(udev_device_get_devnode(d),
O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
                        if (fd_lock >= 0 && flock(fd_lock,
LOCK_SH|LOCK_NB) < 0) {
                             log_debug("Unable to flock(%s),
skipping event handling: %m", udev_device_get_devnode(d));
                             err = -EWOULDBLOCK;
                             goto skip;
                       }
                   }

However, multipath since several years is using a similar construct
to lock all devices belonging to a multipath device table before
creating a mulitpath dm-device:

	vector_foreach_slot (mpp->pg, pgp, i) {
		if (!pgp->paths)
			continue;
		vector_foreach_slot(pgp->paths, pp, j) {
			if (lock && flock(pp->fd, LOCK_SH | LOCK_NB) &&
			    errno == EWOULDBLOCK)
				goto fail;
			else if (!lock)
				flock(pp->fd, LOCK_UN);
		}
	}

So during bootup it's anyone's guess who's first, multipath or udev.
And depending on the timing either multipath will fail to setup
the device-mapper device or udev will simply ignore the device.
Neither of those is a good, but the first is an absolute killer for
modern systems which _rely_ on udev to configure devices.

So how it this supposed to work?
Why does udev ignore the entire event if it can't get the lock?
Shouldn't it rather be retried?
What is the supposed recovery here?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		               zSeries & Storage
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

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

end of thread, other threads:[~2014-12-19 15:16 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-15  9:31 multipath breaks with recent udev/systemd Hannes Reinecke
2014-12-15 12:53 ` Alexander E. Patrakov
2014-12-16 22:10 ` Benjamin Marzinski
2014-12-16 22:18   ` [dm-devel] " Benjamin Marzinski
2014-12-17 12:04     ` Hannes Reinecke
2014-12-18 20:18       ` Kay Sievers
2014-12-18 22:04       ` Benjamin Marzinski
2014-12-19  7:21         ` Hannes Reinecke
2014-12-19 15:16           ` 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.