Bug 2041480
| Summary: | [incremental_backup] Inconsistent block status reply in qemu-nbd | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | Nir Soffer <nsoffer> | ||||
| Component: | qemu-kvm | Assignee: | Hanna Czenczek <hreitz> | ||||
| qemu-kvm sub component: | Storage | QA Contact: | Tingting Mao <timao> | ||||
| Status: | CLOSED ERRATA | Docs Contact: | |||||
| Severity: | high | ||||||
| Priority: | high | CC: | coli, jinzhao, juzhang, kkiwi, virt-maint | ||||
| Version: | 8.6 | Keywords: | Regression, Triaged | ||||
| Target Milestone: | rc | Flags: | pm-rhel:
mirror+
|
||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | qemu-kvm-6.2.0-7.module+el8.6.0+14250+cd2c04c3 | Doc Type: | If docs needed, set a value | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2022-05-10 13:25: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: | |||||
| Embargoed: | |||||||
| Bug Depends On: | 2041461 | ||||||
| Bug Blocks: | |||||||
| Attachments: |
|
||||||
|
Description
Nir Soffer
2022-01-17 13:12:19 UTC
This is mostly a clone of bug 2041461 (rhel 9). I tried to reproduce this with RHV API but I could not reproduce.
In RHV we do not support yet getting partial extents, only getting
all extents for entire image. Practically in RHV we always do
something like this (assuming 6g image):
extents = []
for offset in range(0, 6*1024**3, 2*1024**3):
r = c1.extents(offset, 2*1024**3)
extents.extend(r["base:allocation"])
Repeating this again return the same results on every call.
Example usage with RHV API:
$ ./image_transfer.py -c engine-dev download eaaf6789-90d9-4ad0-ab54-04e16fa7570a
[ 0.0 ] Connecting to engine...
[ 0.0 ] Looking up disk eaaf6789-90d9-4ad0-ab54-04e16fa7570a
[ 0.1 ] Creating image transfer for download
[ 1.4 ] Transfer ID: 30ec7761-64d7-4db7-8073-30cb5474de03
[ 1.4 ] Transfer host name: host4
[ 1.4 ] Transfer URL: https://host4:54322/images/bd64768a-167d-4172-b37d-bef9ce075f77
[ 1.4 ] Proxy URL: https://engine-dev:54323/images/bd64768a-167d-4172-b37d-bef9ce075f77
[ 1.4 ] Conneted to imageio server
Getting extents for entire image:
>>> import requests
>>> s = requests.Session()
>>> s.verify = False
>>> first = s.get("https://host4:54322/images/bd64768a-167d-4172-b37d-bef9ce075f77/extents").json()
>>> second = s.get("https://host4:54322/images/bd64768a-167d-4172-b37d-bef9ce075f77/extents").json()
>>> first == second
True
Reproduced in qemu-kvm-6.2.0-6.module+el8.6.0+14165+5e5e76ac:
Steps:
# qemu-img create -f raw empty.raw 1g
# qemu-nbd --read-only --persistent --allocation-depth --socket=/tmp/nbd.sock --format=raw empty.raw &
# nbdinfo --map=base:allocation nbd+unix:///?socket=/tmp/nbd.sock
0 4096 0 allocated
4096 1073737728 3 hole,zero
# nbdinfo --map=qemu:allocation-depth nbd+unix:///?socket=/tmp/nbd.sock
# nbdinfo --map=qemu:allocation-depth nbd+unix:///?socket=/tmp/nbd.sock
# nbdinfo --map=base:allocation nbd+unix:///?socket=/tmp/nbd.sock
0 1073741824 0 allocated
Results:
As above, after latest step, the dumped info is changed to all allocated data which is different from the results of the 3rd command.
Verified in qemu-kvm-6.2.0-7.module+el8.6.0+14250+cd2c04c3:
Steps:
# qemu-img create -f raw empty.raw 1g
# qemu-nbd --read-only --persistent --allocation-depth --socket=/tmp/nbd.sock --format=raw empty.raw &
# nbdinfo --map=base:allocation nbd+unix:///?socket=/tmp/nbd.sock
0 4096 0 allocated
4096 1073737728 3 hole,zero
# nbdinfo --map=qemu:allocation-depth nbd+unix:///?socket=/tmp/nbd.sock
# nbdinfo --map=qemu:allocation-depth nbd+unix:///?socket=/tmp/nbd.sock
# nbdinfo --map=base:allocation nbd+unix:///?socket=/tmp/nbd.sock
0 4096 0 allocated
4096 1073737728 3 hole,zero
Results:
As above, after latest step, the dumped info is still the same as the result of 3rd command.
QE bot(pre verify): Set 'Verified:Tested,SanityOnly' as gating/tier1 test pass. 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 (Moderate: virt:rhel and virt-devel:rhel security, 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/RHSA-2022:1759 |