Accepting request 310530 from home:jeff_mahoney:branches:Base:System
- Update to 2.02.120 - Fixed numerous bugs(see WHATS_NEW for full details) - Deleted dab3ebce-devices-Do-not-support-unpartitioned-DASD.patch (upstream) OBS-URL: https://build.opensuse.org/request/show/310530 OBS-URL: https://build.opensuse.org/package/show/Base:System/lvm2?expand=0&rev=130
This commit is contained in:
parent
c1e9200334
commit
b4c433fdb0
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:de9cb0acfb9c5a6afa6184160c9e066f19043677f91a72c741d153efcd2874a5
|
||||
size 1524844
|
@ -1,7 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.0.14 (GNU/Linux)
|
||||
|
||||
iEYEABECAAYFAlR5ALcACgkQIoGRwVZ+LBfcYACfcsCo+Im/tR2gbHDpSA5Qg9Vo
|
||||
iqIAoOjwTzT8Mcwgz7cpUdl7iLhoaola
|
||||
=BmR+
|
||||
-----END PGP SIGNATURE-----
|
3
LVM2.2.02.120.tgz
Normal file
3
LVM2.2.02.120.tgz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8d6bd02f7d00315482538ece3e831cd81709c29d74ce71229c60192fb166081a
|
||||
size 1653183
|
7
LVM2.2.02.120.tgz.asc
Normal file
7
LVM2.2.02.120.tgz.asc
Normal file
@ -0,0 +1,7 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.0.14 (GNU/Linux)
|
||||
|
||||
iEYEABECAAYFAlVWcqQACgkQIoGRwVZ+LBeiKgCg6vIAWhC7AZcf01Qf505sty3A
|
||||
HOwAoJGo8JYHscwGMo3FSIkLWHjbcRq0
|
||||
=96gn
|
||||
-----END PGP SIGNATURE-----
|
@ -456,7 +456,7 @@ Subject: Parallelize dispatching
|
||||
- if (!lv_is_pvmove(lv) && !lv_is_locked(lv) &&
|
||||
- lv_is_active(lv) &&
|
||||
- !lv_is_active_exclusive_locally(lv) && /* lv_is_active_remotely */
|
||||
- !_cluster_mirror_is_available(lv)) {
|
||||
- !cluster_mirror_is_available(lv->vg->cmd)) {
|
||||
- log_error("Shared cluster mirrors are not available.");
|
||||
- return 0;
|
||||
- }
|
||||
|
@ -1,58 +0,0 @@
|
||||
Index: LVM2.2.02.114/lib/device/dev-type.c
|
||||
===================================================================
|
||||
--- LVM2.2.02.114.orig/lib/device/dev-type.c
|
||||
+++ LVM2.2.02.114/lib/device/dev-type.c
|
||||
@@ -112,6 +112,10 @@ struct dev_types *create_dev_types(const
|
||||
if (!strncmp("drbd", line + i, 4) && isspace(*(line + i + 4)))
|
||||
dt->drbd_major = line_maj;
|
||||
|
||||
+ /* Look for DASD */
|
||||
+ if (!strncmp("dasd", line + i, 4) && isspace(*(line + i + 4)))
|
||||
+ dt->dasd_major = line_maj;
|
||||
+
|
||||
/* Look for EMC powerpath */
|
||||
if (!strncmp("emcpower", line + i, 8) && isspace(*(line + i + 8)))
|
||||
dt->emcpower_major = line_maj;
|
||||
@@ -203,6 +207,9 @@ int dev_subsystem_part_major(struct dev_
|
||||
if (MAJOR(dev->dev) == dt->emcpower_major)
|
||||
return 1;
|
||||
|
||||
+ if (MAJOR(dev->dev) == dt->dasd_major)
|
||||
+ return 1;
|
||||
+
|
||||
if (MAJOR(dev->dev) == dt->power2_major)
|
||||
return 1;
|
||||
|
||||
@@ -222,6 +229,9 @@ const char *dev_subsystem_name(struct de
|
||||
if (MAJOR(dev->dev) == dt->drbd_major)
|
||||
return "DRBD";
|
||||
|
||||
+ if (MAJOR(dev->dev) == dt->dasd_major)
|
||||
+ return "DASD";
|
||||
+
|
||||
if (MAJOR(dev->dev) == dt->emcpower_major)
|
||||
return "EMCPOWER";
|
||||
|
||||
@@ -319,6 +329,10 @@ int dev_is_partitioned(struct dev_types
|
||||
if (!_is_partitionable(dt, dev))
|
||||
return 0;
|
||||
|
||||
+ /* Unpartitioned DASD devices are not supported. */
|
||||
+ if (MAJOR(dev->dev) == dt->dasd_major)
|
||||
+ return 1;
|
||||
+
|
||||
return _has_partition_table(dev);
|
||||
}
|
||||
|
||||
Index: LVM2.2.02.114/lib/device/dev-type.h
|
||||
===================================================================
|
||||
--- LVM2.2.02.114.orig/lib/device/dev-type.h
|
||||
+++ LVM2.2.02.114/lib/device/dev-type.h
|
||||
@@ -44,6 +44,7 @@ struct dev_types {
|
||||
int device_mapper_major;
|
||||
int emcpower_major;
|
||||
int power2_major;
|
||||
+ int dasd_major;
|
||||
struct dev_type_def dev_type_array[NUMBER_OF_MAJORS];
|
||||
};
|
||||
|
@ -3,8 +3,8 @@ Index: LVM2.2.02.109/libdm/Makefile.in
|
||||
--- LVM2.2.02.109.orig/libdm/Makefile.in
|
||||
+++ LVM2.2.02.109/libdm/Makefile.in
|
||||
@@ -39,9 +39,9 @@ INCLUDES += @VALGRIND_CFLAGS@
|
||||
endif
|
||||
CFLAGS += $(UDEV_CFLAGS)
|
||||
|
||||
INCLUDES = -I$(srcdir)/$(interface)
|
||||
|
||||
-ifeq ("@STATIC_LINK@", "yes")
|
||||
+#ifeq ("@STATIC_LINK@", "yes")
|
||||
|
@ -1,33 +1,34 @@
|
||||
---
|
||||
lib/config/config_settings.h | 1 +
|
||||
lib/config/config_settings.h | 3 +++
|
||||
lib/config/defaults.h | 1 +
|
||||
lib/display/display.c | 14 ++++++++++----
|
||||
lib/display/display.h | 1 +
|
||||
4 files changed, 13 insertions(+), 4 deletions(-)
|
||||
lib/display/display.c | 13 +++++++++----
|
||||
3 files changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/lib/config/config_settings.h
|
||||
+++ b/lib/config/config_settings.h
|
||||
@@ -187,6 +187,7 @@ cfg_array(global_cache_check_options_CFG
|
||||
cfg(global_cache_dump_executable_CFG, "cache_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_DUMP_CMD, vsn(2, 2, 108), NULL)
|
||||
cfg(global_cache_repair_executable_CFG, "cache_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_REPAIR_CMD, vsn(2, 2, 108), NULL)
|
||||
cfg_array(global_cache_repair_options_CFG, "cache_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_REPAIR_OPTIONS, vsn(2, 2, 108), NULL)
|
||||
+cfg(global_display_dm_name_for_lv_name_CFG, "display_dm_name_for_lv_name", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DISPLAY_DM_NAME_FOR_LV_NAME, vsn(2, 2, 98), NULL)
|
||||
@@ -905,6 +905,9 @@ cfg_array(global_cache_check_options_CFG
|
||||
cfg_array(global_cache_repair_options_CFG, "cache_repair_options", global_CFG_SECTION, CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_REPAIR_OPTIONS, vsn(2, 2, 108), NULL, 0, NULL,
|
||||
"List of options passed to the cache_repair command.\n")
|
||||
|
||||
cfg(activation_checks_CFG, "checks", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION_CHECKS, vsn(2, 2, 86), NULL)
|
||||
cfg(activation_udev_sync_CFG, "udev_sync", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_UDEV_SYNC, vsn(2, 2, 51), NULL)
|
||||
+cfg(global_display_dm_name_for_lv_name_CFG, "display_dm_name_for_lv_name", global_CFG_SECTION, CFG_DEFAULT_COMMENTED, CFG_TYPE_BOOL, DEFAULT_DISPLAY_DM_NAME_FOR_LV_NAME, vsn(2, 2, 98), NULL, 0, NULL,
|
||||
+ "Display dm name for lv name.\n")
|
||||
+
|
||||
cfg(global_system_id_source_CFG, "system_id_source", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_SYSTEM_ID_SOURCE, vsn(2, 2, 117), NULL, 0, NULL,
|
||||
"The method LVM uses to set the local system ID.\n"
|
||||
"Volume Groups can also be given a system ID (by\n"
|
||||
--- a/lib/config/defaults.h
|
||||
+++ b/lib/config/defaults.h
|
||||
@@ -31,6 +31,7 @@
|
||||
#define DEFAULT_PROC_DIR "/proc"
|
||||
@@ -33,6 +33,7 @@
|
||||
#define DEFAULT_OBTAIN_DEVICE_LIST_FROM_UDEV 1
|
||||
#define DEFAULT_EXTERNAL_DEVICE_INFO_SOURCE "none"
|
||||
#define DEFAULT_SYSFS_SCAN 1
|
||||
+#define DEFAULT_DISPLAY_DM_NAME_FOR_LV_NAME 0
|
||||
#define DEFAULT_MD_COMPONENT_DETECTION 1
|
||||
#define DEFAULT_FW_RAID_COMPONENT_DETECTION 0
|
||||
#define DEFAULT_MD_CHUNK_ALIGNMENT 1
|
||||
#define DEFAULT_IGNORE_LVM_MIRRORS 1
|
||||
--- a/lib/display/display.c
|
||||
+++ b/lib/display/display.c
|
||||
@@ -461,10 +461,15 @@ int lvdisplay_full(struct cmd_context *c
|
||||
@@ -462,10 +462,15 @@ int lvdisplay_full(struct cmd_context *c
|
||||
lv->vg->cmd->dev_dir, lv->vg->name, lv->name);
|
||||
else if (lv_is_visible(lv)) {
|
||||
/* Thin pool does not have /dev/vg/name link */
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
|
||||
--- a/lib/metadata/lv_manip.c
|
||||
+++ b/lib/metadata/lv_manip.c
|
||||
@@ -2481,6 +2481,25 @@ static uint32_t _calc_required_extents(s
|
||||
@@ -2455,6 +2455,25 @@ static uint32_t _calc_required_extents(s
|
||||
return required;
|
||||
}
|
||||
|
||||
@ -37,14 +37,14 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
+ * the alloc_state and reserved areas every time.
|
||||
+ */
|
||||
+ if (required > alloc_state->areas[ix_pva - 1].used)
|
||||
+ _reserve_area(alloc_state, pva, required, ix_pva - 1,
|
||||
+ _reserve_area(ah, alloc_state, pva, required, ix_pva - 1,
|
||||
+ pva->unreserved);
|
||||
+}
|
||||
+
|
||||
static void _clear_areas(struct alloc_state *alloc_state)
|
||||
{
|
||||
uint32_t s;
|
||||
@@ -2575,6 +2594,7 @@ static int _find_some_parallel_space(str
|
||||
@@ -2580,6 +2599,7 @@ static int _find_some_parallel_space(str
|
||||
const struct alloc_parms *alloc_parms = alloc_state->alloc_parms;
|
||||
unsigned ix = 0;
|
||||
unsigned last_ix;
|
||||
@ -52,7 +52,7 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
struct pv_map *pvm;
|
||||
struct pv_area *pva;
|
||||
unsigned preferred_count = 0;
|
||||
@@ -2695,9 +2715,17 @@ static int _find_some_parallel_space(str
|
||||
@@ -2700,9 +2720,17 @@ static int _find_some_parallel_space(str
|
||||
continue;
|
||||
|
||||
case USE_AREA:
|
||||
|
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue May 19 16:30:47 UTC 2015 - jeffm@suse.com
|
||||
|
||||
- Update to 2.02.120
|
||||
- Fixed numerous bugs(see WHATS_NEW for full details)
|
||||
- Deleted dab3ebce-devices-Do-not-support-unpartitioned-DASD.patch (upstream)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 3 02:45:02 UTC 2015 - lzhong@suse.com
|
||||
|
||||
|
@ -16,8 +16,8 @@
|
||||
#
|
||||
|
||||
|
||||
%define lvm2_version 2.02.114
|
||||
%define device_mapper_version 1.02.92
|
||||
%define lvm2_version 2.02.120
|
||||
%define device_mapper_version 1.02.97
|
||||
%define thin_provisioning_version 0.4.1
|
||||
|
||||
Name: lvm2
|
||||
@ -38,8 +38,6 @@ Source16: csm-converter.tar.gz
|
||||
Source50: thin-provisioning-tools-v%{thin_provisioning_version}.tar.gz
|
||||
|
||||
# Upstream patches first
|
||||
# bsc#894202
|
||||
Patch1: dab3ebce-devices-Do-not-support-unpartitioned-DASD.patch
|
||||
|
||||
# SUSE patches 1000- for LVM, 2000- for device mapper
|
||||
Patch1001: improve_probing.diff
|
||||
@ -124,7 +122,6 @@ Volume Manager.
|
||||
%prep
|
||||
%setup -q -n LVM2.%{version} -a 50 -a 16
|
||||
|
||||
%patch1 -p1
|
||||
%patch1001 -p1
|
||||
%patch1002 -p1
|
||||
%patch1003 -p1
|
||||
@ -287,6 +284,7 @@ popd
|
||||
%dir /usr/lib/tmpfiles.d
|
||||
%ghost %{_sysconfdir}/lvm/cache/.cache
|
||||
%{_sysconfdir}/lvm/profile/*.profile
|
||||
%{_sysconfdir}/lvm/lvmlocal.conf
|
||||
%{_udevdir}/rules.d/11-dm-lvm.rules
|
||||
%{_udevdir}/rules.d/69-dm-lvm-metad.rules
|
||||
%{_unitdir}/blk-availability.service
|
||||
|
@ -19,51 +19,53 @@ always be placed on pvs with differnt tags.
|
||||
Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
---
|
||||
conf/example.conf.in | 17 +++++++++++++++++
|
||||
lib/config/config_settings.h | 1 +
|
||||
lib/config/config_settings.h | 3 +++
|
||||
lib/config/defaults.h | 1 +
|
||||
lib/metadata/lv_manip.c | 36 ++++++++++++++++++++++++++++++++++++
|
||||
lib/metadata/lv_manip.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
man/lvcreate.8.in | 4 ++++
|
||||
5 files changed, 59 insertions(+)
|
||||
5 files changed, 60 insertions(+)
|
||||
|
||||
--- a/conf/example.conf.in
|
||||
+++ b/conf/example.conf.in
|
||||
@@ -315,6 +315,23 @@ allocation {
|
||||
#
|
||||
wipe_signatures_when_zeroing_new_lvs = 1
|
||||
@@ -359,6 +359,23 @@ allocation {
|
||||
# option is used directly.
|
||||
wipe_signatures_when_zeroing_new_lvs = 1
|
||||
|
||||
+ # Set to 1 to guarantee that mirror leg will always be placed on
|
||||
+ # different PVs(with different tags) from the other mirror legs.
|
||||
+ #
|
||||
+ # If you want to enable this feature, the following conditions
|
||||
+ # must be met:
|
||||
+ # 1) The mirror_legs_require_separate_pvs must be set to 1, the
|
||||
+ # default value is 0.
|
||||
+ # 2) The cling_tag_list must be activated.
|
||||
+ # 3) The length of all pvs with same tag must greater than or equal
|
||||
+ # to the mirror's.
|
||||
+ # Set to 1 to guarantee that mirror leg will always be placed on
|
||||
+ # different PVs(with different tags) from the other mirror legs.
|
||||
+ #
|
||||
+ # If you want to enable this feature, the following conditions
|
||||
+ # must be met:
|
||||
+ # 1) The mirror_legs_require_separate_pvs must be set to 1, the
|
||||
+ # default value is 0.
|
||||
+ # 2) The cling_tag_list must be activated.
|
||||
+ # 3) The length of all pvs with same tag must greater than or equal
|
||||
+ # to the mirror's.
|
||||
+
|
||||
+ # This feature is only for the first allocation, on the other hand
|
||||
+ # when creating new mirrored lvs.
|
||||
+ # Please note that the commond may fail if the number of all tags
|
||||
+ # on the pvs less than the mirror legs number.
|
||||
+ mirror_legs_require_separate_pvs = 0
|
||||
+ # This feature is only for the first allocation, on the other hand
|
||||
+ # when creating new mirrored lvs.
|
||||
+ # Please note that the commond may fail if the number of all tags
|
||||
+ # on the pvs less than the mirror legs number.
|
||||
+ mirror_legs_require_separate_pvs = 0
|
||||
+
|
||||
# Set to 1 to guarantee that mirror logs will always be placed on
|
||||
# different PVs from the mirror images. This was the default
|
||||
# until version 2.02.85.
|
||||
# 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.
|
||||
--- a/lib/config/config_settings.h
|
||||
+++ b/lib/config/config_settings.h
|
||||
@@ -119,6 +119,7 @@ cfg(allocation_maximise_cling_CFG, "maxi
|
||||
cfg(allocation_use_blkid_wiping_CFG, "use_blkid_wiping", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 105), NULL)
|
||||
cfg(allocation_wipe_signatures_when_zeroing_new_lvs_CFG, "wipe_signatures_when_zeroing_new_lvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 105), NULL)
|
||||
cfg(allocation_mirror_logs_require_separate_pvs_CFG, "mirror_logs_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MIRROR_LOGS_REQUIRE_SEPARATE_PVS, vsn(2, 2, 85), 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)
|
||||
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)
|
||||
cfg(allocation_cache_pool_cachemode_CFG, "cache_pool_cachemode", allocation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_CACHE_POOL_CACHEMODE, vsn(2, 2, 113), NULL)
|
||||
cfg_runtime(allocation_cache_pool_chunk_size_CFG, "cache_pool_chunk_size", allocation_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, vsn(2, 2, 106), NULL)
|
||||
@@ -457,6 +457,9 @@ cfg(allocation_mirror_logs_require_separ
|
||||
"Mirror logs and images will always use different PVs.\n"
|
||||
"The default setting changed in version 2.02.85.\n")
|
||||
|
||||
+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,
|
||||
"Cache pool metadata and data will always use different PVs.\n")
|
||||
|
||||
--- a/lib/config/defaults.h
|
||||
+++ b/lib/config/defaults.h
|
||||
@@ -125,6 +125,7 @@
|
||||
@@ -132,6 +132,7 @@
|
||||
#define DEFAULT_MAX_LV 0
|
||||
#define DEFAULT_ALLOC_POLICY ALLOC_NORMAL
|
||||
#define DEFAULT_MIRROR_LOGS_REQUIRE_SEPARATE_PVS 0
|
||||
@ -73,7 +75,7 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
|
||||
--- a/lib/metadata/lv_manip.c
|
||||
+++ b/lib/metadata/lv_manip.c
|
||||
@@ -1409,6 +1409,9 @@ struct alloc_handle {
|
||||
@@ -1447,6 +1447,9 @@ struct alloc_handle {
|
||||
|
||||
unsigned maximise_cling;
|
||||
unsigned mirror_logs_separate; /* Force mirror logs on separate PVs? */
|
||||
@ -83,28 +85,10 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
|
||||
/*
|
||||
* RAID devices require a metadata area that accompanies each
|
||||
@@ -1598,6 +1601,7 @@ static struct alloc_handle *_alloc_init(
|
||||
ah->parity_count = parity_count;
|
||||
ah->region_size = region_size;
|
||||
ah->alloc = alloc;
|
||||
+ ah->segtype = segtype;
|
||||
|
||||
/*
|
||||
* For the purposes of allocation, area_count and parity_count are
|
||||
@@ -1609,6 +1613,7 @@ static struct alloc_handle *_alloc_init(
|
||||
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);
|
||||
+ ah->mirror_legs_separate = find_config_tree_bool(cmd, allocation_mirror_legs_require_separate_pvs_CFG, NULL);
|
||||
|
||||
if (mirrors || stripes)
|
||||
total_extents = new_extents;
|
||||
@@ -2533,6 +2538,33 @@ static void _report_needed_allocation_sp
|
||||
(metadata_count == 1) ? "" : "s",
|
||||
metadata_size);
|
||||
@@ -2542,6 +2545,32 @@ static int _limit_to_one_area_per_tag(st
|
||||
}
|
||||
+
|
||||
+/*
|
||||
|
||||
/*
|
||||
+ * Return -1 if we don't need check tags, or there aren't any areas in alloc_status
|
||||
+ * have the same tag with pva, the index otherwise.
|
||||
+ */
|
||||
@ -130,10 +114,11 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
+/*
|
||||
* Returns 1 regardless of whether any space was found, except on error.
|
||||
*/
|
||||
@@ -2663,6 +2695,10 @@ static int _find_some_parallel_space(str
|
||||
static int _find_some_parallel_space(struct alloc_handle *ah,
|
||||
@@ -2671,6 +2700,10 @@ static int _find_some_parallel_space(str
|
||||
continue;
|
||||
|
||||
case USE_AREA:
|
||||
@ -144,16 +129,32 @@ Signed-off-by: Guangliang Zhao <gzhao@suse.com>
|
||||
/*
|
||||
* Except with ALLOC_ANYWHERE, replace first area with this
|
||||
* one which is smaller but still big enough.
|
||||
@@ -3151,6 +3184,7 @@ static struct alloc_handle *_alloc_init(
|
||||
ah->parity_count = parity_count;
|
||||
ah->region_size = region_size;
|
||||
ah->alloc = alloc;
|
||||
+ ah->segtype = segtype;
|
||||
|
||||
/*
|
||||
* For the purposes of allocation, area_count and parity_count are
|
||||
@@ -3162,6 +3196,7 @@ static struct alloc_handle *_alloc_init(
|
||||
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);
|
||||
+ ah->mirror_legs_separate = find_config_tree_bool(cmd, allocation_mirror_legs_require_separate_pvs_CFG, NULL);
|
||||
|
||||
if (mirrors || stripes)
|
||||
total_extents = new_extents;
|
||||
--- a/man/lvcreate.8.in
|
||||
+++ b/man/lvcreate.8.in
|
||||
@@ -284,6 +284,10 @@ will create a persistent log that is its
|
||||
Using \fIcore\fP means the mirror is regenerated by copying the data
|
||||
@@ -333,6 +333,10 @@ Using \fIcore\fP means the mirror is reg
|
||||
from the first device each time the logical volume is activated,
|
||||
like after every reboot.
|
||||
+.br
|
||||
.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
|
||||
+.br
|
||||
Using \fImirrored\fP will create a persistent log that is itself mirrored.
|
||||
.TP
|
||||
.BR \-\-monitor " {" \fIy | \fIn }
|
||||
|
Loading…
Reference in New Issue
Block a user