1c7cea6733
- Update device mapper version to 1.02.138, see WHATS_NEW_DM for detailed changelogs * Drop obsolete lvmchange files accordingly - Refresh libdm-iface-not-output-error-message-inside-retry-loop.patch - Refresh make-mirror-legs-on-different-tag-pvs.patch - device-mapper-dmsetup-export.patch - LVM version update to 2.02.169 release, see WHATS_NEW and WHATS_NEW_DM files for detailed changelogs old: Base:System/lvm2 new: home:jnelson-suse:branches:Base:System/lvm2 rev None Index: device-mapper-dmsetup-export.patch =================================================================== --- device-mapper-dmsetup-export.patch (revision 176) +++ device-mapper-dmsetup-export.patch (revision 5) @@ -1,7 +1,20 @@ -Index: LVM2.2.02.139/man/dmsetup.8.in +From b148cb1c1e801455cb774f51eecd57f7e4f98c39 Mon Sep 17 00:00:00 2001 +From: Eric Ren <zren@suse.com> +Date: Tue, 11 Apr 2017 10:58:56 +0800 +Subject: [PATCH] DM: add dmsetup export + +bsc#479104 + +Patch-refreshed-by: Eric Ren <zren@suse.com> +--- + man/dmsetup.8_main | 16 +++- + tools/dmsetup.c | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 266 insertions(+), 2 deletions(-) + +Index: LVM2.2.02.169/man/dmsetup.8_main =================================================================== ---- LVM2.2.02.139.orig/man/dmsetup.8.in -+++ LVM2.2.02.139/man/dmsetup.8.in +--- LVM2.2.02.169.orig/man/dmsetup.8_main ++++ LVM2.2.02.169/man/dmsetup.8_main @@ -97,7 +97,15 @@ dmsetup \(em low level logical volume ma .. .CMD_LOAD @@ -23,20 +36,20 @@ See below for more information on the table format. . .HP -+.BR \-\-export ++.BR --export +.IR export +.br +Outputs information in key/value format to be imported by other programs. +. +.HP - .BR \-\-udevcookie + .BR --udevcookie .IR cookie .br -Index: LVM2.2.02.139/tools/dmsetup.c +Index: LVM2.2.02.169/tools/dmsetup.c =================================================================== ---- LVM2.2.02.139.orig/tools/dmsetup.c -+++ LVM2.2.02.139/tools/dmsetup.c -@@ -2177,6 +2177,129 @@ out: +--- LVM2.2.02.169.orig/tools/dmsetup.c ++++ LVM2.2.02.169/tools/dmsetup.c +@@ -2231,6 +2231,129 @@ out: return r; } @@ -166,11 +179,16 @@ /* Show target names and their version numbers */ static int _targets(CMD_ARGS) { -@@ -5138,6 +5261,7 @@ static struct command _dmsetup_commands[ - {"deps", "[-o <options>] [<device>]", 0, -1, 1, 0, _deps}, - {"stats", "<command> [<options>] [<devices>]", 1, -1, 1, 1, _stats}, - {"status", "[<device>] [--noflush] [--target <target_type>]", 0, -1, 1, 0, _status}, +@@ -5904,7 +6027,11 @@ static struct command _dmsetup_commands[ + {"deps", "[-o <options>] [<device>...]", 0, -1, 1, 0, _deps}, + {"stats", "<command> [<options>] [<device>...]", 1, -1, 1, 1, _stats}, + {"status", "[<device>...] [--noflush] [--target <target_type>]", 0, -1, 1, 0, _status}, +- {"table", "[<device>...] [--target <target_type>] [--showkeys]", 0, -1, 1, 0, _status}, ++ {"deps", "[-o <options>] [<device>]", 0, -1, 1, 0, _deps}, ++ {"stats", "<command> [<options>] [<devices>]", 1, -1, 1, 1, _stats}, ++ {"status", "[<device>] [--noflush] [--target <target_type>]", 0, -1, 1, 0, _status}, + {"export", "[<device>]", 0, -1, 1, 0, _export}, - {"table", "[<device>] [--target <target_type>] [--showkeys]", 0, -1, 1, 0, _status}, ++ {"table", "[<device>] [--target <target_type>] [--showkeys]", 0, -1, 1, 0, _status}, {"wait", "<device> [<event_nr>] [--noflush]", 0, 2, 0, 0, _wait}, - {"mknodes", "[<device>]", 0, -1, 1, 0, _mknodes}, + {"mknodes", "[<device>...]", 0, -1, 1, 0, _mknodes}, + {"mangle", "[<device>...]", 0, -1, 1, 0, _mangle}, Index: device-mapper.changes =================================================================== --- device-mapper.changes (revision 176) +++ device-mapper.changes (revision 5) @@ -1,4 +1,20 @@ ------------------------------------------------------------------- +Wed Apr 12 01:33:15 UTC 2017 - zren@suse.com + +- Update device mapper version to 1.02.138, see WHATS_NEW_DM for + detailed changelogs + * Drop obsolete lvmchange files accordingly +- Refresh libdm-iface-not-output-error-message-inside-retry-loop.patch +- Refresh make-mirror-legs-on-different-tag-pvs.patch +- device-mapper-dmsetup-export.patch + +------------------------------------------------------------------- +Mon Apr 10 23:08:45 UTC 2017 - jnelson-suse@jamponi.net + +- Version update to 2.02.169 release, see WHATS_NEW and WHATS_NEW_DM + files for detailed changelogs + +------------------------------------------------------------------- Mon Apr 10 10:41:02 UTC 2017 - tchvatal@suse.com - Split configure options to have one per line Index: device-mapper.spec =================================================================== --- device-mapper.spec (revision 176) +++ device-mapper.spec (revision 5) @@ -19,8 +19,8 @@ %define libname libdevmapper1_03 %define libname_event libdevmapper-event1_03 ### COMMON-DEF-BEGIN ### -%define lvm2_version 2.02.168 -%define device_mapper_version 1.02.137 +%define lvm2_version 2.02.169 +%define device_mapper_version 1.02.138 %define thin_provisioning_version 0.5.6 ### COMMON-DEF-END ### Name: device-mapper Index: libdm-iface-not-output-error-message-inside-retry-loop.patch =================================================================== --- libdm-iface-not-output-error-message-inside-retry-loop.patch (revision 176) +++ libdm-iface-not-output-error-message-inside-retry-loop.patch (revision 5) @@ -1,22 +1,25 @@ -From a70f17fd1dc9a8cccefb946c3501d5cb6f2766bb Mon Sep 17 00:00:00 2001 -From: Liuhua Wang <lwang@suse.com> -Date: Mon, 23 Nov 2015 13:49:39 +0800 +From 3c4d9dd3571e89545d97c8421fd4cbdbaa6895b8 Mon Sep 17 00:00:00 2001 +From: Eric Ren <zren@suse.com> +Date: Tue, 11 Apr 2017 11:09:26 +0800 Subject: [PATCH] libdm-iface: not output error message inside retry loops -This is a workaround to avoid noisy error message being output inside retry loops -in case of remove failure because device busy. But as to the replies from upstream +This is a workaround to avoid noisy error message being output inside +retry loops +in case of remove failure because device busy. But as to the replies +from upstream there may be some issues in udev operations. References: bsc#940298 boo#957059 Signed-off-by: lwang@suse.com +Patch-refreshed-by: Eric Ren <zren@suse.com> --- - libdm/ioctl/libdm-iface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + libdm/ioctl/libdm-iface.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -Index: LVM2.2.02.141/libdm/ioctl/libdm-iface.c -=================================================================== ---- LVM2.2.02.141.orig/libdm/ioctl/libdm-iface.c -+++ LVM2.2.02.141/libdm/ioctl/libdm-iface.c +diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c +index cb3e8dc..c1c0771 100644 +--- a/libdm/ioctl/libdm-iface.c ++++ b/libdm/ioctl/libdm-iface.c @@ -62,6 +62,7 @@ */ #define MAPPER_CTRL_MINOR 236 @@ -25,15 +28,17 @@ /* dm major version no for running kernel */ static unsigned _dm_version = DM_VERSION_MAJOR; -@@ -1862,7 +1863,7 @@ static struct dm_ioctl *_do_dm_ioctl(str +@@ -1862,8 +1863,8 @@ static struct dm_ioctl *_do_dm_ioctl(struct dm_task *dmt, unsigned command, dmt->major > 0 && dmt->minor == 0 ? "0" : "", dmt->major > 0 ? ")" : "", strerror(dmt->ioctl_errno)); - else +- log_error("device-mapper: %s ioctl on %s %s%s%.0d%s%.0d%s%s " + else if(errno != EBUSY || retry_repeat_count == DM_IOCTL_RETRIES) - log_error("device-mapper: %s ioctl on %s%s%s%.0d%s%.0d%s%s " ++ log_error("device-mapper: %s ioctl on %s%s%s%.0d%s%.0d%s%s " "failed: %s", _cmd_data_v4[dmt->type].name, + dmi->name, dmi->uuid, @@ -1915,7 +1916,6 @@ void dm_task_update_nodes(void) update_devs(); } @@ -42,3 +47,6 @@ #define DM_RETRY_USLEEP_DELAY 200000 int dm_task_get_errno(struct dm_task *dmt) +-- +2.10.2 + Index: lvm2-clvm.changes =================================================================== --- lvm2-clvm.changes (revision 176) +++ lvm2-clvm.changes (revision 5) @@ -1,4 +1,20 @@ ------------------------------------------------------------------- +Wed Apr 12 01:33:15 UTC 2017 - zren@suse.com + +- Update device mapper version to 1.02.138, see WHATS_NEW_DM for + detailed changelogs + * Drop obsolete lvmchange files accordingly +- Refresh libdm-iface-not-output-error-message-inside-retry-loop.patch +- Refresh make-mirror-legs-on-different-tag-pvs.patch +- device-mapper-dmsetup-export.patch + +------------------------------------------------------------------- +Mon Apr 10 23:08:45 UTC 2017 - jnelson-suse@jamponi.net + +- Version update to 2.02.169 release, see WHATS_NEW and WHATS_NEW_DM + files for detailed changelogs + +------------------------------------------------------------------- Mon Apr 10 10:41:02 UTC 2017 - tchvatal@suse.com - Split configure options to have one per line Index: lvm2-clvm.spec =================================================================== --- lvm2-clvm.spec (revision 176) +++ lvm2-clvm.spec (revision 5) @@ -19,8 +19,8 @@ %define dlm_version 3.99.1 %define sanlock_version 3.3.0 ### COMMON-DEF-BEGIN ### -%define lvm2_version 2.02.168 -%define device_mapper_version 1.02.137 +%define lvm2_version 2.02.169 +%define device_mapper_version 1.02.138 %define thin_provisioning_version 0.5.6 ### COMMON-DEF-END ### Name: lvm2-clvm Index: lvm2.changes =================================================================== --- lvm2.changes (revision 176) +++ lvm2.changes (revision 5) @@ -1,4 +1,20 @@ ------------------------------------------------------------------- +Wed Apr 12 01:33:15 UTC 2017 - zren@suse.com + +- Update device mapper version to 1.02.138, see WHATS_NEW_DM for + detailed changelogs + * Drop obsolete lvmchange files accordingly +- Refresh libdm-iface-not-output-error-message-inside-retry-loop.patch +- Refresh make-mirror-legs-on-different-tag-pvs.patch +- device-mapper-dmsetup-export.patch + +------------------------------------------------------------------- +Mon Apr 10 23:08:45 UTC 2017 - jnelson-suse@jamponi.net + +- Version update to 2.02.169 release, see WHATS_NEW and WHATS_NEW_DM + files for detailed changelogs + +------------------------------------------------------------------- Mon Apr 10 10:41:02 UTC 2017 - tchvatal@suse.com - Split configure options to have one per line Index: lvm2.spec =================================================================== --- lvm2.spec (revision 176) +++ lvm2.spec (revision 5) @@ -20,8 +20,8 @@ %define applib liblvm2app2_2 %define cmdlib liblvm2cmd2_02 ### COMMON-DEF-BEGIN ### -%define lvm2_version 2.02.168 -%define device_mapper_version 1.02.137 +%define lvm2_version 2.02.169 +%define device_mapper_version 1.02.138 %define thin_provisioning_version 0.5.6 ### COMMON-DEF-END ### Name: lvm2 @@ -282,7 +282,6 @@ %{_sbindir}/lvcreate %{_sbindir}/lvdisplay %{_sbindir}/lvextend -%{_sbindir}/lvmchange %{_sbindir}/lvmdiskscan %{_sbindir}/lvmsadc %{_sbindir}/lvmsar @@ -336,7 +335,6 @@ /sbin/lvcreate /sbin/lvdisplay /sbin/lvextend -/sbin/lvmchange /sbin/lvmdiskscan /sbin/lvmsadc /sbin/lvmsar @@ -391,7 +389,6 @@ %{_mandir}/man8/lvm-config.8%{ext_man} %{_mandir}/man8/lvmconfig.8%{ext_man} %{_mandir}/man8/lvm-dumpconfig.8%{ext_man} -%{_mandir}/man8/lvmchange.8%{ext_man} %{_mandir}/man8/lvmconf.8%{ext_man} %{_mandir}/man8/lvmdiskscan.8%{ext_man} %{_mandir}/man8/lvmdump.8%{ext_man} Index: make-mirror-legs-on-different-tag-pvs.patch =================================================================== --- make-mirror-legs-on-different-tag-pvs.patch (revision 176) +++ make-mirror-legs-on-different-tag-pvs.patch (revision 5) @@ -1,10 +1,10 @@ -From 49a5da732c74b8b96bc123a541d590c4fd06d7af Mon Sep 17 00:00:00 2001 -From: Guangliang Zhao <gzhao@suse.com> -Date: Mon, 12 Nov 2012 15:28:11 +0800 -Subject: [PATCH 1/2] mirror: make mirror legs on different tag pvs +From b17f2ae4334f9233a88d7a2fcae325f86691beb0 Mon Sep 17 00:00:00 2001 +From: Eric Ren <zren@suse.com> +Date: Tue, 11 Apr 2017 10:44:30 +0800 +Subject: [PATCH] [PATCH 1/2] mirror: make mirror legs on different tag pvs -The mirror legs could be placed on the PVs(with different -tags) from the other mirror legs with this patch. +The mirror legs could be placed on the PVs(with different tags) +from the other mirror legs with this patch. The lvcreate allocates the replica "randomly" when creating a mirrored logical volume now, so it could happen that both @@ -17,18 +17,19 @@ always be placed on pvs with differnt tags. Signed-off-by: Guangliang Zhao <gzhao@suse.com> +Fix-conflict-by: Eric Ren <zren@suse.com> --- - conf/example.conf.in | 17 +++++++++++++++++ - lib/config/config_settings.h | 3 +++ - lib/config/defaults.h | 1 + - lib/metadata/lv_manip.c | 35 +++++++++++++++++++++++++++++++++++ - man/lvcreate.8.in | 4 ++++ - 5 files changed, 60 insertions(+) + conf/example.conf.in | 17 +++++++++++++++++ + lib/config/config_settings.h | 5 ++++- + lib/config/defaults.h | 1 + + lib/metadata/lv_manip.c | 35 +++++++++++++++++++++++++++++++++++ + man/lvcreate.8_pregen | 7 +++++++ + 5 files changed, 64 insertions(+), 1 deletion(-) -Index: LVM2.2.02.165/conf/example.conf.in -=================================================================== ---- LVM2.2.02.165.orig/conf/example.conf.in -+++ LVM2.2.02.165/conf/example.conf.in +diff --git a/conf/example.conf.in b/conf/example.conf.in +index 614ce53..b33289f 100644 +--- a/conf/example.conf.in ++++ b/conf/example.conf.in @@ -372,6 +372,23 @@ allocation { # or erased unless the --wipesignatures option is used directly. wipe_signatures_when_zeroing_new_lvs = 1 @@ -53,25 +54,27 @@ # Configuration option allocation/mirror_logs_require_separate_pvs. # Mirror logs and images will always use different PVs. # The default setting changed in version 2.02.85. -Index: LVM2.2.02.165/lib/config/config_settings.h -=================================================================== ---- LVM2.2.02.165.orig/lib/config/config_settings.h -+++ LVM2.2.02.165/lib/config/config_settings.h -@@ -473,6 +473,9 @@ cfg(allocation_raid_stripe_all_devices_C +diff --git a/lib/config/config_settings.h b/lib/config/config_settings.h +index b701722..0e5a5e2 100644 +--- a/lib/config/config_settings.h ++++ b/lib/config/config_settings.h +@@ -473,7 +473,10 @@ cfg(allocation_raid_stripe_all_devices_CFG, "raid_stripe_all_devices", allocatio "when the command does not specify the number of stripes to use.\n" "This was the default behaviour until release 2.02.162.\n") +-cfg(allocation_cache_pool_metadata_require_separate_pvs_CFG, "cache_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_BOOL, DEFAULT_CACHE_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 106), NULL, 0, NULL, +cfg(allocation_mirror_legs_require_separate_pvs_CFG, "mirror_legs_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MIRROR_LEGS_REQUIRE_SEPARATE_PVS, vsn(2, 2, 98), NULL, 0, NULL, + "Mirror legs will always use different PVs.\n") + - cfg(allocation_cache_pool_metadata_require_separate_pvs_CFG, "cache_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_CACHE_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 106), NULL, 0, NULL, ++cfg(allocation_cache_pool_metadata_require_separate_pvs_CFG, "cache_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_CACHE_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 106), NULL, 0, NULL, "Cache pool metadata and data will always use different PVs.\n") -Index: LVM2.2.02.165/lib/config/defaults.h -=================================================================== ---- LVM2.2.02.165.orig/lib/config/defaults.h -+++ LVM2.2.02.165/lib/config/defaults.h -@@ -158,6 +158,7 @@ + cfg(allocation_cache_pool_cachemode_CFG, "cache_pool_cachemode", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, DEFAULT_CACHE_MODE, vsn(2, 2, 113), NULL, vsn(2, 2, 128), +diff --git a/lib/config/defaults.h b/lib/config/defaults.h +index 2340636..256fab6 100644 +--- a/lib/config/defaults.h ++++ b/lib/config/defaults.h +@@ -159,6 +159,7 @@ #define DEFAULT_MAX_LV 0 #define DEFAULT_ALLOC_POLICY ALLOC_NORMAL #define DEFAULT_MIRROR_LOGS_REQUIRE_SEPARATE_PVS 0 @@ -79,11 +82,11 @@ #define DEFAULT_MAXIMISE_CLING 1 #define DEFAULT_CLUSTERED 0 -Index: LVM2.2.02.165/lib/metadata/lv_manip.c -=================================================================== ---- LVM2.2.02.165.orig/lib/metadata/lv_manip.c -+++ LVM2.2.02.165/lib/metadata/lv_manip.c -@@ -1519,6 +1519,9 @@ struct alloc_handle { +diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c +index 0dfbad4..357e46a 100644 +--- a/lib/metadata/lv_manip.c ++++ b/lib/metadata/lv_manip.c +@@ -1622,6 +1622,9 @@ struct alloc_handle { unsigned maximise_cling; unsigned mirror_logs_separate; /* Force mirror logs on separate PVs? */ @@ -93,7 +96,7 @@ /* * RAID devices require a metadata area that accompanies each -@@ -2633,6 +2636,32 @@ static int _limit_to_one_area_per_tag(st +@@ -2736,6 +2739,32 @@ static int _limit_to_one_area_per_tag(struct alloc_handle *ah, struct alloc_stat } /* @@ -126,7 +129,7 @@ * Returns 1 regardless of whether any space was found, except on error. */ static int _find_some_parallel_space(struct alloc_handle *ah, -@@ -2762,6 +2791,10 @@ static int _find_some_parallel_space(str +@@ -2865,6 +2894,10 @@ static int _find_some_parallel_space(struct alloc_handle *ah, continue; case USE_AREA: @@ -137,7 +140,7 @@ /* * Except with ALLOC_ANYWHERE, replace first area with this * one which is smaller but still big enough. -@@ -3243,6 +3276,7 @@ static struct alloc_handle *_alloc_init( +@@ -3355,6 +3388,7 @@ static struct alloc_handle *_alloc_init(struct cmd_context *cmd, ah->parity_count = parity_count; ah->region_size = region_size; ah->alloc = alloc; @@ -145,7 +148,7 @@ /* * For the purposes of allocation, area_count and parity_count are -@@ -3254,6 +3288,7 @@ static struct alloc_handle *_alloc_init( +@@ -3366,6 +3400,7 @@ static struct alloc_handle *_alloc_init(struct cmd_context *cmd, ah->area_multiple = _calc_area_multiple(segtype, area_count + parity_count, stripes); //FIXME: s/mirror_logs_separate/metadata_separate/ so it can be used by others? ah->mirror_logs_separate = find_config_tree_bool(cmd, allocation_mirror_logs_require_separate_pvs_CFG, NULL); @@ -153,18 +156,24 @@ if (mirrors || stripes) total_extents = new_extents; -Index: LVM2.2.02.165/man/lvcreate.8.in -=================================================================== ---- LVM2.2.02.165.orig/man/lvcreate.8.in -+++ LVM2.2.02.165/man/lvcreate.8.in -@@ -418,6 +418,10 @@ Using \fBcore\fP means the mirror is reg - from the first device each time the logical volume is activated, - like after every reboot. +diff --git a/man/lvcreate.8_pregen b/man/lvcreate.8_pregen +index 6663087..c385927 100644 +--- a/man/lvcreate.8_pregen ++++ b/man/lvcreate.8_pregen +@@ -416,6 +416,13 @@ Create a raid10 LV. + [ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ] + .ad b .br +Every leg of the mirrored logical volume could be placed on the pvs with +same tag, see details(mirror_legs_require_separate_pvs) in lvm.conf. + +.br - Using \fBmirrored\fP will create a persistent log that is itself mirrored. - . - .HP ++Using \fBmirrored\fP will create a persistent log that is itself mirrored. ++. ++.HP + .ad l + [ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ] + .ad b +-- +2.10.2 + Index: LVM2.2.02.169.tgz =================================================================== Binary file LVM2.2.02.169.tgz (revision 5) added Index: LVM2.2.02.169.tgz.asc =================================================================== --- LVM2.2.02.169.tgz.asc (added) +++ LVM2.2.02.169.tgz.asc (revision 5) @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.14 (GNU/Linux) + +iEYEABECAAYFAljafgEACgkQIoGRwVZ+LBeo5wCfVaQeSN73FPcJf86c3aqrFmZu +Rs0AoJ6l75QbY2V55rhunJvwwDllKlpF +=0Jtt +-----END PGP SIGNATURE----- Index: LVM2.2.02.168.tgz =================================================================== Binary file LVM2.2.02.168.tgz (revision 176) deleted Index: LVM2.2.02.168.tgz.asc =================================================================== --- LVM2.2.02.168.tgz.asc (revision 176) +++ LVM2.2.02.168.tgz.asc (deleted) @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.14 (GNU/Linux) - -iEUEABECAAYFAlg/XqMACgkQIoGRwVZ+LBdjQACVGeU4I+B5ETIhINJeYXy2bLNu -hQCgxEmGwG0ec2frSXhQociTYfT6vVc= -=T5md ------END PGP SIGNATURE----- OBS-URL: https://build.opensuse.org/request/show/487889 OBS-URL: https://build.opensuse.org/package/show/Base:System/lvm2?expand=0&rev=177
195 lines
5.8 KiB
Diff
195 lines
5.8 KiB
Diff
From b148cb1c1e801455cb774f51eecd57f7e4f98c39 Mon Sep 17 00:00:00 2001
|
|
From: Eric Ren <zren@suse.com>
|
|
Date: Tue, 11 Apr 2017 10:58:56 +0800
|
|
Subject: [PATCH] DM: add dmsetup export
|
|
|
|
bsc#479104
|
|
|
|
Patch-refreshed-by: Eric Ren <zren@suse.com>
|
|
---
|
|
man/dmsetup.8_main | 16 +++-
|
|
tools/dmsetup.c | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
|
2 files changed, 266 insertions(+), 2 deletions(-)
|
|
|
|
Index: LVM2.2.02.169/man/dmsetup.8_main
|
|
===================================================================
|
|
--- LVM2.2.02.169.orig/man/dmsetup.8_main
|
|
+++ LVM2.2.02.169/man/dmsetup.8_main
|
|
@@ -97,7 +97,15 @@ dmsetup \(em low level logical volume ma
|
|
..
|
|
.CMD_LOAD
|
|
.
|
|
-.HP
|
|
+. HP
|
|
+.B dmsetup
|
|
+.de CMD_EXPORT
|
|
+. BR export
|
|
+. RI [device_name]
|
|
+..
|
|
+.CMD_EXPORT
|
|
+.
|
|
+. HP
|
|
.B dmsetup
|
|
.de CMD_LS
|
|
. ad l
|
|
@@ -564,6 +572,12 @@ Specify a one-line table directly on the
|
|
See below for more information on the table format.
|
|
.
|
|
.HP
|
|
+.BR --export
|
|
+.IR export
|
|
+.br
|
|
+Outputs information in key/value format to be imported by other programs.
|
|
+.
|
|
+.HP
|
|
.BR --udevcookie
|
|
.IR cookie
|
|
.br
|
|
Index: LVM2.2.02.169/tools/dmsetup.c
|
|
===================================================================
|
|
--- LVM2.2.02.169.orig/tools/dmsetup.c
|
|
+++ LVM2.2.02.169/tools/dmsetup.c
|
|
@@ -2231,6 +2231,129 @@ out:
|
|
return r;
|
|
}
|
|
|
|
+static int _export(CMD_ARGS)
|
|
+{
|
|
+ int r = 0;
|
|
+ struct dm_task *dmt = NULL;
|
|
+ void *next = NULL;
|
|
+ uint64_t start, length;
|
|
+ char *target_type = NULL;
|
|
+ char *params;
|
|
+ const char *name = NULL;
|
|
+ const char *old_name = NULL;
|
|
+ const char *uuid = NULL;
|
|
+ struct dm_info info;
|
|
+ struct dm_deps *deps;
|
|
+
|
|
+ if (names)
|
|
+ name = names->name;
|
|
+ else if (argc == 2)
|
|
+ name = argv[1];
|
|
+ old_name = name;
|
|
+
|
|
+ if (!(dmt = dm_task_create(DM_DEVICE_STATUS)))
|
|
+ goto out;
|
|
+
|
|
+ if (!_set_task_device(dmt, name, 0))
|
|
+ goto out;
|
|
+
|
|
+ if (!dm_task_run(dmt))
|
|
+ goto out;
|
|
+
|
|
+ if (!dm_task_get_info(dmt, &info) || !info.exists)
|
|
+ goto out;
|
|
+
|
|
+ if (!name)
|
|
+ name = dm_task_get_name(dmt);
|
|
+
|
|
+ uuid = dm_task_get_uuid(dmt);
|
|
+ printf("DM_NAME=%s\n", name);
|
|
+
|
|
+ if ((uuid = dm_task_get_uuid(dmt)) && *uuid)
|
|
+ printf("DM_UUID=%s\n", uuid);
|
|
+
|
|
+ if (!info.exists) {
|
|
+ printf("DM_STATE=NOTPRESENT\n");
|
|
+ goto out;
|
|
+ }
|
|
+
|
|
+ if (!name)
|
|
+ name = dm_task_get_name(dmt);
|
|
+
|
|
+ uuid = dm_task_get_uuid(dmt);
|
|
+ printf("DM_NAME=%s\n", name);
|
|
+
|
|
+ if ((uuid = dm_task_get_uuid(dmt)) && *uuid)
|
|
+ printf("DM_UUID=%s\n", uuid);
|
|
+
|
|
+ if (!info.exists) {
|
|
+ printf("DM_STATE=NOTPRESENT\n");
|
|
+ goto out;
|
|
+ }
|
|
+
|
|
+ printf("DM_STATE=%s\n",
|
|
+ info.suspended ? "SUSPENDED" :
|
|
+ (info.read_only ? "READONLY" : "ACTIVE"));
|
|
+
|
|
+ if (!info.live_table && !info.inactive_table)
|
|
+ printf("DM_TABLE_STATE=NONE\n");
|
|
+ else
|
|
+ printf("DM_TABLE_STATE=%s%s%s\n",
|
|
+ info.live_table ? "LIVE" : "",
|
|
+ info.live_table && info.inactive_table ? "/" : "",
|
|
+ info.inactive_table ? "INACTIVE" : "");
|
|
+
|
|
+ if (info.open_count != -1)
|
|
+ printf("DM_OPENCOUNT=%d\n", info.open_count);
|
|
+
|
|
+ printf("DM_LAST_EVENT_NR=%" PRIu32 "\n", info.event_nr);
|
|
+
|
|
+ printf("DM_MAJOR=%d\n", info.major);
|
|
+ printf("DM_MINOR=%d\n", info.minor);
|
|
+
|
|
+ if (info.target_count != -1)
|
|
+ printf("DM_TARGET_COUNT=%d\n", info.target_count);
|
|
+
|
|
+ /* export all table types */
|
|
+ next = dm_get_next_target(dmt, next, &start, &length,
|
|
+ &target_type, ¶ms);
|
|
+ if (target_type) {
|
|
+ printf("DM_TARGET_TYPES=%s", target_type);
|
|
+ while (next) {
|
|
+ next = dm_get_next_target(dmt, next, &start, &length,
|
|
+ &target_type, ¶ms);
|
|
+ if (target_type)
|
|
+ printf(",%s", target_type);
|
|
+ }
|
|
+ printf("\n");
|
|
+ }
|
|
+
|
|
+ dm_task_destroy(dmt);
|
|
+
|
|
+ // bnc#707614, revert to the original name
|
|
+
|
|
+ if (!(dmt = dm_task_create(DM_DEVICE_DEPS)))
|
|
+ goto out;
|
|
+
|
|
+ name = old_name;
|
|
+ if (!_set_task_device(dmt, name, 0))
|
|
+ goto out;
|
|
+
|
|
+ if (!dm_task_run(dmt))
|
|
+ goto out;
|
|
+
|
|
+ if (!(deps = dm_task_get_deps(dmt)))
|
|
+ goto out;
|
|
+
|
|
+ printf("DM_DEPS=%d\n", deps->count);
|
|
+
|
|
+ r = 1;
|
|
+ out:
|
|
+ if (dmt)
|
|
+ dm_task_destroy(dmt);
|
|
+ return r;
|
|
+}
|
|
+
|
|
/* Show target names and their version numbers */
|
|
static int _targets(CMD_ARGS)
|
|
{
|
|
@@ -5904,7 +6027,11 @@ static struct command _dmsetup_commands[
|
|
{"deps", "[-o <options>] [<device>...]", 0, -1, 1, 0, _deps},
|
|
{"stats", "<command> [<options>] [<device>...]", 1, -1, 1, 1, _stats},
|
|
{"status", "[<device>...] [--noflush] [--target <target_type>]", 0, -1, 1, 0, _status},
|
|
- {"table", "[<device>...] [--target <target_type>] [--showkeys]", 0, -1, 1, 0, _status},
|
|
+ {"deps", "[-o <options>] [<device>]", 0, -1, 1, 0, _deps},
|
|
+ {"stats", "<command> [<options>] [<devices>]", 1, -1, 1, 1, _stats},
|
|
+ {"status", "[<device>] [--noflush] [--target <target_type>]", 0, -1, 1, 0, _status},
|
|
+ {"export", "[<device>]", 0, -1, 1, 0, _export},
|
|
+ {"table", "[<device>] [--target <target_type>] [--showkeys]", 0, -1, 1, 0, _status},
|
|
{"wait", "<device> [<event_nr>] [--noflush]", 0, 2, 0, 0, _wait},
|
|
{"mknodes", "[<device>...]", 0, -1, 1, 0, _mknodes},
|
|
{"mangle", "[<device>...]", 0, -1, 1, 0, _mangle},
|