diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-activation-add-synchronization-point.patch')
-rw-r--r-- | meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-activation-add-synchronization-point.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-activation-add-synchronization-point.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-activation-add-synchronization-point.patch new file mode 100644 index 000000000..a864f1e21 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-activation-add-synchronization-point.patch @@ -0,0 +1,82 @@ +From f8466749dd73f5b0ccf4fc86c8a7585c4140b3f9 Mon Sep 17 00:00:00 2001 +From: Zdenek Kabelac <zkabelac@redhat.com> +Date: Fri, 16 Aug 2019 23:49:59 +0200 +Subject: [PATCH 1/3] activation: add synchronization point + +Resuming of 'error' table entry followed with it's dirrect removal +is now troublesame with latest udev as it may skip processing of +udev rules for already 'dropped' device nodes. + +As we cannot 'synchronize' with udev while we know we have devices +in suspended state - rework 'cleanup' so it collects nodes +for removal into pending_delete list and process the list with +synchronization once we are without any suspended nodes. + +Upstream-Status: Backport +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + WHATS_NEW | 9 +++++++++ + lib/activate/dev_manager.c | 20 ++++++++++++-------- + 2 files changed, 21 insertions(+), 8 deletions(-) + +diff --git a/WHATS_NEW b/WHATS_NEW +index 3a58de5f9..0b48e032b 100644 +--- a/WHATS_NEW ++++ b/WHATS_NEW +@@ -1,3 +1,12 @@ ++Version 2.03.06 - ++================================ ++ Synchronize with udev when dropping snapshot. ++ Add missing device synchronization point before removing pvmove node. ++ Correctly set read_ahead for LVs when pvmove is finished. ++ Remove unsupported OPTIONS+="event_timeout" udev rule from 11-dm-lvm.rules. ++ Prevent creating VGs with PVs with different logical block sizes. ++ Fix metadata writes from corrupting with large physical block size. ++ + Version 2.03.05 - 15th June 2019 + ================================ + Fix command definition for pvchange -a. +diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c +index 981f4674a..7101ffa12 100644 +--- a/lib/activate/dev_manager.c ++++ b/lib/activate/dev_manager.c +@@ -3558,13 +3558,6 @@ static int _clean_tree(struct dev_manager *dm, struct dm_tree_node *root, const + const char *name, *uuid; + struct dm_str_list *dl; + +- /* Deactivate any tracked pending delete nodes */ +- dm_list_iterate_items(dl, &dm->pending_delete) { +- log_debug_activation("Deleting tracked UUID %s.", dl->str); +- if (!dm_tree_deactivate_children(root, dl->str, strlen(dl->str))) +- return_0; +- } +- + while ((child = dm_tree_next_child(&handle, root, 0))) { + if (!(name = dm_tree_node_get_name(child))) + continue; +@@ -3585,10 +3578,21 @@ static int _clean_tree(struct dev_manager *dm, struct dm_tree_node *root, const + if (non_toplevel_tree_dlid && !strcmp(non_toplevel_tree_dlid, uuid)) + continue; + +- if (!dm_tree_deactivate_children(root, uuid, strlen(uuid))) ++ if (!str_list_add(dm->mem, &dm->pending_delete, uuid)) + return_0; + } + ++ /* Deactivate any tracked pending delete nodes */ ++ if (!dm_list_empty(&dm->pending_delete) && !dm_get_suspended_counter()) { ++ fs_unlock(); ++ dm_tree_set_cookie(root, fs_get_cookie()); ++ dm_list_iterate_items(dl, &dm->pending_delete) { ++ log_debug_activation("Deleting tracked UUID %s.", dl->str); ++ if (!dm_tree_deactivate_children(root, dl->str, strlen(dl->str))) ++ return_0; ++ } ++ } ++ + return 1; + } + +-- +2.21.0 + |