Bug 1372143

Summary: qemu-img: unable to create json backing file via tftp protocol
Product: Red Hat Enterprise Linux 7 Reporter: Han Han <hhan>
Component: qemu-kvm-rhevAssignee: Hanna Czenczek <hreitz>
Status: CLOSED CANTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: low Docs Contact:
Priority: low    
Version: 7.4CC: dyuan, hreitz, juzhang, knoel, virt-maint, xuzhang, yanyang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-02 17:37:47 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:
Bug Depends On:    
Bug Blocks: 1375408    

Description Han Han 2016-09-01 02:21:08 UTC
Description of problem:
As subject

Version-Release number of selected component (if applicable):
curl-7.29.0-35.el7.x86_64
qemu-kvm-rhev-2.6.0-22.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Prepare a tftp server and a image on the tftp dir.
2. Check if the tftp server works well
# curl tftp://10.66.6.236/tftp -o /tmp/tftp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  100M  100  100M    0     0  2673k      0  0:00:38  0:00:38 --:--:-- 2679k
100  100M  100  100M    0     0  2673k      0  0:00:38  0:00:38 --:--:-- 2673k

3. Try to create json backing image via tftp
# qemu-img create -f qcow2 -b 'json:{"file.driver":"tftp", "file.url":"tftp://10.66.6.236/tftp"}' /var/lib/libvirt/images/tftp.img 
qemu-img: /var/lib/libvirt/images/tftp.img: CURL: Error opening file: getpeername() failed with errno 107: Transport endpoint is not connected

Actual results:
As step3

Expected results:
Backing image created.

Additional info:

Comment 2 Hanna Czenczek 2016-11-02 17:37:47 UTC
Hi,

It turns out that our curl block driver's TFTP support is completely broken by design: For rather obvious reasons, all network protocols that we support in the block layer need to offer some functionality to read only a range of the image file. However, TFTP does not have this functionality, and therefore, it was always basically completely unusable.

This is probably not the immediate reason behind the error message you are seeing, but it does mean that QEMU basically has no support for reading image files over TFTP and the only thing we can do is to stop pretending that we do.


Sorry,

Max

Comment 3 Han Han 2016-11-03 02:30:15 UTC
Since the TFTP is completely unusable in qemu, I think it should be highlighted from upstream codes in case of mistakenly using.
Maybe we should write 'tftp: deprecated' in qapi/block-core.json and docs/qmp-commands.txt

Comment 4 Hanna Czenczek 2016-11-04 16:56:16 UTC
You're right, and I've actually sent a patch series to remove tftp from upstream: http://lists.nongnu.org/archive/html/qemu-block/2016-11/msg00054.html

Max