Bug 1805896

Summary: mode to empty writecache content
Product: Red Hat Enterprise Linux 8 Reporter: David Teigland <teigland>
Component: lvm2Assignee: David Teigland <teigland>
lvm2 sub component: Cache Logical Volumes QA Contact: cluster-qe <cluster-qe>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: high CC: agk, cmarthal, heinzm, jbrassow, mcsontos, msnitzer, pasik, prajnoha, rbednar, rhandlin, zkabelac
Version: 8.4Keywords: FutureFeature
Target Milestone: rc   
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: lvm2-2.03.11-0.2.20201103git8801a86.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-05-18 15:01:41 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 David Teigland 2020-02-21 17:14:39 UTC
Description of problem:

Something like the cleaner policy in dm-cache which will lead to all data in the writecache being written back to the origin.

Also possibly a command that a user can run to transiently write back data to the origin and allowing the writecache to continue being used for new writes.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Roman Bednář 2020-04-14 07:31:25 UTC
Cond. NAK for 8.3 - insufficient description.

Comment 2 David Teigland 2020-06-01 16:31:52 UTC
This is an internal change to the way lvm flushes data from the cache to the origin.  Since this changes the way writecache is implemented in lvm, not changing this will mean that very few other changes are possible.


writecache: use two stage detach

Avoid flushing, and potentially blocking for a long time,
in suspend by using the cleaner setting.

To detach the writecache, first set the cleaner option on the
writecache LV without detaching the writecache.  Then return
to the top level of the command, releasing the VG and the VG lock.
From there, periodically check the progress of the cleaner by
locking/reading the VG and checking kernel status.  Once the
cleaner has finished flushing, detach the writecache from the LV.

Comment 12 Corey Marthaler 2021-01-20 23:22:54 UTC
Fix verified in the rpms.

kernel-4.18.0-275.el8    BUILT: Sat Jan 16 06:29:19 CST 2021
lvm2-2.03.11-1.el8    BUILT: Fri Jan  8 05:21:07 CST 2021
lvm2-libs-2.03.11-1.el8    BUILT: Fri Jan  8 05:21:07 CST 2021
device-mapper-1.02.175-1.el8    BUILT: Fri Jan  8 05:21:07 CST 2021
device-mapper-libs-1.02.175-1.el8    BUILT: Fri Jan  8 05:21:07 CST 2021
device-mapper-event-1.02.175-1.el8    BUILT: Fri Jan  8 05:21:07 CST 2021
device-mapper-event-libs-1.02.175-1.el8    BUILT: Fri Jan  8 05:21:07 CST 2021


# Start writing a bunch of files
[root@hayes-01 ~]#  /usr/tests/sts-rhel8.3/bin/checkit -w /mnt/large_writecache_removal -f /tmp/checkit_origin_1 -n 1200
checkit starting with:
CREATE
Num files:          1200
Random Seed:        3819
Verify XIOR Stream: /tmp/checkit_origin_1
Working dir:        /mnt/large_writecache_removal


[root@hayes-01 ~]# lvs
  LV                       VG                Attr       LSize Pool        Origin                            Data%  Meta%  Move Log Cpy%Sync Convert
  large_writecache_removal writecache_sanity Cwi-aoC--- 2.00g [pool_cvol] [large_writecache_removal_wcorig] 38.70                                  

# split the cache during the write and cancel it half way through
[root@hayes-01 ~]# lvconvert --splitcache writecache_sanity/large_writecache_removal
  Detaching writecache setting cleaner.
  Detaching writecache cleaning 932457 blocks
  This command can be cancelled and rerun to complete writecache detach.
^C

[root@hayes-01 ~]# lvs -a -o +devices
  LV                                VG                Attr       LSize Pool        Origin                            Data%  Meta%  Move Log Cpy%Sync Convert Devices                           
  large_writecache_removal          writecache_sanity Cwi-aoC--- 2.00g [pool_cvol] [large_writecache_removal_wcorig] 0.01                                    large_writecache_removal_wcorig(0)
  [large_writecache_removal_wcorig] writecache_sanity owi-aoC--- 2.00g                                                                                       /dev/sdb(0)                       
  [pool_cvol]                       writecache_sanity Cwi-aoC--- 1.00g                                                                                       /dev/sdc(0)                       

# Restart the splitcache a second time and let it and the i/o finish
[root@hayes-01 ~]# lvconvert --splitcache writecache_sanity/large_writecache_removal
  Detaching writecache setting cleaner.
  Detaching writecache finished cleaning.
  Logical volume writecache_sanity/large_writecache_removal writecache has been detached.

[root@hayes-01 ~]# lvs -a -o +devices
  LV                       VG                Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices    
  large_writecache_removal writecache_sanity -wi-ao---- 2.00g                                                     /dev/sdb(0)
  pool                     writecache_sanity -wi------- 1.00g                                                     /dev/sdc(0)

# verify the data on the single origin volume 
[root@hayes-01 ~]# /usr/tests/sts-rhel8.3/bin/checkit -w /mnt/large_writecache_removal -f /tmp/checkit_origin_1 -v
checkit starting with:
VERIFY
Verify XIOR Stream: /tmp/checkit_origin_1
Working dir:        /mnt/large_writecache_removal

Comment 13 Corey Marthaler 2021-01-27 17:45:14 UTC
FYI - this verification process doesn't work with striped wc origin volumes (See bug 1921214).

Comment 15 errata-xmlrpc 2021-05-18 15:01:41 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 (lvm2 bug fix and enhancement update), 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/RHBA-2021:1659