Bug 1650175
| Summary: | block-commit can't be used with -blockdev [rhel-7.6.z] | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Oneata Mircea Teodor <toneata> |
| Component: | qemu-kvm-rhev | Assignee: | Kevin Wolf <kwolf> |
| Status: | CLOSED ERRATA | QA Contact: | aihua liang <aliang> |
| Severity: | high | Docs Contact: | |
| Priority: | high | ||
| Version: | 7.5 | CC: | aliang, areis, chayang, coli, guillaume.pavese, jsuchane, juzhang, kwolf, michen, mtessun, ngu, pingl, pkrempa, virt-maint |
| Target Milestone: | rc | Keywords: | ZStream |
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qemu-kvm-rhev-2.12.0-18.el7_6.3 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1623986 | Environment: | |
| Last Closed: | 2019-01-29 18:32:27 UTC | Type: | --- |
| 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: | 1623986 | ||
| Bug Blocks: | |||
|
Description
Oneata Mircea Teodor
2018-11-15 14:15:57 UTC
Fix included in qemu-kvm-rhev-2.12.0-18.el7_6.3 Test env:
kernel version:3.10.0-957.1.3.el7.x86_64
qemu-kvm-rhev version:qemu-kvm-rhev-2.12.0-18.el7_6.3.x86_64
For reproduce:
test step:
step1.Create 3 images offline:
#qemu-img create -f qcow2 base 1G
#qemu-img create -f qcow2 /home/atest/sn1 1G
#qemu-img create -f qcow2 /home/atest/sn2 1G
step2.Start qemu with snapshot chain: base->sn1->sn2
/usr/libexec/qemu-kvm \
-blockdev driver=file,node-name=file_base,filename=/home/atest/base,read-only=on \
-blockdev driver=qcow2,file=file_base,node-name=base,read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
-qmp tcp:0:5000,server,nowait \
-monitor stdio \
-vnc :0 \
step3.Do block mirror: sn1->base
{'execute': 'block-commit', 'arguments': { 'device':'sn2','base-node':'base','top-node':'sn1','job-id':'j1'}}
test result:
after step3:
block-commit failed with following info:
{"timestamp": {"seconds": 1547605428, "microseconds": 437870}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "j1"}}
{"timestamp": {"seconds": 1547605428, "microseconds": 438245}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "j1"}}
{"error": {"class": "GenericError", "desc": "Block node is read-only"}}
For verify:
1.backend:localfs
test steps:
step1: same with reproduce step1
step2: Start qemu with snapshot chain: base->sn1->sn2
/usr/libexec/qemu-kvm \
-blockdev driver=file,node-name=file_base,filename=/home/atest/base,auto-read-only=on \
-blockdev driver=qcow2,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
-qmp tcp:0:5000,server,nowait \
-monitor stdio \
-vnc :0 \
step3: same with reproduce step3
test result:
block commit executed successfully.
{"timestamp": {"seconds": 1547606177, "microseconds": 966791}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "j1"}}
{"timestamp": {"seconds": 1547606177, "microseconds": 967306}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "j1"}}
{"return": {}}
{"timestamp": {"seconds": 1547606177, "microseconds": 982351}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "j1"}}
{"timestamp": {"seconds": 1547606177, "microseconds": 982409}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "j1"}}
{"timestamp": {"seconds": 1547606177, "microseconds": 982900}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "j1", "len": 1073741824, "offset": 1073741824, "speed": 0, "type": "commit"}}
{"timestamp": {"seconds": 1547606177, "microseconds": 982964}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "j1"}}
{"timestamp": {"seconds": 1547606177, "microseconds": 982999}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "j1"}}
2.backend:rbd
test steps:
step1: create 3 images
# qemu-img create -f raw rbd:rbd/sn1_r:mon_host=10.66.144.31 1G
# qemu-img create -f qcow2 /home/atest/sn1 1G
# qemu-img create -f qcow2 /home/atest/sn2 1G
step2: Start qemu with snapshot chain: base->sn1->sn2
-blockdev driver=rbd,node-name=file_base,pool=rbd,image=base,server.0.host=10.66.144.31,server.0.port=6789,auto-read-only=on \
-blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,auto-read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
step3: same with reproduce step3
test result:
block commit executed successfully.
3.backend:ndb
test steps:
step1: create 3 images
(nbd server)#qemu-img create -f raw base 1G; qemu-nbd -f raw base -p 9000 -t
# qemu-img create -f qcow2 /home/atest/sn1 1G
# qemu-img create -f qcow2 /home/atest/sn2 1G
step2: Start qemu with snapshot chain: base->sn1->sn2
-blockdev driver=nbd,node-name=file_base,server.host=10.73.73.83,server.port=9000,server.type=inet,auto-read-only=on \
-blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,auto-read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
step3: same with reproduce step3
test result:
block commit executed successfully.
4.backend:gluster
test steps:
step1: create 3 images
# qemu-img create -f qcow2 gluster://gluster-virt-qe-01.lab.eng.pek2.redhat.com/vol0/base 1G
# qemu-img create -f qcow2 /home/atest/sn1 1G
# qemu-img create -f qcow2 /home/atest/sn2 1G
step2: Start qemu with snapshot chain: base->sn1->sn2
-blockdev driver=gluster,node-name=file_base,server.0.type=inet,server.0.host=gluster-virt-qe-01.lab.eng.pek2.redhat.com,server.0.port=24007,volume=vol0,path=base,auto-read-only=on \
-blockdev driver=qcow2,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,auto-read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
step3: same with reproduce step3
test result:
block commit executed successfully.
5.backend:iscsi
step1: create 2 images
# qemu-img create -f qcow2 gluster://gluster-virt-qe-01.lab.eng.pek2.redhat.com/vol0/base 1G
# qemu-img create -f qcow2 /home/atest/sn1 1G
# qemu-img create -f qcow2 /home/atest/sn2 1G
step2: Start qemu with snapshot chain: base->sn1->sn2
-blockdev driver=iscsi,node-name=file_base,transport=tcp,portal=10.73.73.83,target=iqn.2018-02.com.example:t1,lun=0,auto-read-only=on \
-blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,auto-read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
step3: same with reproduce step3
test result:
block commit executed successfully.
Continue:
6.backend:curl
driver: https
step1: create 3 images
(https server)# qemu-img create -f qcow2 base 1G
# qemu-img create -f qcow2 /home/atest/sn1 1G
# qemu-img create -f qcow2 /home/atest/sn2 1G
step2: start qemu with snapshot chain: base->sn1->sn2
-blockdev driver=iscsi,node-name=file_base,driver=https,sslverify=off,url=https://10.73.224.153/base,read-only=on,auto-read-only=on \
-blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,auto-read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
test result:
qemu-kvm: -blockdev driver=https,node-name=file_base,sslverify=off,url=https://10.73.224.153/base,auto-read-only=on: Driver 'https' can only be used for read-only devices
driver: http
test steps:
step1: same as step1 above
step2: start qemu with snapshot chain: base->sn1->sn2
-blockdev driver=iscsi,node-name=file_base,driver=http,url=https://10.73.224.153/base,read-only=on,auto-read-only=on \
-blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \
-blockdev driver=file,node-name=file_sn1,filename=/home/atest/sn1,auto-read-only=on \
-blockdev driver=qcow2,file=file_sn1,node-name=sn1,auto-read-only=on,backing=base \
-blockdev driver=file,node-name=file_sn2,filename=/home/atest/sn2 \
-blockdev driver=qcow2,file=file_sn2,node-name=sn2,backing=sn1 \
test result:
qemu start failed with info:
qemu-kvm: -blockdev driver=http,node-name=file_base,url=http://10.73.224.153/base,read-only=on: Driver 'http' is not whitelisted
But check img info via http success:
qemu-img info 'json:{"file.driver":"http", "file.url":"http://10.73.224.153/base"}
> '
image: json:{"driver": "qcow2", "file": {"url": "http://10.73.224.153/base", "driver": "http"}}
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: unavailable
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
Hi,John
In your patch comment:
curl: Support auto-read-only option
But from my test result, curl only support read-only for https and http isn't whitelisted.
Please help to check if my usage of "auto-read-only" for curl corret?
Thanks,
aliang
Sorry for the mistake in comment 8, correct typo in comment 7 as bellow: -blockdev driver=iscsi,node-name=file_base,driver=https,sslverify=off,url=https://10.73.224.153/base,read-only=on,auto-read-only=on \ -blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \ ---> -blockdev node-name=file_base,driver=https,sslverify=off,url=https://10.73.224.153/base,auto-read-only=on \ -blockdev driver=qcow2,file=file_base,node-name=base,auto-read-only=on \ -blockdev driver=iscsi,node-name=file_base,driver=http,url=http://10.73.224.153/base,read-only=on,auto-read-only=on \ -blockdev driver=raw,file=file_base,node-name=base,auto-read-only=on \ ----> -blockdev node-name=file_base,driver=http,url=http://10.73.224.153/base,read-only=on \ -blockdev driver=qcow2,file=file_base,node-name=base,read-only=on \ Verify on qemu-kvm-rhev-2.12.0-18.el7_6.3.x86_64, no serious bug exist with param "auto-read-only=on" For curl+ auto-read-only=on issue, will open a new bug to track it. So, set this bug's status to "Verified". 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/RHBA-2019:0209 |