Bug 1512844
| Summary: | cache_restore tool may corrupt cache metadata | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Marian Csontos <mcsontos> | |
| Component: | device-mapper-persistent-data | Assignee: | LVM and device-mapper development team <lvm-team> | |
| Status: | CLOSED ERRATA | QA Contact: | Jakub Krysl <jkrysl> | |
| Severity: | high | Docs Contact: | ||
| Priority: | high | |||
| Version: | 7.5 | CC: | agk, heinzm, jkrysl, lmiksik, lvm-team, msnitzer, rhandlin, thornber | |
| Target Milestone: | rc | Keywords: | ZStream | |
| Target Release: | --- | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | device-mapper-persistent-data-0.7.3-3.el7 | Doc Type: | If docs needed, set a value | |
| Doc Text: |
Previously, the cache_restore utility passed incorrect arguments to a function. Additionally, it missed a call to flush dirty bits when version 2 metadata of the cache was used. As a consequence, the utility corrupted the cache metadata. With this update, cache_restore now handles the arguments correctly and adds the missing call. As a result, the utility no longer corrupts version 2 metadata.
|
Story Points: | --- | |
| Clone Of: | ||||
| : | 1515109 (view as bug list) | Environment: | ||
| Last Closed: | 2018-04-10 13:18:38 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: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1515109 | |||
|
Description
Marian Csontos
2017-11-14 09:36:38 UTC
v0.7.0 of the tools introduced support for cache metadata v2. However cache restore was not writing a crucial field to the superblock. So the kernel cannot load the metadata. This patch fixes it: https://github.com/jthornber/thin-provisioning-tools/commit/e3b7d825696c23c23f6bd867de4dbda69be38db8 The bug wasn't discovered for a long time because a separate bug meant v1 metadata was always being written even if v2 was requested. v0.7.5 behaves correctly. before: # cache_restore -V 0.7.0-0.1.rc6.el7 # cache_restore -i metadata -o /dev/mapper/vgtest-swapvol --debug-override-metadata-version 2 cache_restore: /usr/include/boost/optional/optional.hpp:631: boost::optional<T>::reference_type boost::optional<T>::get() [with T = long unsigned int; boost::optional<T>::reference_type = long unsigned int&]: Assertion `this->is_initialized()' failed. Aborted (core dumped) with this patch: # cache_restore -V 0.7.0-0.1.rc6.el7_4.1 # cache_restore -i metadata -o /dev/mapper/vgtest-swapvol --debug-override-metadata-version 2 Restoring: [==================================================] 100% 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-2018:0776 |