From fae013221e399d9c6adb9796ab3bf50528d10475 Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Sun, 30 Jan 2022 11:29:36 +0800 Subject: [PATCH 1/6] lvm2: check DM_NAME before creating symlink in 13-dm-disk.rules check DM_NAME before creating symlink in 13-dm-disk.rules. Fix issue: https://gitee.com/src-openeuler/lvm2/issues/I4RZLO Signed-off-by: Zhiqiang Liu (cherry picked from commit 0cfb6fa80f12fb71c19e5a6b8d76eac838ecd333) --- ...-check-DM_NAME-before-create-symlink.patch | 31 +++++++++++++++++++ lvm2.spec | 6 +++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch diff --git a/0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch b/0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch new file mode 100644 index 0000000..2fb79ac --- /dev/null +++ b/0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch @@ -0,0 +1,31 @@ +From cec542e471201e5cd82667a3ec39dc75441d65eb Mon Sep 17 00:00:00 2001 +From: Zhiqiang Liu +Date: Sun, 30 Jan 2022 11:14:01 +0800 +Subject: [PATCH] 13-dm-disk.rules: check DM_NAME before create symlink + +It is necessary to determin whether DM_NAME is NULL before +generating the symlink, otherwise the symlink systemd cannot +be deleted automatically, and there will be left. + +Signed-off-by: wuguagnhao +Signed-off-by: Zhiqiang Liu +--- + udev/13-dm-disk.rules.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/udev/13-dm-disk.rules.in b/udev/13-dm-disk.rules.in +index 5355810..fcb2f37 100644 +--- a/udev/13-dm-disk.rules.in ++++ b/udev/13-dm-disk.rules.in +@@ -14,7 +14,7 @@ ACTION!="add|change", GOTO="dm_end" + ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_end" + ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="dm_end" + +-SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" ++ENV{DM_NAME}=="?*", SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" + ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}" + + ENV{DM_SUSPENDED}=="1", GOTO="dm_end" +-- +1.8.3.1 + diff --git a/lvm2.spec b/lvm2.spec index 797a297..2e28d03 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -43,7 +43,7 @@ Name: lvm2 Version: 2.03.14 -Release: 1 +Release: 2 Epoch: 8 Summary: Tools for logical volume management License: GPLv2+ and LGPLv2.1 and BSD @@ -60,6 +60,7 @@ Patch8: 0008-enhancement-add-dfx-log.patch Patch9: 0009-enhancement-syslog-more-when-use-libdevmapper-so.patch Patch10: 0010-enhancement-log-it-when-disk-slow.patch Patch11: 0011-bugfix-lvm2-fix-the-reuse-of-va_list.patch +Patch12: 0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -486,6 +487,9 @@ fi %changelog +* Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-2 +- check DM_NAME before creating symlink in 13-dm-disk.rules + * Mon Nov 22 2021 wuguanghao - 8:2.03.14-1 - upgrade to 2.03.14 -- Gitee From 0070ecf15e77d2c8629e2342c63b6d79eece2543 Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Sun, 30 Jan 2022 11:43:11 +0800 Subject: [PATCH 2/6] dev_name() determine whether the dev->aliases linked list is empty before obtaining the dev name If dev->aliases linked list is empty, then directly obtain the str address of dm_str_list saved in dev_aliases.n, an unknown address will be returned, which may cause segfault. So we need to judge whether the dev->aliases linked list is empty before getting it to avoid returning unknown address. Fix issue: https://gitee.com/src-openeuler/lvm2/issues/I4RZP9 Signed-off-by: Zhiqiang Liu (cherry picked from commit 100c4fb387f1c6f9c5c54b377dcdd72c87c0c0bd) --- ...ne-whether-the-dev-aliases-linked-li.patch | 36 +++++++++++++++++++ lvm2.spec | 7 +++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 0013-dev_name-determine-whether-the-dev-aliases-linked-li.patch diff --git a/0013-dev_name-determine-whether-the-dev-aliases-linked-li.patch b/0013-dev_name-determine-whether-the-dev-aliases-linked-li.patch new file mode 100644 index 0000000..cc17bab --- /dev/null +++ b/0013-dev_name-determine-whether-the-dev-aliases-linked-li.patch @@ -0,0 +1,36 @@ +From 472dd53a091e0e4b0d2db8fcd10da3f408873633 Mon Sep 17 00:00:00 2001 +From: Zhiqiang Liu +Date: Sun, 30 Jan 2022 11:37:51 +0800 +Subject: [PATCH] dev_name() determine whether the dev->aliases linked list is + empty before obtaining the dev name + +If dev->aliases linked list is empty, then directly obtain the str +address of dm_str_list saved in dev_aliases.n, an unknown address +will be returned, which may cause segfault. + +So we need to judge whether the dev->aliases linked list is empty before +getting it to avoid returning unknown address. + +Signed-off-by: Zhiqiang Liu +--- + lib/device/dev-cache.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c +index 33b75a9..1263820 100644 +--- a/lib/device/dev-cache.c ++++ b/lib/device/dev-cache.c +@@ -1703,8 +1703,8 @@ int dev_fd(struct device *dev) + + const char *dev_name(const struct device *dev) + { +- return (dev && dev->aliases.n) ? dm_list_item(dev->aliases.n, struct dm_str_list)->str : +- unknown_device_name(); ++ return (dev && dev->aliases.n && !dm_list_empty(&dev->aliases)) ?\ ++ dm_list_item(dev->aliases.n, struct dm_str_list)->str : unknown_device_name(); + } + + bool dev_cache_has_md_with_end_superblock(struct dev_types *dt) +-- +1.8.3.1 + diff --git a/lvm2.spec b/lvm2.spec index 2e28d03..3914702 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -43,7 +43,7 @@ Name: lvm2 Version: 2.03.14 -Release: 2 +Release: 3 Epoch: 8 Summary: Tools for logical volume management License: GPLv2+ and LGPLv2.1 and BSD @@ -61,6 +61,7 @@ Patch9: 0009-enhancement-syslog-more-when-use-libdevmapper-so.patch Patch10: 0010-enhancement-log-it-when-disk-slow.patch Patch11: 0011-bugfix-lvm2-fix-the-reuse-of-va_list.patch Patch12: 0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch +Patch13: 0013-dev_name-determine-whether-the-dev-aliases-linked-li.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -487,6 +488,10 @@ fi %changelog +* Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-3 +- dev_name() determine whether the dev->aliases linked list is + empty before obtaining the dev name + * Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-2 - check DM_NAME before creating symlink in 13-dm-disk.rules -- Gitee From 238bc9ea0872d69c790777285dac3d9e9eef0e3f Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Sun, 30 Jan 2022 15:15:24 +0800 Subject: [PATCH 3/6] lvm: code reduce cyclomatic complexity enhance code and reduce cyclomatic complexity Fix issue: https://gitee.com/src-openeuler/lvm2/issues/I4RZQQ Signed-off-by:lixiaokeng Signed-off-by: Zhiqiang Liu (cherry picked from commit 84f4c03aab3e0af6e75142f1d9332eb5e9b3fd52) --- ...vm-code-reduce-cyclomatic-complexity.patch | 97 +++++++++++++++++++ lvm2.spec | 6 +- 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 0014-lvm-code-reduce-cyclomatic-complexity.patch diff --git a/0014-lvm-code-reduce-cyclomatic-complexity.patch b/0014-lvm-code-reduce-cyclomatic-complexity.patch new file mode 100644 index 0000000..c81b9a7 --- /dev/null +++ b/0014-lvm-code-reduce-cyclomatic-complexity.patch @@ -0,0 +1,97 @@ +From f2fe10e3918bcab97a5948c3d88ca91a35b0ede2 Mon Sep 17 00:00:00 2001 +From: lixiaokeng +Date: Wed, 1 Jul 2020 11:07:06 +0000 +Subject: [PATCH] lvm: code reduce cyclomatic complexity + +enhance code and reduce cyclomatic complexity + +Fix issue: https://gitee.com/src-openeuler/lvm2/issues/I4RZQQ + +Signed-off-by:lixiaokeng +Signed-off-by: Zhiqiang Liu +--- + lib/device/dev-cache.c | 41 +++++++++++++++++++++++------------------ + 1 file changed, 23 insertions(+), 18 deletions(-) + +diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c +index 94e39fa..868a218 100644 +--- a/lib/device/dev-cache.c ++++ b/lib/device/dev-cache.c +@@ -1059,6 +1059,19 @@ static int _device_in_udev_db(const dev_t d) + return 0; + } + ++bool time_out(long* time_use, struct timeval start) ++{ ++ struct timeval end; ++ ++ if (!gettimeofday(&end, NULL)) { ++ *time_use = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); ++ if (*time_use > udev_getdev_timemax) { ++ return true; ++ } ++ } ++ return false; ++} ++ + static int _insert_udev_dir(struct udev *udev, const char *dir) + { + struct udev_enumerate *udev_enum = NULL; +@@ -1067,16 +1080,13 @@ static int _insert_udev_dir(struct udev *udev, const char *dir) + struct udev_device *device; + int r = 1; + int ret = -1; +- struct timeval start, end; ++ struct timeval start; + long time_use = 0; + + ret = gettimeofday(&start,NULL); + udev_enum = udev_enumerate_new(udev); +- if (!ret && !gettimeofday(&end,NULL)) { +- time_use = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); +- if (time_use > udev_getdev_timemax) { +- log_print_unless_silent("Call udev_enumerate_new use %ld usec", time_use); +- } ++ if (!ret && time_out(&time_use, start)) { ++ log_print_unless_silent("Call udev_enumerate_new use %ld usec", time_use); + } + if (!udev_enum) { + log_error("Failed to udev_enumerate_new."); +@@ -1110,14 +1120,12 @@ static int _insert_udev_dir(struct udev *udev, const char *dir) + entry_name); + continue; + } ++ + ret = gettimeofday(&start,NULL); + node_name = udev_device_get_devnode(device); +- if (!ret && !gettimeofday(&end,NULL)) { +- time_use = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); +- if (time_use > udev_getdev_timemax) { +- log_print_unless_silent("Call udev_device_get_devnode use %ld usec, device:%s", +- time_use, entry_name); +- } ++ if (!ret && time_out(&time_use, start)) { ++ log_print_unless_silent("Call udev_device_get_devnode use %ld usec, device:%s", ++ time_use, entry_name); + } + + if (!node_name) +@@ -1128,12 +1136,9 @@ static int _insert_udev_dir(struct udev *udev, const char *dir) + + ret = gettimeofday(&start,NULL); + first_entry = udev_device_get_devlinks_list_entry(device); +- if (!ret && !gettimeofday(&end,NULL)) { +- time_use = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); +- if (time_use > udev_getdev_timemax) { +- log_print_unless_silent("Call udev_device_get_devlinks_list_entry use %ld usec, dev:%s", +- time_use, entry_name); +- } ++ if (!ret && time_out(&time_use, start)) { ++ log_print_unless_silent("Call udev_device_get_devlinks_list_entry use %ld usec, dev:%s", ++ time_use, entry_name); + } + udev_list_entry_foreach(symlink_entry, first_entry) { + if (!(symlink_name = udev_list_entry_get_name(symlink_entry))) +-- +1.8.3.1 + diff --git a/lvm2.spec b/lvm2.spec index 3914702..7f7009e 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -43,7 +43,7 @@ Name: lvm2 Version: 2.03.14 -Release: 3 +Release: 4 Epoch: 8 Summary: Tools for logical volume management License: GPLv2+ and LGPLv2.1 and BSD @@ -62,6 +62,7 @@ Patch10: 0010-enhancement-log-it-when-disk-slow.patch Patch11: 0011-bugfix-lvm2-fix-the-reuse-of-va_list.patch Patch12: 0012-13-dm-disk.rules-check-DM_NAME-before-create-symlink.patch Patch13: 0013-dev_name-determine-whether-the-dev-aliases-linked-li.patch +Patch14: 0014-lvm-code-reduce-cyclomatic-complexity.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -488,6 +489,9 @@ fi %changelog +* Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-4 +- lvm: code reduce cyclomatic complexity + * Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-3 - dev_name() determine whether the dev->aliases linked list is empty before obtaining the dev name -- Gitee From c1a781465769042e67ac76fc49aa3ce5eeed16c7 Mon Sep 17 00:00:00 2001 From: wguanghao Date: Sun, 8 May 2022 09:53:42 +0800 Subject: [PATCH 4/6] fix error of epoch version --- lvm2.spec | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/lvm2.spec b/lvm2.spec index 7f7009e..da53aac 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -43,7 +43,7 @@ Name: lvm2 Version: 2.03.14 -Release: 4 +Release: 5 Epoch: 8 Summary: Tools for logical volume management License: GPLv2+ and LGPLv2.1 and BSD @@ -489,44 +489,47 @@ fi %changelog -* Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-4 +* Sun May 08 2022 wuguanghao - 8:2.03.14-5 +- lvm: fix error of epoch version + +* Sun Jan 30 2022 Zhiqiang Liu - 8:2.03.14-4 - lvm: code reduce cyclomatic complexity -* Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-3 +* Sun Jan 30 2022 Zhiqiang Liu - 8:2.03.14-3 - dev_name() determine whether the dev->aliases linked list is empty before obtaining the dev name -* Sun Jan 30 2022 Zhiqiang Liu - 8.2.03.14-2 +* Sun Jan 30 2022 Zhiqiang Liu - 8:2.03.14-2 - check DM_NAME before creating symlink in 13-dm-disk.rules * Mon Nov 22 2021 wuguanghao - 8:2.03.14-1 - upgrade to 2.03.14 -* Wed Jul 28 2021 wuguanghao - 8.2.03.11-5 +* Wed Jul 28 2021 wuguanghao - 8:2.03.11-5 - %check modified to make run-unit-test -* Wed Jul 28 2021 wuguanghao - 8.2.03.11-4 +* Wed Jul 28 2021 wuguanghao - 8:2.03.11-4 - lvreduce support --yes option -* Mon Jul 26 2021 wuguanghao - 8.2.03.11-3 +* Mon Jul 26 2021 wuguanghao - 8:2.03.11-3 - revert commit of fix VERSION issue when packaging -* Fri Jul 23 2021 zhouwenpei - 8.2.03.11-2 +* Fri Jul 23 2021 zhouwenpei - 8:2.03.11-2 - remove unnecessary build require. -* Thu Jan 28 2021 wuguanghao - 8.2.03.11-1 +* Thu Jan 28 2021 wuguanghao - 8:2.03.11-1 - update lvm2 version to 2.03.11 -* Wed Dec 23 2020 yanglongkang - 8.2.03.09-5 +* Wed Dec 23 2020 yanglongkang - 8:2.03.09-5 - backport upstream patches-epoch2 to fix some problems -* Wed Nov 4 2020 lixiaokeng - 8.2.03.09-4 +* Wed Nov 4 2020 lixiaokeng - 8:2.03.09-4 - add make test -* Thu Aug 6 2020 wuguanghao - 8.2.03.09-3 +* Thu Aug 6 2020 wuguanghao - 8:2.03.09-3 - update master branch device-mapper-version more than LTS branch -* Fri Jul 24 2020 wuguanghao - 8.2.03.09-2 +* Fri Jul 24 2020 wuguanghao - 8:2.03.09-2 - update device-mapper-version to 1.02.151 * Thu Jul 14 2020 wuguanghao - 8:2.03.09-1 -- Gitee From a1fa3ec68a6be18abbd5ad04d634726355d9424b Mon Sep 17 00:00:00 2001 From: wangpeng Date: Wed, 11 May 2022 05:58:30 +0000 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E6=AD=A3changelog=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E9=94=99=E8=AF=AF=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lvm2.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lvm2.spec b/lvm2.spec index 7f7009e..64f21aa 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -529,7 +529,7 @@ fi * Fri Jul 24 2020 wuguanghao - 8.2.03.09-2 - update device-mapper-version to 1.02.151 -* Thu Jul 14 2020 wuguanghao - 8:2.03.09-1 +* Tue Jul 14 2020 wuguanghao - 8:2.03.09-1 - update lvm2 version to 2.03.09-1 -- Gitee From af0be30dc080efe5563d8eeaaddd532499a67720 Mon Sep 17 00:00:00 2001 From: wzx Date: Wed, 9 Nov 2022 15:20:26 +0800 Subject: [PATCH 6/6] Add sw64 architecture Signed-off-by: wzx --- lvm2.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lvm2.spec b/lvm2.spec index b0b2b72..bec2973 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -8,7 +8,7 @@ %global use_lockd_dlm 0 %endif -%ifnarch x86_64 aarch64 +%ifnarch x86_64 aarch64 sw_64 %global use_lockd_sanlock 0 %endif @@ -43,7 +43,7 @@ Name: lvm2 Version: 2.03.14 -Release: 5 +Release: 6 Epoch: 8 Summary: Tools for logical volume management License: GPLv2+ and LGPLv2.1 and BSD @@ -489,6 +489,9 @@ fi %changelog +* Mon Nov 7 2022 wuzx - 8:2.03.14-6 +- Add sw64 architecture + * Sun May 08 2022 wuguanghao - 8:2.03.14-5 - lvm: fix error of epoch version -- Gitee