Skip to contentSkip to conversation

udev 215 creates inactive MD devices upon stopping them

DISCUSSION Sebastian Parschauer 3 participants 4 messages Jul 24, 2014 MD RAID

lore
Share & tools
lore
#0 lore raw

Hi,

as discussed on linux-raid, please fix the bug that udev 215 creates inactive MD devices upon stopping them.

Reference: http://www.spinics.net/lists/raid/msg46676.html

An open() call to /dev/mdX after creating it with mknod is enough to create such inactive MD device.

According to Artur the issue is caused by this change in udev:

Quoted 11 lines

commit 3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

Author: Kay Sievers <kay at vrfy.org>
Date:   Sun Apr 13 19:54:27 2014 -0700

udev: serialize/synchronize block device event handling with file locks

http://cgit.freedesktop.org/systemd/systemd/commit/?id>bdb81ef088afd3b4c72b516beb5610f8c93a0d

It seems that they have already disabled this for dm for some reason, but not for md:

Quoted 8 lines

commit e918a1b5a94f270186dca59156354acd2a596494

Author: Kay Sievers <[email protected]>
Date:   Tue Jun 3 16:49:38 2014 +0200

udev: exclude device-mapper from block device ownership event locking

http://cgit.freedesktop.org/systemd/systemd/commit/?idé18a1b5a94f270186dca59156354acd2a596494

Thanks,
Sebastian

#1 lore raw

[resending to the correct mailing list]

Hi,

as discussed on linux-raid, please fix the bug that udev 215 creates inactive MD devices upon stopping them.

Reference: http://www.spinics.net/lists/raid/msg46676.html

An open() call to /dev/mdX after creating it with mknod is enough to create such inactive MD device.

According to Artur the issue is caused by this change in udev:

Quoted 11 lines

commit 3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

Author: Kay Sievers <kay at vrfy.org>
Date:   Sun Apr 13 19:54:27 2014 -0700

udev: serialize/synchronize block device event handling with file locks

http://cgit.freedesktop.org/systemd/systemd/commit/?id=3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

It seems that they have already disabled this for dm for some reason, but not for md:

Quoted 8 lines

commit e918a1b5a94f270186dca59156354acd2a596494

Author: Kay Sievers <[email protected]>
Date:   Tue Jun 3 16:49:38 2014 +0200

udev: exclude device-mapper from block device ownership event locking

http://cgit.freedesktop.org/systemd/systemd/commit/?id=e918a1b5a94f270186dca59156354acd2a596494

Thanks,
Sebastian

#2 lore raw
Quoted 29 lines · Sebastian Parschauer

as discussed on linux-raid, please fix the bug that udev 215 creates inactive MD devices upon stopping them.

Reference: http://www.spinics.net/lists/raid/msg46676.html

An open() call to /dev/mdX after creating it with mknod is enough to create such inactive MD device.

According to Artur the issue is caused by this change in udev:

Quoted 18 lines

commit 3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

Author: Kay Sievers <kay at vrfy.org>
Date:   Sun Apr 13 19:54:27 2014 -0700

udev: serialize/synchronize block device event handling with file locks

http://cgit.freedesktop.org/systemd/systemd/commit/?id=3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

It seems that they have already disabled this for dm for some reason, but not for md:

commit e918a1b5a94f270186dca59156354acd2a596494

Author: Kay Sievers <[email protected]>
Date:   Tue Jun 3 16:49:38 2014 +0200

udev: exclude device-mapper from block device ownership event locking

http://cgit.freedesktop.org/systemd/systemd/commit/?id=e918a1b5a94f270186dca59156354acd2a596494

MD devices are excluded now from the locking logic, like dm devices already are.

Instantiation of devices at open() is incompatible with udev's locking logic. That feature is not useful on most systems today, mknod() should never be done by any tools, only by the kernel itself. It should probably be disabled by default.

(The locking scheme is used to support partitioning programs, to make sure udev will not interfere with the partitioning tool while it creates/removes partitions. As long as an exclusive lock is held on the disk device node, all udev events are suppressed, the close() of the disk which war opened for writing will re-read the partition table and synthesize all suppressed udev events for the partitions again.)

Thanks,
Kay

#3 lore raw
Quoted 31 lines · On Thu, 24 Jul 2014 23:53:30 +0200 Kay Sievers <[email protected]> wrote:
Quoted 28 lines · Sebastian Parschauer

as discussed on linux-raid, please fix the bug that udev 215 creates inactive MD devices upon stopping them.

Reference: http://www.spinics.net/lists/raid/msg46676.html

An open() call to /dev/mdX after creating it with mknod is enough to create such inactive MD device.

According to Artur the issue is caused by this change in udev:

Quoted 17 lines

commit 3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

Author: Kay Sievers <kay at vrfy.org>
Date:   Sun Apr 13 19:54:27 2014 -0700

udev: serialize/synchronize block device event handling with file locks

http://cgit.freedesktop.org/systemd/systemd/commit/?id=3ebdb81ef088afd3b4c72b516beb5610f8c93a0d

It seems that they have already disabled this for dm for some reason, but not for md:

commit e918a1b5a94f270186dca59156354acd2a596494

Author: Kay Sievers <[email protected]>
Date:   Tue Jun 3 16:49:38 2014 +0200

udev: exclude device-mapper from block device ownership event locking

Quoted 8 lines
Quoted 1 line
Quoted 1 line

http://cgit.freedesktop.org/systemd/systemd/commit/?id=e918a1b5a94f270186dca59156354acd2a596494

MD devices are excluded now from the locking logic, like dm devices already are.

Instantiation of devices at open() is incompatible with udev's locking logic. That feature is not useful on most systems today, mknod() should never be done by any tools, only by the kernel itself. It should probably be disabled by default.

I agree that instantiating on open is an unfortunate design, but it has been around for a long time so we cannot just ignore it or turn it off. I have a new approach to creating md device which we might eventually be able to transition too, and then maybe deprecate the old way.
In the mean time, thanks for teaching udev to put up with md's peculiarities.

NeilBrown

Quoted 8 lines

(The locking scheme is used to support partitioning programs, to make sure udev will not interfere with the partitioning tool while it creates/removes partitions. As long as an exclusive lock is held on the disk device node, all udev events are suppressed, the close() of the disk which war opened for writing will re-read the partition table and synthesize all suppressed udev events for the partitions again.)

Quoted 6 lines

Thanks,
Kay
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel