Bug 1797708

Summary: writecache: High watermark must be greater than or equal to low watermark
Product: Red Hat Enterprise Linux 8 Reporter: Corey Marthaler <cmarthal>
Component: lvm2Assignee: LVM and device-mapper development team <lvm-team>
lvm2 sub component: Cache Logical Volumes QA Contact: cluster-qe <cluster-qe>
Status: CLOSED ERRATA Docs Contact:
Severity: low    
Priority: unspecified CC: agk, heinzm, jbrassow, mcsontos, msnitzer, pasik, prajnoha, teigland, zkabelac
Version: 8.2Flags: pm-rhel: mirror+
Target Milestone: rc   
Target Release: 8.0   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: lvm2-2.03.08-2.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-28 16:59:23 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Corey Marthaler 2020-02-03 17:17:49 UTC
Description of problem:
This is pretty obvious, but still something that LVM should be dealing with at create/convert time.


[root@hayes-02 ~]# lvcreate --wipesignatures y  -L 4G -n rename_orig_A writecache_sanity @slow
  Logical volume "rename_orig_A" created.

[root@hayes-02 ~]# lvcreate  -L 4G -n rename_pool_A writecache_sanity @fast
  Logical volume "rename_pool_A" created.

[root@hayes-02 ~]# lvchange -an writecache_sanity

[root@hayes-02 ~]# lvconvert --yes --type writecache --cachesettings 'low_watermark=56 high_watermark=3' --cachevol writecache_sanity/rename_pool_A writecache_sanity/rename_orig_A
  Logical volume writecache_sanity/rename_orig_A now has write cache.

[root@hayes-02 ~]# lvchange -ay writecache_sanity/rename_orig_A
  device-mapper: reload ioctl on  (253:2) failed: Invalid argument


[332500.683235] device-mapper: table: 253:2: writecache: High watermark must be greater than or equal to low watermark
[332500.694891] device-mapper: ioctl: error adding target to table



Version-Release number of selected component (if applicable):
kernel-4.18.0-173.el8    BUILT: Fri Jan 24 06:02:03 CST 2020
lvm2-2.03.07-1.el8    BUILT: Mon Dec  2 00:09:32 CST 2019
lvm2-libs-2.03.07-1.el8    BUILT: Mon Dec  2 00:09:32 CST 2019
lvm2-dbusd-2.03.07-1.el8    BUILT: Mon Dec  2 00:12:23 CST 2019
device-mapper-1.02.167-1.el8    BUILT: Mon Dec  2 00:09:32 CST 2019
device-mapper-libs-1.02.167-1.el8    BUILT: Mon Dec  2 00:09:32 CST 2019
device-mapper-event-1.02.167-1.el8    BUILT: Mon Dec  2 00:09:32 CST 2019
device-mapper-event-libs-1.02.167-1.el8    BUILT: Mon Dec  2 00:09:32 CST 2019

Comment 1 David Teigland 2020-02-03 17:36:09 UTC
Fixed for cases like above where the user sets both high and low to an invalid combination:
https://sourceware.org/git/?p=lvm2.git;a=commit;h=adbb0a8d5bd0f735a756e32effcf0bddac0f6de7

lvconvert --type writecache --cachevol fast --cachesettings "high_watermark=5 low_watermark=6" foo/main
  High watermark must be greater than or equal to low watermark.
  Invalid writecache settings.


We can't catch cases where one value is set and it is invalid in combination with the kernel's default value for the other.  In those cases the kernel error message will suffice.

Comment 4 Corey Marthaler 2020-02-20 23:50:10 UTC
The message should just be "must be greater than low watermark." that or the check needs to change.


# Lower than
[root@hayes-02 ~]# lvconvert --yes --type writecache --cachesettings 'low_watermark=56 high_watermark=3' --cachevol writecache_sanity/rename_pool_A writecache_sanity/rename_orig_A
  High watermark must be greater than or equal to low watermark.
  Invalid writecache settings.

# Equal to
[root@hayes-02 ~]# lvconvert --yes --type writecache --cachesettings 'low_watermark=56 high_watermark=56' --cachevol writecache_sanity/rename_pool_A writecache_sanity/rename_orig_A
  High watermark must be greater than or equal to low watermark.
  Invalid writecache settings.

Comment 5 David Teigland 2020-02-21 14:16:12 UTC
in master:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=2284f845b0328df97dfef6200905b3b462cd3cce

-               log_error("High watermark must be greater than or equal to low watermark.");
+               log_error("High watermark must be greater than low watermark.");

Comment 6 Corey Marthaler 2020-02-24 23:23:36 UTC
Fix verified in the latest rpms.

kernel-4.18.0-179.el8    BUILT: Fri Feb 14 17:03:01 CST 2020
lvm2-2.03.08-2.el8    BUILT: Mon Feb 24 11:21:38 CST 2020
lvm2-libs-2.03.08-2.el8    BUILT: Mon Feb 24 11:21:38 CST 2020
device-mapper-1.02.169-2.el8    BUILT: Mon Feb 24 11:21:38 CST 2020
device-mapper-libs-1.02.169-2.el8    BUILT: Mon Feb 24 11:21:38 CST 2020
device-mapper-event-1.02.169-2.el8    BUILT: Mon Feb 24 11:21:38 CST 2020
device-mapper-event-libs-1.02.169-2.el8    BUILT: Mon Feb 24 11:21:38 CST 2020


[root@hayes-02 ~]# lvs -a -o +devices
  LV              VG                Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices     
  cworigin        writecache_sanity -wi------- 4.00g                                                     /dev/sdd1(0)
  test_writecache writecache_sanity -wi------- 2.00g                                                     /dev/sdh1(0)

[root@hayes-02 ~]# lvconvert --yes --type writecache --cachesettings 'low_watermark=56 high_watermark=3' --cachevol writecache_sanity/test_writecache writecache_sanity/cworigin
  High watermark must be greater than low watermark.
  Invalid writecache settings.

[root@hayes-02 ~]# lvconvert --yes --type writecache --cachesettings 'low_watermark=56 high_watermark=56' --cachevol writecache_sanity/test_writecache writecache_sanity/cworigin
  High watermark must be greater than low watermark.
  Invalid writecache settings.

[root@hayes-02 ~]# lvconvert --yes --type writecache --cachesettings 'low_watermark=56 high_watermark=57' --cachevol writecache_sanity/test_writecache writecache_sanity/cworigin
  Logical volume writecache_sanity/cworigin now has write cache.

Comment 8 errata-xmlrpc 2020-04-28 16:59:23 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2020:1881