diff --git a/10-dm.rules-Reset-state-variable-for-spurious-events.patch b/10-dm.rules-Reset-state-variable-for-spurious-events.patch index 6121be3..8c0c9c9 100644 --- a/10-dm.rules-Reset-state-variable-for-spurious-events.patch +++ b/10-dm.rules-Reset-state-variable-for-spurious-events.patch @@ -1,9 +1,24 @@ +From de73c1ab474661307d87b3bcfe442fd9f3e31233 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 19 Aug 2016 16:16:13 +0200 +Subject: [PATCH] 10-dm.rules: Reset state variables for spurious events + +When spurious events are generated we need to ensure to always +present the same information than the original event; otherwise +systemd might be thinking the device to be non-functional and +will take unwanted action (like unmounting it). + References: bsc#932300 + +Signed-off-by: Hannes Reinecke --- -Index: LVM2.2.02.152/udev/10-dm.rules.in + udev/10-dm.rules.in | 5 +++++ + 1 file changed, 5 insertions(+) + +Index: LVM2.2.02.165/udev/10-dm.rules.in =================================================================== ---- LVM2.2.02.152.orig/udev/10-dm.rules.in -+++ LVM2.2.02.152/udev/10-dm.rules.in +--- LVM2.2.02.165.orig/udev/10-dm.rules.in ++++ LVM2.2.02.165/udev/10-dm.rules.in @@ -138,6 +138,11 @@ ENV{DM_UDEV_RULES_VSN}="2" ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="(DM_DIR)/$env{DM_NAME}" diff --git a/69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch b/69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch new file mode 100644 index 0000000..cf18b39 --- /dev/null +++ b/69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch @@ -0,0 +1,31 @@ +From e8d52bf13bc4529172632c49c84a80e315741862 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 19 Aug 2016 16:19:55 +0200 +Subject: 69-dm-lvm-metad.rules: Do not process rules for multipath devices + +When the device is a multipath device lvm metad should not process +it; doing so will reset the 'SYSTEMD_READY' flag and the multipath +setup will not work correctly. + +References: bsc#990538, bsc#986734 + +Signed-off-by: Hannes Reinecke +--- + udev/69-dm-lvm-metad.rules.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in +index f0bfc1e..793a53d 100644 +--- a/udev/69-dm-lvm-metad.rules.in ++++ b/udev/69-dm-lvm-metad.rules.in +@@ -17,6 +17,7 @@ + SUBSYSTEM!="block", GOTO="lvm_end" + (LVM_EXEC_RULE) + ++ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end" + ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="lvm_end" + + # If the PV label got lost, inform lvmetad immediately. +-- +2.6.6 + diff --git a/clvmd.ocf b/clvmd.ocf index 7c093e1..7dd3826 100644 --- a/clvmd.ocf +++ b/clvmd.ocf @@ -31,9 +31,12 @@ : ${OCF_RESKEY_daemon_timeout:="80"} : ${OCF_RESKEY_daemon_options:="-d0"} +sbindir=$HA_SBIN_DIR + # Common variables -DAEMON="/usr/sbin/clvmd" -CMIRRORD="/usr/sbin/cmirrord" +DAEMON="${sbindir}/clvmd" +CMIRRORD="${sbindir}/cmirrord" +LVMCONF="${sbindir}/lvmconf" status_daemons() { @@ -100,7 +103,7 @@ bringup_cmirrord() return $OCF_ERR_INSTALLED fi - start_daemon "$CMIRRORD" "$OCF_RESKEY_daemon_options"; rc=$? + start_daemon "$CMIRRORD"; rc=$? if [ $rc != 0 ]; then ocf_log err "Could not start $CMIRRORD" return $OCF_ERR_GENERIC @@ -198,6 +201,11 @@ clvmd_start() clvmd_validate ocf_log info "Starting $OCF_RESOURCE_INSTANCE" + # autoset locking type to clusted when lvmconf tool is available + if [ -x "$LVMCONF" ]; then + $LVMCONF --enable-cluster > /dev/null 2>&1 + fi + status_clvmd; rc=$? if [ $rc == $OCF_NOT_RUNNING ]; then bringup_clvmd; rc=$? @@ -294,7 +302,7 @@ Number of seconds to allow the control daemon to come up and down Options to clvmd. Refer to clvmd.8 for detailed descriptions. Daemon Options - + diff --git a/cmirrord.ocf b/cmirrord.ocf index 1c1e0b2..91f63d4 100644 --- a/cmirrord.ocf +++ b/cmirrord.ocf @@ -29,10 +29,11 @@ # Parameter defaults : ${OCF_RESKEY_CRM_meta_globally_unique:="false"} : ${OCF_RESKEY_daemon_timeout:="80"} -: ${OCF_RESKEY_daemon_options:="-d0"} + +sbindir=$HA_SBIN_DIR # Common variables -DAEMON="/usr/sbin/cmirrord" +DAEMON="${sbindir}/cmirrord" status_daemon() { @@ -50,7 +51,7 @@ bringup_daemon() return $OCF_ERR_INSTALLED fi - start_daemon "$DAEMON" "$OCF_RESKEY_daemon_options"; rc=$? + start_daemon "$DAEMON"; rc=$? if [ $rc != 0 ]; then ocf_log err "Could not start $DAEMON" return $OCF_ERR_GENERIC diff --git a/device-mapper-link.patch b/device-mapper-link.patch index e489f0d..5d59ca5 100644 --- a/device-mapper-link.patch +++ b/device-mapper-link.patch @@ -1,17 +1,22 @@ -Make sure +From 90d6f1d65de4c314af1aab1e0deddcb0d64bbd06 Mon Sep 17 00:00:00 2001 +From: Neil Brown +Date: Fri, 19 Aug 2016 16:13:09 +0200 +Subject: [PATCH] Always create /dev/device-mapper link + +Make sure /dev/device-mapper exists as a link to /dev/mapper/control Resolves: bnc#724578 Signed-off-by: NeilBrown --- - udev/10-dm.rules.in | 2 +- + udev/10-dm.rules.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: LVM2.2.02.152/udev/10-dm.rules.in +Index: LVM2.2.02.165/udev/10-dm.rules.in =================================================================== ---- LVM2.2.02.152.orig/udev/10-dm.rules.in -+++ LVM2.2.02.152/udev/10-dm.rules.in +--- LVM2.2.02.165.orig/udev/10-dm.rules.in ++++ LVM2.2.02.165/udev/10-dm.rules.in @@ -28,7 +28,7 @@ # Also, keep in mind that recent rules may also require recent # subsystem-specific binaries. diff --git a/device-mapper-type_punning.diff b/device-mapper-type_punning.diff index 4d1b610..0fb8791 100644 --- a/device-mapper-type_punning.diff +++ b/device-mapper-type_punning.diff @@ -1,3 +1,6 @@ +From: Hannes Reinecke +Subject: Use type-punning for device-mapper type + --- lib/device/device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device-mapper.changes b/device-mapper.changes index c02338f..9a7fab2 100644 --- a/device-mapper.changes +++ b/device-mapper.changes @@ -1,3 +1,42 @@ +------------------------------------------------------------------- +Fri Sep 9 09:24:19 UTC 2016 - tchvatal@suse.com + +- This is sync commit from Leap/SLE12 only +- Add patch pvcreate-enhance-the-error-message.patch bsc#960744 +- Modify GPL-2.0 to GPL-2.0+ and LGPL-2.1 to LGPL-2.1+ to avoid + license conflict with thin-provisioning-tools which is using GPL-3.0 +- Also contains fix for bsc#969310 +- Fix clvmd.ocf and cmirrord to remove "-d" option for cmirrod + (bsc#971334) +- Fix clvmd.ocf to add lvmconf --enable-cluster before start daemon + when locking_type is not 3 or use_lvmetad is 1 in setting + (bsc#970439) +- Modified spec to enable blkid-wiping (fate#319908) +- Fix clvmd binary not found in case that users still use RA from + ocf:lvm2:clvm (bsc#980200) + Add sbindir=$HA_SBIN_DIR for clvmd.ocf and cmirrord.ocf +- The bsc#979635 wnd bsc#991181 as fixed in past thanks to proper /usr + migration code +- Modified raid10_segtype_default from "mirror" to "raid10"(bsc#982329) +- Remove lvm2-clvmd/cmirrord.service and related activation services + from %service_add _pre/post/preun/postun because we start clvmd + /clmirrord and activate via pacemaker and RA. (bsc#980296) +- Lvchange improve refresh by trying to deactivate snapshot thinLV + in case it's preventing merge process change integrated upstream. + (bsc#984321) +- Fixed in past bsc#992843 +- Fixed by upstream bsc#984321 +- Fixed by upstream bsc#970943 +- 69-dm-lvm-metad.rules: Do not process rules for multipath + devices (bsc#bsc#990538, bsc#986734) + Add: 69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch +- Rewrite patches to include patch header: + * 10-dm.rules-Reset-state-variable-for-spurious-events.patch + * device-mapper-link + * device-mapper-type_punning.diff + * udev_rules-update.diff +- Sync also lvm.conf + ------------------------------------------------------------------- Fri Sep 2 08:23:06 UTC 2016 - tchvatal@suse.com @@ -6,6 +45,8 @@ Fri Sep 2 08:23:06 UTC 2016 - tchvatal@suse.com * Refresh fuzz on patch: + make-mirror-legs-on-different-tag-pvs.patch + cluster_support_mirrord_log.diff +- Update patch to use correct api: + + make-mirror-legs-on-different-tag-pvs.patch ------------------------------------------------------------------- Fri Jul 8 13:43:41 UTC 2016 - tchvatal@suse.com diff --git a/device-mapper.spec b/device-mapper.spec index a0567fa..a48b182 100644 --- a/device-mapper.spec +++ b/device-mapper.spec @@ -18,7 +18,7 @@ ### COMMON-DEF-BEGIN ### %define lvm2_version 2.02.165 -%define device_mapper_version 1.02.133 +%define device_mapper_version 1.02.134 ### COMMON-DEF-END ### %define libname libdevmapper1_03 %define libname_event libdevmapper-event1_03 @@ -26,7 +26,7 @@ Name: device-mapper Version: %{device_mapper_version} Release: 0 Summary: Device Mapper Tools -License: GPL-2.0 and LGPL-2.1 +License: GPL-2.0+ and LGPL-2.1+ Group: System/Base Url: http://www.sourceware.org/lvm2/ Source: ftp://sources.redhat.com/pub/lvm2/LVM2.%{lvm2_version}.tgz @@ -72,6 +72,10 @@ Patch2005: fsadm-add-support-for-btrfs.patch Patch2006: Import-ID_FS_XXX-variables-bnc909358.patch Patch2007: 10-dm.rules-Reset-state-variable-for-spurious-events.patch Patch2008: libdm-iface-not-output-error-message-inside-retry-loop.patch +# bnc#960744 +Patch2009: pvcreate-enhance-the-error-message.patch +# bnc#990538 bnc#986734 +Patch2010: 69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch ### COMMON-PATCH-END ### BuildRequires: gcc-c++ BuildRequires: pkgconfig @@ -145,6 +149,8 @@ Files needed for software development using the device mapper %patch2006 -p1 %patch2007 -p1 %patch2008 -p1 +%patch2009 -p1 +%patch2010 -p1 ### COMMON-PREP-END ### %build diff --git a/lvm.conf b/lvm.conf index e1fc956..be25eaa 100644 --- a/lvm.conf +++ b/lvm.conf @@ -23,6 +23,9 @@ config { # If enabled, any configuration mismatch aborts the LVM2 process. abort_on_errors = 0 + + # Directory where LVM looks for configuration profiles. + profile_dir = "/etc/lvm/profile" } # This section allows you to configure which block devices should @@ -50,11 +53,30 @@ devices { # same block device and the tools need to display a name for device, # all the pathnames are matched against each item in the following # list of regular expressions in turn and the first match is used. - preferred_names = [ ] + + # By default no preferred names are defined. + # preferred_names = [ ] # Try to avoid using undescriptive /dev/dm-N names, if present. # preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ] + # In case no prefererred name matches or if preferred_names are not + # defined at all, builtin rules are used to determine the preference. + # + # The first builtin rule checks path prefixes and it gives preference + # based on this ordering (where "dev" depends on devices/dev setting): + # /dev/mapper > /dev/disk > /dev/dm-* > /dev/block + # + # If the ordering above cannot be applied, the path with fewer slashes + # gets preference then. + # + # If the number of slashes is the same, a symlink gets preference. + # + # Finally, if all the rules mentioned above are not applicable, + # lexicographical order is used over paths and the smallest one + # of all gets preference. + + # A filter that tells LVM2 to only use a restricted set of devices. # The filter consists of an array of regular expressions. These # expressions can be delimited by a character of your choice, and @@ -72,7 +94,7 @@ devices { # accepted. # By default we accept every block device except udev names, floppy and cdrom drives: - filter = [ "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|","r|/dev/fd.*|", "r|/dev/cdrom|", "a/.*/" ] + filter = [ "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|", "r|/dev/fd.*|", "r|/dev/cdrom|", "a/.*/" ] # Exclude the cdrom drive # filter = [ "r|/dev/cdrom|" ] @@ -86,7 +108,7 @@ devices { # Use anchors if you want to be really specific # filter = [ "a|^/dev/hda8$|", "r/.*/" ] - # Since "filter" is often overriden from command line, it is not suitable + # Since "filter" is often overridden from command line, it is not suitable # for system-wide device filtering (udev rules, lvmetad). To hide devices # from LVM-specific udev processing and/or from lvmetad, you need to set # global_filter. The syntax is the same as for normal "filter" @@ -119,7 +141,7 @@ devices { # If sysfs is mounted (2.6 kernels) restrict device scanning to # the block devices it believes are valid. # 1 enables; 0 disables. - sysfs_scan = 1 + sysfs_scan = 1 # By default, LVM2 will ignore devices used as component paths # of device-mapper multipath devices. @@ -174,6 +196,35 @@ devices { # in recovery situations. ignore_suspended_devices = 0 + # ignore_lvm_mirrors: Introduced in version 2.02.104 + # This setting determines whether logical volumes of "mirror" segment + # type are scanned for LVM labels. This affects the ability of + # mirrors to be used as physical volumes. If 'ignore_lvm_mirrors' + # is set to '1', it becomes impossible to create volume groups on top + # of mirror logical volumes - i.e. to stack volume groups on mirrors. + # + # Allowing mirror logical volumes to be scanned (setting the value to '0') + # can potentially cause LVM processes and I/O to the mirror to become + # blocked. This is due to the way that the "mirror" segment type handles + # failures. In order for the hang to manifest itself, an LVM command must + # be run just after a failure and before the automatic LVM repair process + # takes place OR there must be failures in multiple mirrors in the same + # volume group at the same time with write failures occurring moments + # before a scan of the mirror's labels. + # + # Note that these scanning limitations do not apply to the LVM RAID + # types, like "raid1". The RAID segment types handle failures in a + # different way and are not subject to possible process or I/O blocking. + # + # It is encouraged that users set 'ignore_lvm_mirrors' to 1 if they + # are using the "mirror" segment type. Users that require volume group + # stacking on mirrored logical volumes should consider using the "raid1" + # segment type. The "raid1" segment type is not available for + # active/active clustered volume groups. + # + # Set to 1 to disallow stacking and thereby avoid a possible deadlock. + ignore_lvm_mirrors = 1 + # During each LVM operation errors received from each device are counted. # If the counter of a particular device exceeds the limit set here, no # further I/O is sent to that device for the remainder of the respective @@ -231,24 +282,78 @@ allocation { # algorithm. maximise_cling = 1 + # Whether to use blkid library instead of native LVM2 code to detect + # any existing signatures while creating new Physical Volumes and + # Logical Volumes. LVM2 needs to be compiled with blkid wiping support + # for this setting to take effect. + # + # LVM2 native detection code is currently able to recognize these signatures: + # - MD device signature + # - swap signature + # - LUKS signature + # To see the list of signatures recognized by blkid, check the output + # of 'blkid -k' command. The blkid can recognize more signatures than + # LVM2 native detection code, but due to this higher number of signatures + # to be recognized, it can take more time to complete the signature scan. + use_blkid_wiping = 1 + + # Set to 1 to wipe any signatures found on newly-created Logical Volumes + # automatically in addition to zeroing of the first KB on the LV + # (controlled by the -Z/--zero y option). + # The command line option -W/--wipesignatures takes precedence over this + # setting. + # The default is to wipe signatures when zeroing. + # + wipe_signatures_when_zeroing_new_lvs = 1 + # 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. mirror_logs_require_separate_pvs = 0 + # Set to 1 to guarantee that cache_pool metadata will always be + # placed on different PVs from the cache_pool data. + cache_pool_metadata_require_separate_pvs = 0 + + # Specify the minimal chunk size (in kiB) for cache pool volumes. + # Using a chunk_size that is too large can result in wasteful use of + # the cache, where small reads and writes can cause large sections of + # an LV to be mapped into the cache. However, choosing a chunk_size + # that is too small can result in more overhead trying to manage the + # numerous chunks that become mapped into the cache. The former is + # more of a problem than the latter in most cases, so we default to + # a value that is on the smaller end of the spectrum. Supported values + # range from 32(kiB) to 1048576 in multiples of 32. + # cache_pool_chunk_size = 64 + # Set to 1 to guarantee that thin pool metadata will always # be placed on different PVs from the pool data. thin_pool_metadata_require_separate_pvs = 0 + # Specify chunk size calculation policy for thin pool volumes. + # Possible options are: + # "generic" - if thin_pool_chunk_size is defined, use it. + # Otherwise, calculate the chunk size based on + # estimation and device hints exposed in sysfs: + # the minimum_io_size. The chunk size is always + # at least 64KiB. + # + # "performance" - if thin_pool_chunk_size is defined, use it. + # Otherwise, calculate the chunk size for + # performance based on device hints exposed in + # sysfs: the optimal_io_size. The chunk size is + # always at least 512KiB. + # thin_pool_chunk_size_policy = "generic" + # Specify the minimal chunk size (in KB) for thin pool volumes. - # Use of the larger chunk size may improve perfomance for plain + # Use of the larger chunk size may improve performance for plain # thin volumes, however using them for snapshot volumes is less efficient, # as it consumes more space and takes extra time for copying. # When unset, lvm tries to estimate chunk size starting from 64KB # Supported values are in range from 64 to 1048576. # thin_pool_chunk_size = 64 - # Specify discards behavior of the thin pool volume. + # Specify discards behaviour of the thin pool volume. # Select one of "ignore", "nopassdown", "passdown" # thin_pool_discards = "passdown" @@ -293,7 +398,7 @@ log { # There are 6 syslog-like log levels currently in use - 2 to 7 inclusive. # 7 is the most verbose (LOG_DEBUG). level = 0 - + # Format of output messages # Whether or not (1 or 0) to indent messages according to their severity indent = 1 @@ -321,14 +426,13 @@ log { # memory, devices, activation, allocation, lvmetad, metadata, cache, # locking # Use "all" to see everything. - debug_classes = [ "memory", "devices", "activation", "allocation", - "lvmetad", "metadata", "cache", "locking" ] + debug_classes = [ "memory", "devices", "activation", "allocation", "lvmetad", "metadata", "cache", "locking" ] } # Configuration of metadata backups and archiving. In LVM2 when we # talk about a 'backup' we mean making a copy of the metadata for the # *current* system. The 'archive' contains old metadata configurations. -# Backups are stored in a human readeable text format. +# Backups are stored in a human readable text format. backup { # Should we maintain a backup of the current metadata configuration ? @@ -366,7 +470,6 @@ shell { # Miscellaneous global LVM2 settings global { - # The file creation mask for any files and directories created. # Interpreted as octal if the first digit is zero. umask = 077 @@ -389,6 +492,11 @@ global { # temporarily until you update them. si_unit_consistency = 1 + # Whether or not to display unit suffix for sizes. This setting has + # no effect if the units are in human-readable form (global/units="h") + # in which case the suffix is always displayed. + suffix = 1 + # Whether or not to communicate with the kernel device-mapper. # Set to 0 if you want to use the tools to manipulate LVM metadata # without activating any logical volumes. @@ -421,6 +529,19 @@ global { # Type 3 uses built-in clustered locking. # Type 4 uses read-only locking which forbids any operations that might # change metadata. + # Type 5 offers dummy locking for tools that do not need any locks. + # You should not need to set this directly: the tools will select when + # to use it instead of the configured locking_type. Do not use lvmetad or + # the kernel device-mapper driver with this locking type. + # It is used by the --readonly option that offers read-only access to + # Volume Group metadata that cannot be locked safely because it belongs to + # an inaccessible domain and might be in use, for example a virtual machine + # image or a disk that is shared by a clustered machine. + # + # N.B. Don't use lvmetad with locking type 3 as lvmetad is not yet + # supported in clustered environment. If use_lvmetad=1 and locking_type=3 + # is set at the same time, LVM always issues a warning message about this + # and then it automatically disables lvmetad use. locking_type = 1 # Set to 0 to fail when a lock request cannot be satisfied immediately. @@ -516,11 +637,11 @@ global { # "mirror" - LVM will layer the 'mirror' and 'stripe' segment types. It # will do this by creating a mirror on top of striped sub-LVs; # effectively creating a RAID 0+1 array. This is suboptimal - # in terms of providing redunancy and performance. Changing to + # in terms of providing redundancy and performance. Changing to # this setting is not advised. # Specify the '--type ' option to override this default # setting. - raid10_segtype_default = "mirror" + raid10_segtype_default = "raid10" # The default format for displaying LV names in lvdisplay was changed # in version 2.02.89 to show the LV name and path separately. @@ -532,15 +653,38 @@ global { # Whether to use (trust) a running instance of lvmetad. If this is set to # 0, all commands fall back to the usual scanning mechanisms. When set to 1 - # *and* when lvmetad is running (it is not auto-started), the volume group - # metadata and PV state flags are obtained from the lvmetad instance and no - # scanning is done by the individual commands. In a setup with lvmetad, - # lvmetad udev rules *must* be set up for LVM to work correctly. Without - # proper udev rules, all changes in block device configuration will be - # *ignored* until a manual 'pvscan --cache' is performed. + # *and* when lvmetad is running (automatically instantiated by making use of + # systemd's socket-based service activation or run as an initscripts service + # or run manually), the volume group metadata and PV state flags are obtained + # from the lvmetad instance and no scanning is done by the individual + # commands. In a setup with lvmetad, lvmetad udev rules *must* be set up for + # LVM to work correctly. Without proper udev rules, all changes in block + # device configuration will be *ignored* until a manual 'pvscan --cache' + # is performed. These rules are installed by default. # # If lvmetad has been running while use_lvmetad was 0, it MUST be stopped # before changing use_lvmetad to 1 and started again afterwards. + # + # If using lvmetad, the volume activation is also switched to automatic + # event-based mode. In this mode, the volumes are activated based on + # incoming udev events that automatically inform lvmetad about new PVs + # that appear in the system. Once the VG is complete (all the PVs are + # present), it is auto-activated. The activation/auto_activation_volume_list + # setting controls which volumes are auto-activated (all by default). + # + # A note about device filtering while lvmetad is used: + # When lvmetad is updated (either automatically based on udev events + # or directly by pvscan --cache call), the devices/filter + # is ignored and all devices are scanned by default. The lvmetad always + # keeps unfiltered information which is then provided to LVM commands + # and then each LVM command does the filtering based on devices/filter + # setting itself. + # To prevent scanning devices completely, even when using lvmetad, + # the devices/global_filter must be used. + # N.B. Don't use lvmetad with locking type 3 as lvmetad is not yet + # supported in clustered environment. If use_lvmetad=1 and locking_type=3 + # is set at the same time, LVM always issues a warning message about this + # and then it automatically disables lvmetad use. # If use_lvmetad set to 1, please make sure lvm2-lvmetad.socket is started use_lvmetad = 0 @@ -553,11 +697,31 @@ global { # The thin tools are available as part of the device-mapper-persistent-data # package from https://github.com/jthornber/thin-provisioning-tools. # - thin_check_executable = "" + # thin_check_executable = "/usr/sbin/thin_check" - # String with options passed with thin_check command. By default, - # option '-q' is for quiet output. - thin_check_options = [ "-q" ] + # Array of string options passed with thin_check command. By default, + # option "-q" is for quiet output. + # With thin_check version 2.1 or newer you can add "--ignore-non-fatal-errors" + # to let it pass through ignorable errors and fix them later. + # With thin_check version 3.2 or newer you should add + # "--clear-needs-check-flag". + # + # thin_check_options = [ "-q", "--clear-needs-check-flag" ] + + # Full path of the utility called to repair a thin metadata device + # is in a state that allows it to be used. + # Each time a thin pool needs repair this utility is executed. + # See thin_check_executable how to obtain binaries. + # + # thin_repair_executable = "/usr/sbin/thin_repair" + + # Array of extra string options passed with thin_repair command. + # thin_repair_options = [ "" ] + + # Full path of the utility called to dump thin metadata content. + # See thin_check_executable how to obtain binaries. + # + # thin_dump_executable = "/usr/sbin/thin_dump" # If set, given features are not used by thin driver. # This can be helpful not just for testing, but i.e. allows to avoid @@ -566,8 +730,41 @@ global { # block_size # discards # discards_non_power_2 + # external_origin + # metadata_resize + # external_origin_extend # # thin_disabled_features = [ "discards", "block_size" ] + + # Full path of the utility called to check that a cache metadata device + # is in a state that allows it to be used. + # Each time a cached LV needs to be used or after it is deactivated + # this utility is executed. The activation will only proceed if the utility + # has an exit status of 0. + # Set to "" to skip this check. (Not recommended.) + # The cache tools are available as part of the device-mapper-persistent-data + # package from https://github.com/jthornber/thin-provisioning-tools. + # + # cache_check_executable = "autodetect" + + # Array of string options passed with cache_check command. By default, + # option "-q" is for quiet output. + # + # cache_check_options = [ "-q" ] + + # Full path of the utility called to repair a cache metadata device. + # Each time a cache metadata needs repair this utility is executed. + # See cache_check_executable how to obtain binaries. + # + # cache_repair_executable = "autodetect" + + # Array of extra string options passed with cache_repair command. + # cache_repair_options = [ "" ] + + # Full path of the utility called to dump cache metadata content. + # See cache_check_executable how to obtain binaries. + # + # cache_dump_executable = "autodetect" } activation { @@ -641,9 +838,36 @@ activation { # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ] # If auto_activation_volume_list is defined, each LV that is to be - # activated with the autoactivation option (--activate ay/-a ay) - # is first checked against the list. If it does not match, the LV - # is not activated. This list is checked as well as volume_list. + # activated with the autoactivation option (--activate ay/-a ay) is + # first checked against the list. There are two scenarios in which + # the autoactivation option is used: + # + # - automatic activation of volumes based on incoming PVs. If all the + # PVs making up a VG are present in the system, the autoactivation + # is triggered. This requires lvmetad (global/use_lvmetad=1) and udev + # to be running. In this case, "pvscan --cache -aay" is called + # automatically without any user intervention while processing + # udev events. Please, make sure you define auto_activation_volume_list + # properly so only the volumes you want and expect are autoactivated. + # + # - direct activation on command line with the autoactivation option. + # In this case, the user calls "vgchange --activate ay/-a ay" or + # "lvchange --activate ay/-a ay" directly. + # + # By default, the auto_activation_volume_list is not defined and all + # volumes will be activated either automatically or by using --activate ay/-a ay. + # + # N.B. The "activation/volume_list" is still honoured in all cases so even + # if the VG/LV passes the auto_activation_volume_list, it still needs to + # pass the volume_list for it to be activated in the end. + + # If auto_activation_volume_list is defined but empty, no volumes will be + # activated automatically and --activate ay/-a ay will do nothing. + # + # auto_activation_volume_list = [] + + # If auto_activation_volume_list is defined and it's not empty, only matching + # volumes will be activated either automatically or by using --activate ay/-a ay. # # "vgname" and "vgname/lvname" are matched exactly. # "@tag" matches any tag set in the LV or VG. @@ -662,8 +886,15 @@ activation { # # read_only_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ] + # Each LV can have an 'activation skip' flag stored persistently against it. + # During activation, this flag is used to decide whether such an LV is skipped. + # The 'activation skip' flag can be set during LV creation and by default it + # is automatically set for thin snapshot LVs. The 'auto_set_activation_skip' + # enables or disables this automatic setting of the flag while LVs are created. + # auto_set_activation_skip = 1 + # For RAID or 'mirror' segment types, 'raid_region_size' is the - # size (in kiB) of each: + # size (in KiB) of each: # - synchronization operation when initializing # - each copy operation when performing a 'pvmove' (using 'mirror' segtype) # This setting has replaced 'mirror_region_size' since version 2.02.99 @@ -733,7 +964,6 @@ activation { # since it would break the redundant nature of the mirror. This # policy acts like "remove" if no suitable device and space can # be allocated for the replacement. - mirror_log_fault_policy = "allocate" mirror_image_fault_policy = "remove" @@ -801,8 +1031,140 @@ activation { # are no progress reports, but the process is awoken immediately the # operation is complete. polling_interval = 15 + + # 'activation_mode' determines how Logical Volumes are activated if + # any devices are missing. Possible settings are: + # + # "complete" - Only allow activation of an LV if all of the Physical + # Volumes it uses are present. Other PVs in the Volume + # Group may be missing. + # + # "degraded" - Like "complete", but additionally RAID Logical Volumes of + # segment type raid1, raid4, raid5, radid6 and raid10 will + # be activated if there is no data loss, i.e. they have + # sufficient redundancy to present the entire addressable + # range of the Logical Volume. + # + # "partial" - Allows the activation of any Logical Volume even if + # a missing or failed PV could cause data loss with a + # portion of the Logical Volume inaccessible. + # This setting should not normally be used, but may + # sometimes assist with data recovery. + # + # This setting was introduced in LVM version 2.02.108. It corresponds + # with the '--activationmode' option for lvchange and vgchange. + activation_mode = "degraded" } +# Report settings. +# +# report { + # Align columns on report output. + # aligned=1 + + # When buffered reporting is used, the report's content is appended + # incrementally to include each object being reported until the report + # is flushed to output which normally happens at the end of command + # execution. Otherwise, if buffering is not used, each object is + # reported as soon as its processing is finished. + # buffered=1 + + # Show headings for columns on report. + # headings=1 + + # A separator to use on report after each field. + # separator=" " + + # A separator to use for list items when reported. + # list_item_separator="," + + # Use a field name prefix for each field reported. + # prefixes=0 + + # Quote field values when using field name prefixes. + # quoted=1 + + # Output each column as a row. If set, this also implies report/prefixes=1. + # colums_as_rows=0 + + # Use binary values "0" or "1" instead of descriptive literal values for + # columns that have exactly two valid values to report (not counting the + # "unknown" value which denotes that the value could not be determined). + # + # binary_values_as_numeric = 0 + + # Comma separated list of columns to sort by when reporting 'lvm devtypes' command. + # See 'lvm devtypes -o help' for the list of possible fields. + # devtypes_sort="devtype_name" + + # Comma separated list of columns to report for 'lvm devtypes' command. + # See 'lvm devtypes -o help' for the list of possible fields. + # devtypes_cols="devtype_name,devtype_max_partitions,devtype_description" + + # Comma separated list of columns to report for 'lvm devtypes' command in verbose mode. + # See 'lvm devtypes -o help' for the list of possible fields. + # devtypes_cols_verbose="devtype_name,devtype_max_partitions,devtype_description" + + # Comma separated list of columns to sort by when reporting 'lvs' command. + # See 'lvs -o help' for the list of possible fields. + # lvs_sort="vg_name,lv_name" + + # Comma separated list of columns to report for 'lvs' command. + # See 'lvs -o help' for the list of possible fields. + # lvs_cols="lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,data_percent,metadata_percent,move_pv,mirror_log,copy_percent,convert_lv" + + # Comma separated list of columns to report for 'lvs' command in verbose mode. + # See 'lvs -o help' for the list of possible fields. + # lvs_cols_verbose="lv_name,vg_name,seg_count,lv_attr,lv_size,lv_major,lv_minor,lv_kernel_major,lv_kernel_minor,pool_lv,origin,data_percent,metadata_percent,move_pv,copy_percent,mirror_log,convert + + # Comma separated list of columns to sort by when reporting 'vgs' command. + # See 'vgs -o help' for the list of possible fields. + # vgs_sort="vg_name" + + # Comma separated list of columns to report for 'vgs' command. + # See 'vgs -o help' for the list of possible fields. + # vgs_cols="vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free" + + # Comma separated list of columns to report for 'vgs' command in verbose mode. + # See 'vgs -o help' for the list of possible fields. + # vgs_cols_verbose="vg_name,vg_attr,vg_extent_size,pv_count,lv_count,snap_count,vg_size,vg_free,vg_uuid,vg_profile" + + # Comma separated list of columns to sort by when reporting 'pvs' command. + # See 'pvs -o help' for the list of possible fields. + # pvs_sort="pv_name" + + # Comma separated list of columns to report for 'pvs' command. + # See 'pvs -o help' for the list of possible fields. + # pvs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free" + + # Comma separated list of columns to report for 'pvs' command in verbose mode. + # See 'pvs -o help' for the list of possible fields. + # pvs_cols_verbose="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,dev_size,pv_uuid" + + # Comma separated list of columns to sort by when reporting 'lvs --segments' command. + # See 'lvs --segments -o help' for the list of possible fields. + # segs_sort="vg_name,lv_name,seg_start" + + # Comma separated list of columns to report for 'lvs --segments' command. + # See 'lvs --segments -o help' for the list of possible fields. + # segs_cols="lv_name,vg_name,lv_attr,stripes,segtype,seg_size" + + # Comma separated list of columns to report for 'lvs --segments' command in verbose mode. + # See 'lvs --segments -o help' for the list of possible fields. + # segs_cols_verbose="lv_name,vg_name,lv_attr,seg_start,seg_size,stripes,segtype,stripesize,chunksize" + + # Comma separated list of columns to sort by when reporting 'pvs --segments' command. + # See 'pvs --segments -o help' for the list of possible fields. + # pvsegs_sort="pv_name,pvseg_start" + + # Comma separated list of columns to sort by when reporting 'pvs --segments' command. + # See 'pvs --segments -o help' for the list of possible fields. + # pvsegs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size" + + # Comma separated list of columns to sort by when reporting 'pvs --segments' command in verbose mode. + # See 'pvs --segments -o help' for the list of possible fields. + # pvsegs_cols_verbose="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size,lv_name,seg_start_pe,segtype,seg_pe_ranges" +#} #################### # Advanced section # @@ -812,11 +1174,23 @@ activation { # # metadata { # Default number of copies of metadata to hold on each PV. 0, 1 or 2. - # It's best to leave this at 2. - # You might want to override it from the command line with 0 or 1 + # You might want to override it from the command line with 0 # when running pvcreate on new PVs which are to be added to large VGs. - # pvmetadatacopies = 2 + # pvmetadatacopies = 1 + + # Default number of copies of metadata to maintain for each VG. + # If set to a non-zero value, LVM automatically chooses which of + # the available metadata areas to use to achieve the requested + # number of copies of the VG metadata. If you set a value larger + # than the the total number of metadata areas available then + # metadata is stored in them all. + # The default value of 0 ("unmanaged") disables this automatic + # management and allows you to control which metadata areas + # are used at the individual PV level using 'pvchange + # --metadataignore y/n'. + + # vgmetadatacopies = 0 # Approximate default size of on-disk metadata areas in sectors. # You should increase this if you have large volume groups or diff --git a/lvm2-clvm.changes b/lvm2-clvm.changes index c02338f..9a7fab2 100644 --- a/lvm2-clvm.changes +++ b/lvm2-clvm.changes @@ -1,3 +1,42 @@ +------------------------------------------------------------------- +Fri Sep 9 09:24:19 UTC 2016 - tchvatal@suse.com + +- This is sync commit from Leap/SLE12 only +- Add patch pvcreate-enhance-the-error-message.patch bsc#960744 +- Modify GPL-2.0 to GPL-2.0+ and LGPL-2.1 to LGPL-2.1+ to avoid + license conflict with thin-provisioning-tools which is using GPL-3.0 +- Also contains fix for bsc#969310 +- Fix clvmd.ocf and cmirrord to remove "-d" option for cmirrod + (bsc#971334) +- Fix clvmd.ocf to add lvmconf --enable-cluster before start daemon + when locking_type is not 3 or use_lvmetad is 1 in setting + (bsc#970439) +- Modified spec to enable blkid-wiping (fate#319908) +- Fix clvmd binary not found in case that users still use RA from + ocf:lvm2:clvm (bsc#980200) + Add sbindir=$HA_SBIN_DIR for clvmd.ocf and cmirrord.ocf +- The bsc#979635 wnd bsc#991181 as fixed in past thanks to proper /usr + migration code +- Modified raid10_segtype_default from "mirror" to "raid10"(bsc#982329) +- Remove lvm2-clvmd/cmirrord.service and related activation services + from %service_add _pre/post/preun/postun because we start clvmd + /clmirrord and activate via pacemaker and RA. (bsc#980296) +- Lvchange improve refresh by trying to deactivate snapshot thinLV + in case it's preventing merge process change integrated upstream. + (bsc#984321) +- Fixed in past bsc#992843 +- Fixed by upstream bsc#984321 +- Fixed by upstream bsc#970943 +- 69-dm-lvm-metad.rules: Do not process rules for multipath + devices (bsc#bsc#990538, bsc#986734) + Add: 69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch +- Rewrite patches to include patch header: + * 10-dm.rules-Reset-state-variable-for-spurious-events.patch + * device-mapper-link + * device-mapper-type_punning.diff + * udev_rules-update.diff +- Sync also lvm.conf + ------------------------------------------------------------------- Fri Sep 2 08:23:06 UTC 2016 - tchvatal@suse.com @@ -6,6 +45,8 @@ Fri Sep 2 08:23:06 UTC 2016 - tchvatal@suse.com * Refresh fuzz on patch: + make-mirror-legs-on-different-tag-pvs.patch + cluster_support_mirrord_log.diff +- Update patch to use correct api: + + make-mirror-legs-on-different-tag-pvs.patch ------------------------------------------------------------------- Fri Jul 8 13:43:41 UTC 2016 - tchvatal@suse.com diff --git a/lvm2-clvm.spec b/lvm2-clvm.spec index 3689b3b..ffc25cb 100644 --- a/lvm2-clvm.spec +++ b/lvm2-clvm.spec @@ -18,13 +18,13 @@ ### COMMON-DEF-BEGIN ### %define lvm2_version 2.02.165 -%define device_mapper_version 1.02.133 +%define device_mapper_version 1.02.134 ### COMMON-DEF-END ### Name: lvm2-clvm Version: %{lvm2_version} Release: 0 Summary: Clustered LVM2 -License: GPL-2.0 and LGPL-2.1 +License: GPL-2.0+ and LGPL-2.1+ Group: Productivity/Clustering/HA Url: http://sources.redhat.com/cluster/clvm/ Source: ftp://sources.redhat.com/pub/lvm2/LVM2.%{lvm2_version}.tgz @@ -71,6 +71,10 @@ Patch2005: fsadm-add-support-for-btrfs.patch Patch2006: Import-ID_FS_XXX-variables-bnc909358.patch Patch2007: 10-dm.rules-Reset-state-variable-for-spurious-events.patch Patch2008: libdm-iface-not-output-error-message-inside-retry-loop.patch +# bnc#960744 +Patch2009: pvcreate-enhance-the-error-message.patch +# bnc#990538 bnc#986734 +Patch2010: 69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch ### COMMON-PATCH-END ### BuildRequires: libcorosync-devel BuildRequires: libdlm-devel @@ -129,6 +133,8 @@ A daemon for using LVM2 Logival Volumes in a clustered environment. %patch2006 -p1 %patch2007 -p1 %patch2008 -p1 +%patch2009 -p1 +%patch2010 -p1 ### COMMON-PREP-END ### %build @@ -187,30 +193,6 @@ rm %{buildroot}%{_unitdir}/dm-event.socket rm %{buildroot}%{_unitdir}/lvm2-monitor.service rm %{buildroot}%{_mandir}/man8/lvm2-activation-generator.8 -%pre -%service_add_pre lvm2-cluster-activation.service lvm2-clvmd.service - -%post -%service_add_post lvm2-cluster-activation.service lvm2-clvmd.service - -%preun -%service_del_preun lvm2-cluster-activation.service lvm2-clvmd.service - -%postun -%service_del_postun lvm2-cluster-activation.service lvm2-clvmd.service - -%pre -n lvm2-cmirrord -%service_add_pre lvm2-cmirrord.service lvm2-cluster-activation.service - -%post -n lvm2-cmirrord -%service_add_post lvm2-cmirrord.service lvm2-cluster-activation.service - -%preun -n lvm2-cmirrord -%service_del_preun lvm2-cmirrord.service lvm2-cluster-activation.service - -%postun -n lvm2-cmirrord -%service_del_postun lvm2-cmirrord.service lvm2-cluster-activation.service - %files %defattr(-,root,root) %{_sbindir}/clvmd diff --git a/lvm2.changes b/lvm2.changes index c02338f..9a7fab2 100644 --- a/lvm2.changes +++ b/lvm2.changes @@ -1,3 +1,42 @@ +------------------------------------------------------------------- +Fri Sep 9 09:24:19 UTC 2016 - tchvatal@suse.com + +- This is sync commit from Leap/SLE12 only +- Add patch pvcreate-enhance-the-error-message.patch bsc#960744 +- Modify GPL-2.0 to GPL-2.0+ and LGPL-2.1 to LGPL-2.1+ to avoid + license conflict with thin-provisioning-tools which is using GPL-3.0 +- Also contains fix for bsc#969310 +- Fix clvmd.ocf and cmirrord to remove "-d" option for cmirrod + (bsc#971334) +- Fix clvmd.ocf to add lvmconf --enable-cluster before start daemon + when locking_type is not 3 or use_lvmetad is 1 in setting + (bsc#970439) +- Modified spec to enable blkid-wiping (fate#319908) +- Fix clvmd binary not found in case that users still use RA from + ocf:lvm2:clvm (bsc#980200) + Add sbindir=$HA_SBIN_DIR for clvmd.ocf and cmirrord.ocf +- The bsc#979635 wnd bsc#991181 as fixed in past thanks to proper /usr + migration code +- Modified raid10_segtype_default from "mirror" to "raid10"(bsc#982329) +- Remove lvm2-clvmd/cmirrord.service and related activation services + from %service_add _pre/post/preun/postun because we start clvmd + /clmirrord and activate via pacemaker and RA. (bsc#980296) +- Lvchange improve refresh by trying to deactivate snapshot thinLV + in case it's preventing merge process change integrated upstream. + (bsc#984321) +- Fixed in past bsc#992843 +- Fixed by upstream bsc#984321 +- Fixed by upstream bsc#970943 +- 69-dm-lvm-metad.rules: Do not process rules for multipath + devices (bsc#bsc#990538, bsc#986734) + Add: 69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch +- Rewrite patches to include patch header: + * 10-dm.rules-Reset-state-variable-for-spurious-events.patch + * device-mapper-link + * device-mapper-type_punning.diff + * udev_rules-update.diff +- Sync also lvm.conf + ------------------------------------------------------------------- Fri Sep 2 08:23:06 UTC 2016 - tchvatal@suse.com @@ -6,6 +45,8 @@ Fri Sep 2 08:23:06 UTC 2016 - tchvatal@suse.com * Refresh fuzz on patch: + make-mirror-legs-on-different-tag-pvs.patch + cluster_support_mirrord_log.diff +- Update patch to use correct api: + + make-mirror-legs-on-different-tag-pvs.patch ------------------------------------------------------------------- Fri Jul 8 13:43:41 UTC 2016 - tchvatal@suse.com diff --git a/lvm2.spec b/lvm2.spec index 3e386ef..85457e4 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -18,7 +18,7 @@ ### COMMON-DEF-BEGIN ### %define lvm2_version 2.02.165 -%define device_mapper_version 1.02.133 +%define device_mapper_version 1.02.134 ### COMMON-DEF-END ### %define _udevdir %(pkg-config --variable=udevdir udev) %define applib liblvm2app2_2 @@ -27,7 +27,7 @@ Name: lvm2 Version: %{lvm2_version} Release: 0 Summary: Logical Volume Manager Tools -License: GPL-2.0 and LGPL-2.1 +License: GPL-2.0+ and LGPL-2.1+ Group: System/Base Url: http://www.sourceware.org/lvm2/ Source: ftp://sources.redhat.com/pub/lvm2/LVM2.%{version}.tgz @@ -73,6 +73,10 @@ Patch2005: fsadm-add-support-for-btrfs.patch Patch2006: Import-ID_FS_XXX-variables-bnc909358.patch Patch2007: 10-dm.rules-Reset-state-variable-for-spurious-events.patch Patch2008: libdm-iface-not-output-error-message-inside-retry-loop.patch +# bnc#960744 +Patch2009: pvcreate-enhance-the-error-message.patch +# bnc#990538 bnc#986734 +Patch2010: 69-dm-lvm-metad.rules-Do-not-process-rules-for-multi.patch ### COMMON-PATCH-END ### BuildRequires: gcc-c++ BuildRequires: libaio-devel @@ -153,6 +157,8 @@ This package provides development files for the LVM2 Logical Volume Manager. %patch2006 -p1 %patch2007 -p1 %patch2008 -p1 +%patch2009 -p1 +%patch2010 -p1 ### COMMON-PREP-END ### %build diff --git a/make-mirror-legs-on-different-tag-pvs.patch b/make-mirror-legs-on-different-tag-pvs.patch index 4e22f18..da2be53 100644 --- a/make-mirror-legs-on-different-tag-pvs.patch +++ b/make-mirror-legs-on-different-tag-pvs.patch @@ -25,10 +25,10 @@ Signed-off-by: Guangliang Zhao man/lvcreate.8.in | 4 ++++ 5 files changed, 60 insertions(+) -Index: LVM2.2.02.164/conf/example.conf.in +Index: LVM2.2.02.165/conf/example.conf.in =================================================================== ---- LVM2.2.02.164.orig/conf/example.conf.in -+++ LVM2.2.02.164/conf/example.conf.in +--- LVM2.2.02.165.orig/conf/example.conf.in ++++ LVM2.2.02.165/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,10 +53,10 @@ Index: LVM2.2.02.164/conf/example.conf.in # 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.164/lib/config/config_settings.h +Index: LVM2.2.02.165/lib/config/config_settings.h =================================================================== ---- LVM2.2.02.164.orig/lib/config/config_settings.h -+++ LVM2.2.02.164/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 "when the command does not specify the number of stripes to use.\n" "This was the default behaviour until release 2.02.162.\n") @@ -67,11 +67,11 @@ Index: LVM2.2.02.164/lib/config/config_settings.h 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.164/lib/config/defaults.h +Index: LVM2.2.02.165/lib/config/defaults.h =================================================================== ---- LVM2.2.02.164.orig/lib/config/defaults.h -+++ LVM2.2.02.164/lib/config/defaults.h -@@ -157,6 +157,7 @@ +--- LVM2.2.02.165.orig/lib/config/defaults.h ++++ LVM2.2.02.165/lib/config/defaults.h +@@ -158,6 +158,7 @@ #define DEFAULT_MAX_LV 0 #define DEFAULT_ALLOC_POLICY ALLOC_NORMAL #define DEFAULT_MIRROR_LOGS_REQUIRE_SEPARATE_PVS 0 @@ -79,10 +79,10 @@ Index: LVM2.2.02.164/lib/config/defaults.h #define DEFAULT_MAXIMISE_CLING 1 #define DEFAULT_CLUSTERED 0 -Index: LVM2.2.02.164/lib/metadata/lv_manip.c +Index: LVM2.2.02.165/lib/metadata/lv_manip.c =================================================================== ---- LVM2.2.02.164.orig/lib/metadata/lv_manip.c -+++ LVM2.2.02.164/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 { unsigned maximise_cling; @@ -93,7 +93,7 @@ Index: LVM2.2.02.164/lib/metadata/lv_manip.c /* * RAID devices require a metadata area that accompanies each -@@ -2600,6 +2603,32 @@ static int _limit_to_one_area_per_tag(st +@@ -2633,6 +2636,32 @@ static int _limit_to_one_area_per_tag(st } /* @@ -117,7 +117,7 @@ Index: LVM2.2.02.164/lib/metadata/lv_manip.c + for (i = ix_start; i < ix_end; i++) + if(_pvs_have_matching_tag(ah->cling_tag_list_cn, + alloc_state->areas[i].pva->map->pv, -+ pva->map->pv)) ++ pva->map->pv, 0)) + return i; + return -1; +} @@ -126,7 +126,7 @@ Index: LVM2.2.02.164/lib/metadata/lv_manip.c * Returns 1 regardless of whether any space was found, except on error. */ static int _find_some_parallel_space(struct alloc_handle *ah, -@@ -2729,6 +2758,10 @@ static int _find_some_parallel_space(str +@@ -2762,6 +2791,10 @@ static int _find_some_parallel_space(str continue; case USE_AREA: @@ -137,7 +137,7 @@ Index: LVM2.2.02.164/lib/metadata/lv_manip.c /* * Except with ALLOC_ANYWHERE, replace first area with this * one which is smaller but still big enough. -@@ -3210,6 +3243,7 @@ static struct alloc_handle *_alloc_init( +@@ -3243,6 +3276,7 @@ static struct alloc_handle *_alloc_init( ah->parity_count = parity_count; ah->region_size = region_size; ah->alloc = alloc; @@ -145,7 +145,7 @@ Index: LVM2.2.02.164/lib/metadata/lv_manip.c /* * For the purposes of allocation, area_count and parity_count are -@@ -3221,6 +3255,7 @@ static struct alloc_handle *_alloc_init( +@@ -3254,6 +3288,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); @@ -153,10 +153,10 @@ Index: LVM2.2.02.164/lib/metadata/lv_manip.c if (mirrors || stripes) total_extents = new_extents; -Index: LVM2.2.02.164/man/lvcreate.8.in +Index: LVM2.2.02.165/man/lvcreate.8.in =================================================================== ---- LVM2.2.02.164.orig/man/lvcreate.8.in -+++ LVM2.2.02.164/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/pvcreate-enhance-the-error-message.patch b/pvcreate-enhance-the-error-message.patch new file mode 100644 index 0000000..c75468f --- /dev/null +++ b/pvcreate-enhance-the-error-message.patch @@ -0,0 +1,28 @@ +From b8b35c35a17b95e83817f262d70cb7a7d45cb192 Mon Sep 17 00:00:00 2001 +From: Liuhua Wang +Date: Mon, 29 Feb 2016 20:08:00 +0800 +Subject: [PATCH] pvcreate enhance the error message + +Signed-off-by: Liuhua Wang(lwang@suse.com) +References: bsc#960744 +--- + lib/metadata/metadata.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c +index 19741ba..9f098ca 100644 +--- a/lib/metadata/metadata.c ++++ b/lib/metadata/metadata.c +@@ -1483,7 +1483,8 @@ static int _pvcreate_check(struct cmd_context *cmd, const char *name, + filter_refresh_needed = scan_needed = 1; + + if (!dev) { +- log_error("Device %s not found (or ignored by filtering).", name); ++ log_error("Device %s not found (or ignored by filtering). " ++ "Please run with -vvv option for more details", name); + goto out; + } + +-- +1.8.4.5 + diff --git a/udev_rules-update.diff b/udev_rules-update.diff index c69be95..16a59d6 100644 --- a/udev_rules-update.diff +++ b/udev_rules-update.diff @@ -1,8 +1,19 @@ -Index: LVM2.2.02.110/udev/10-dm.rules.in -=================================================================== ---- LVM2.2.02.110.orig/udev/10-dm.rules.in -+++ LVM2.2.02.110/udev/10-dm.rules.in -@@ -101,6 +101,10 @@ TEST=="dm", ENV{DM_NAME}="$attr{dm/name} +From a2fb79f7316871fb834b1181633292b3ac8dc46c Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 19 Aug 2016 16:13:48 +0200 +Subject: [PATCH] update lvm udev rules + +References: bnc#78902 bnc#789019 bnc#789020 +--- + udev/10-dm.rules.in | 4 ++++ + udev/13-dm-disk.rules.in | 9 ++++++--- + 2 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/udev/10-dm.rules.in b/udev/10-dm.rules.in +index 46a6869..7da0cc4 100644 +--- a/udev/10-dm.rules.in ++++ b/udev/10-dm.rules.in +@@ -101,6 +101,10 @@ TEST=="dm", ENV{DM_NAME}="$attr{dm/name}", ENV{DM_UUID}="$attr{dm/uuid}", ENV{DM TEST!="dm", IMPORT{program}="(DM_EXEC)/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o name,uuid,suspended" ENV{DM_SUSPENDED}!="?*", IMPORT{program}="(DM_EXEC)/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o suspended" @@ -13,10 +24,10 @@ Index: LVM2.2.02.110/udev/10-dm.rules.in # dmsetup tool provides suspended state information in textual # form with values "Suspended"/"Active". We translate it to # 0/1 respectively to be consistent with sysfs values. -Index: LVM2.2.02.110/udev/13-dm-disk.rules.in -=================================================================== ---- LVM2.2.02.110.orig/udev/13-dm-disk.rules.in -+++ LVM2.2.02.110/udev/13-dm-disk.rules.in +diff --git a/udev/13-dm-disk.rules.in b/udev/13-dm-disk.rules.in +index 4b64dd6..dca9c5c 100644 +--- a/udev/13-dm-disk.rules.in ++++ b/udev/13-dm-disk.rules.in @@ -14,14 +14,17 @@ 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" @@ -38,3 +49,6 @@ Index: LVM2.2.02.110/udev/13-dm-disk.rules.in ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" +-- +2.6.6 +