diff --git a/lvm2.changes b/lvm2.changes index 4c5434d..47e4577 100644 --- a/lvm2.changes +++ b/lvm2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Nov 28 09:37:23 UTC 2012 - rmilasan@suse.com + +- udev_sync-cookie_set-1-on-each-dm_task_set_cookie-ca.patch: + cookie_set=1 on each dm_task_set_cookie call (bnc#788882) + ------------------------------------------------------------------- Mon Nov 12 10:41:45 UTC 2012 - seife+obs@b1-systems.com diff --git a/lvm2.spec b/lvm2.spec index f56c5fb..ab0df64 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -62,6 +62,7 @@ Patch65: device-mapper-dmsetup-deps-export.patch Patch66: device-mapper-type_punning.diff Patch70: sleep-try-open-count.diff Patch81: udev-rules_update.diff +Patch82: udev_sync-cookie_set-1-on-each-dm_task_set_cookie-ca.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # Not a real replacement but we drop evms @@ -97,6 +98,7 @@ Volume Manager. %patch66 -p1 %patch70 -p1 %patch81 -p1 +%patch82 -p1 %build export MODPROBE_CMD=/sbin/modprobe diff --git a/udev_sync-cookie_set-1-on-each-dm_task_set_cookie-ca.patch b/udev_sync-cookie_set-1-on-each-dm_task_set_cookie-ca.patch new file mode 100644 index 0000000..e2e5df0 --- /dev/null +++ b/udev_sync-cookie_set-1-on-each-dm_task_set_cookie-ca.patch @@ -0,0 +1,66 @@ +From a820a68619c10108666f8093545837233c954046 Mon Sep 17 00:00:00 2001 +From: Peter Rajnoha +Date: Tue, 23 Oct 2012 11:40:53 +0200 +Subject: [PATCH] udev_sync: cookie_set=1 on each dm_task_set_cookie call + +cookie_set variable found in the struct dm_task should be always +set to 1 after dm_task_set_cookie_call, even if udev_sync is disabled +as the cookie itself carries synchronization informations *as well as* +extra flags to control other aspects of udev support. + +For example, one could disable the synchronization itself, but still +direct the libdm code to disable library fallback via +DM_UDEV_DISABLE_LIBRARY_FALLBACK flag. These extra flags still need +to be carried out! + +A concrete example: + $ dmsetup create test --table "0 1 zero" --noudevsync + +This disables synchronization with udev. As the --verifyudev option is +not used, we don't want to do any corrections. In other words, we +need DM_UDEV_DISABLE_LIBRARY_FALLBACK flag to be used. However, +with --noudevsync this was not the case - the flag was ignored! + +This patch fixes the case when noudevsync is used but there are still +some extra flags passed within the cookie flag part. The synchronization +part of the cookie stays zero (which is ok as dm_udev_wait call on such a +cookie is simply a NOOP). +--- + WHATS_NEW_DM | 1 + + libdm/libdm-common.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM +index 2d0b05c..7c636f0 100644 +--- a/WHATS_NEW_DM ++++ b/WHATS_NEW_DM +@@ -1,5 +1,6 @@ + Version 1.02.77 - 15th October 2012 + =================================== ++ Fix dm_task_set_cookie to properly process udev flags if udev_sync disabled. + Support unmount of thin volumes from pool above thin pool threshold. + Update man page to reflect that dm UUIDs are being mangled as well. + Apply 'dmsetup mangle' for dm UUIDs besides dm names. +diff --git a/libdm/libdm-common.c b/libdm/libdm-common.c +index b8533ed..afdac89 100644 +--- a/libdm/libdm-common.c ++++ b/libdm/libdm-common.c +@@ -1838,6 +1838,7 @@ int dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t flags) + if (dm_cookie_supported()) + dmt->event_nr = flags << DM_UDEV_FLAGS_SHIFT; + *cookie = 0; ++ dmt->cookie_set = 1; + + return 1; + } +@@ -2207,6 +2208,7 @@ int dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t flags) + + if (!dm_udev_get_sync_support()) { + *cookie = 0; ++ dmt->cookie_set = 1; + return 1; + } + +-- +1.7.10.4 +