Bug 2109047

Summary: vdo deadlock after suspend/resume
Product: Red Hat Enterprise Linux 8 Reporter: Ken Raeburn <raeburn>
Component: kmod-kvdoAssignee: Ken Raeburn <raeburn>
Status: CLOSED ERRATA QA Contact: Filip Suba <fsuba>
Severity: high Docs Contact: Kristina Slaveykova <kslaveyk>
Priority: high    
Version: 8.7CC: agk, awalsh, cmarthal, cwei, fsuba, heinzm, jbrassow, kslaveyk, lmanasko, pasik, prajnoha, raeburn, zkabelac
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: kmod-kvdo-6.2.8.1-87.el8 Doc Type: Bug Fix
Doc Text:
.VDO driver bug no longer causing device freezes through journal blocks Previously, a bug in the VDO driver caused the system to mark some journal blocks as waiting for metadata updates. This problem was triggered when increasing the size of the VDO pool or the logical volume on top of it, or when using the `pvmove` and `lvchange` operations on LVM tools managed VDO devices. The bug was caused by incomplete resets that left some journal pages unavailable for use, and an incorrect notion of how many slots in the recovery journal were available to be filled. As a result, the device would freeze. This issue has now been fixed with the latest version of the kernel modules for the virtual data optimizer *kmod-kvdo-6.2.8.1-87.el8*. Currently, all incomplete metadata blocks are saved in each section of the code in phases, while also updating in-memory data structures and resetting state on resume if needed. With this fix, users should no longer experience device freezes due to this issue.
Story Points: ---
Clone Of: 2064802 Environment:
Last Closed: 2023-05-16 09:03:20 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:
Bug Depends On: 2064802, 2119143    
Bug Blocks:    

Comment 6 corwin 2022-08-23 17:59:19 UTC
*** Bug 2119143 has been marked as a duplicate of this bug. ***

Comment 9 Ken Raeburn 2022-08-27 04:41:29 UTC
The RHEL9 version of this problem is about managing locking of in-memory data structures, and so far the RHEL8 version appears to follow suit. As a workaround, it should be possible to avoid the problem by restarting the VDO device immediately (i.e., with as few write operations as possible) after operations that involve suspend/resume cycles for the VDO device.

When using the “vdo” script in RHEL 8, these operations would be grow logical, grow physical, and change write policy. Shut the device down completely and then start it again (e.g., “vdo stop/start …”).

Under LVM, resizing the logical volume using the VDO pool or adding physical storage *may* cause a resize of the VDO device. Unless we want to tell people to check the kernel logs, the simplest advice is to always stop and restart (“lvchange -an/-ay …”) the VDO pool device (or the logical volume on top of it) afterwards. There might also be other, generic LVM operations that could suspend and resume the VDO pool but aren’t specific to VDO; I’m not sure about that.

Comment 20 Filip Suba 2022-11-07 08:21:10 UTC
Verified with kmod-kvdo-6.2.8.1-87.el8.

Comment 31 errata-xmlrpc 2023-05-16 09:03:20 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 (kmod-kvdo 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-2023:2957