Description of problem:
After converting a non-lvm VDO to an lvm VDO, after a certain amount of new writes, the index will fail to invalidate the moved chapter when it is supposed to. The amount of data required to trigger this condition depends on the state if the index before conversion.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Create a new non-lvm VDO with a default index. Write ~150G of unique data to it. Then note the data blocks used count in VDO statistics.
2. Convert the VDO to an LVM VDO.
3. Write the same 150G of data to the VDO again (without overwriting).
4. Note the new value for "data blocks used".
At some point in the second write, the message "reap_oldest_chapter failed" should get logged. Also, I believe VDO will note that it is destroying the index and making a new one.
The "data blocks used" count noted in step 4 will be larger than the one noted in step 1.
Neither VDO nor UDS should log any error messages. The "data blocks used" count in step 4 should be the same as the one in step 1.
I only reproduced this through the index at a low level; I did not reproduce this with an entire VDO. The behavior in the failing case may differ somewhat from what I've described.
Verified with kmod-kvdo-22.214.171.124-79.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.