Summary: | vdo deadlock after suspend/resume | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 8 | Reporter: | Ken Raeburn <raeburn> |
Component: | kmod-kvdo | Assignee: | Ken Raeburn <raeburn> |
Status: | CLOSED ERRATA | QA Contact: | Filip Suba <fsuba> |
Severity: | high | Docs Contact: | Kristina Slaveykova <kslaveyk> |
Priority: | high | ||
Version: | 8.7 | CC: | agk, awalsh, cmarthal, cwei, fsuba, heinzm, jbrassow, kslaveyk, lmanasko, pasik, prajnoha, raeburn, zkabelac |
Target Milestone: | rc | Keywords: | 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
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. Verified with kmod-kvdo-6.2.8.1-87.el8. 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 |