Dr. Werner Fink 2014-07-25 10:06:14 +00:00 committed by Git OBS Bridge
parent 886c509951
commit 82165257f6
5 changed files with 101 additions and 0 deletions

View File

@ -0,0 +1,53 @@
From 2e5b17d01347d3c3118be2b8ad63d20415dbb1f0 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay@vrfy.org>
Date: Thu, 24 Jul 2014 23:37:35 +0200
Subject: [PATCH] udev: exclude MD from block device ownership event locking
MD instantiates devices at open(). This is incomptible with the
locking logic, as the "change" event emitted when stopping a
device will bring it back.
---
src/udev/udevd.c | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git src/udev/udevd.c src/udev/udevd.c
index a45d324..db935d6 100644
--- src/udev/udevd.c
+++ src/udev/udevd.c
@@ -285,26 +285,17 @@ static void worker_new(struct event *event)
udev_event->exec_delay = exec_delay;
/*
- * Take a "read lock" on the device node; this establishes
+ * Take a shared lock on the device node; this establishes
* a concept of device "ownership" to serialize device
- * access. External processes holding a "write lock" will
+ * access. External processes holding an exclusive lock will
* cause udev to skip the event handling; in the case udev
- * acquired the lock, the external process will block until
+ * acquired the lock, the external process can block until
* udev has finished its event handling.
*/
-
- /*
- * <kabi_> since we make check - device seems unused - we try
- * ioctl to deactivate - and device is found to be opened
- * <kay> sure, you try to take a write lock
- * <kay> if you get it udev is out
- * <kay> if you can't get it, udev is busy
- * <kabi_> we cannot deactivate openned device (as it is in-use)
- * <kay> maybe we should just exclude dm from that thing entirely
- * <kabi_> IMHO this sounds like a good plan for this moment
- */
- if (streq_ptr("block", udev_device_get_subsystem(dev)) &&
- !startswith(udev_device_get_sysname(dev), "dm-")) {
+ if (!streq_ptr(udev_device_get_action(dev), "remove") &&
+ streq_ptr("block", udev_device_get_subsystem(dev)) &&
+ !startswith(udev_device_get_sysname(dev), "dm-") &&
+ !startswith(udev_device_get_sysname(dev), "md")) {
struct udev_device *d = dev;
if (streq_ptr("partition", udev_device_get_devtype(d)))
--
1.7.9.2

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Fri Jul 25 09:37:56 UTC 2014 - werner@suse.de
- Add upstream patch
1054-udev-exclude-MD-from-block-device-ownership-event-lo.patch
- Add with condition blkrrpart to be able to disable the patches
1025, 1027, 1029, 1030, 1031, 1032, 1033, 1034, 1037, and 1054
which uses the BLKRRPART ioctl for e.g. synthesize change events
which may interfere with other tools like parted.
-------------------------------------------------------------------
Thu Jul 24 13:05:42 UTC 2014 - fcrozat@suse.com

View File

@ -33,6 +33,7 @@
%endif
%bcond_with udevsettle
%bcond_with permission
%bcond_without blkrrpart
Name: systemd-mini
Url: http://www.freedesktop.org/wiki/Software/systemd
@ -835,6 +836,8 @@ Patch1051: 1051-check-if-NAME-has-a-value.patch
Patch1052: 1052-rules-uaccess-add-ID_SOFTWARE_RADIO.patch
# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178)
Patch1053: 1053-better-checks-in-write_net_rules.patch
# PATCH-FIX-SUSE 0001-udev-exclude-MD-from-block-device-ownership-event-lo.patch
Patch1054: 1054-udev-exclude-MD-from-block-device-ownership-event-lo.patch
%description
Systemd is a system and service manager, compatible with SysV and LSB
@ -1374,19 +1377,27 @@ cp %{SOURCE7} m4/
%endif
%patch1023 -p0
%patch1024 -p0
%if %{with blkrrpart}
%patch1025 -p1
%endif
%patch1026 -p1
%if %{with blkrrpart}
%patch1027 -p1
%endif
%patch1028 -p1
%if %{with blkrrpart}
%patch1029 -p1
%patch1030 -p1
%patch1031 -p1
%patch1032 -p1
%patch1033 -p1
%patch1034 -p1
%endif
%patch1035 -p1
%patch1036 -p1
%if %{with blkrrpart}
%patch1037 -p1
%endif
%patch1038 -p0
%if %{with udevsettle}
%patch1039 -p0
@ -1407,6 +1418,9 @@ cp %{SOURCE7} m4/
%patch1051 -p1
%patch1052 -p0
%patch1053 -p1
%if %{with blkrrpart}
%patch1054 -p0
%endif
# ensure generate files are removed
rm -f units/emergency.service

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Fri Jul 25 09:37:56 UTC 2014 - werner@suse.de
- Add upstream patch
1054-udev-exclude-MD-from-block-device-ownership-event-lo.patch
- Add with condition blkrrpart to be able to disable the patches
1025, 1027, 1029, 1030, 1031, 1032, 1033, 1034, 1037, and 1054
which uses the BLKRRPART ioctl for e.g. synthesize change events
which may interfere with other tools like parted.
-------------------------------------------------------------------
Thu Jul 24 13:05:42 UTC 2014 - fcrozat@suse.com

View File

@ -31,6 +31,7 @@
%endif
%bcond_with udevsettle
%bcond_with permission
%bcond_without blkrrpart
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
@ -830,6 +831,8 @@ Patch1051: 1051-check-if-NAME-has-a-value.patch
Patch1052: 1052-rules-uaccess-add-ID_SOFTWARE_RADIO.patch
# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178)
Patch1053: 1053-better-checks-in-write_net_rules.patch
# PATCH-FIX-SUSE 0001-udev-exclude-MD-from-block-device-ownership-event-lo.patch
Patch1054: 1054-udev-exclude-MD-from-block-device-ownership-event-lo.patch
%description
Systemd is a system and service manager, compatible with SysV and LSB
@ -1369,19 +1372,27 @@ cp %{SOURCE7} m4/
%endif
%patch1023 -p0
%patch1024 -p0
%if %{with blkrrpart}
%patch1025 -p1
%endif
%patch1026 -p1
%if %{with blkrrpart}
%patch1027 -p1
%endif
%patch1028 -p1
%if %{with blkrrpart}
%patch1029 -p1
%patch1030 -p1
%patch1031 -p1
%patch1032 -p1
%patch1033 -p1
%patch1034 -p1
%endif
%patch1035 -p1
%patch1036 -p1
%if %{with blkrrpart}
%patch1037 -p1
%endif
%patch1038 -p0
%if %{with udevsettle}
%patch1039 -p0
@ -1402,6 +1413,9 @@ cp %{SOURCE7} m4/
%patch1051 -p1
%patch1052 -p0
%patch1053 -p1
%if %{with blkrrpart}
%patch1054 -p0
%endif
# ensure generate files are removed
rm -f units/emergency.service