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 |