On 01/23/2018 03:42 AM, Julio Faracco wrote: > Hi Peter, > > I agree about "length" parameter. > What I didn't understand is this error (check my test case): > > # virsh vol-create-as --pool disk-loop loop0 --capacity 20M > > # virsh vol-info loop0 disk-loop > Name: loop0 > Type: file > Capacity: 20.00 MiB > Allocation: 20.00 MiB > > # dd if=/dev/zero of=/tmp/test bs=10M count=1 > > # ls -l /tmp/test > -rw-rw-r-- 1 julio julio 10485760 Jan 23 00:31 /tmp/test > > Now, let's upload 5M (partial): > > # virsh vol-upload loop0 /tmp/test --pool disk-loop --length 5242880 > error: cannot send data to volume loop0 > error: Library function returned error but did not set virError This is a libvirt bug. Very likely introduced by me when writing the sparse streams feature. Please report a bug unless you want to investigate further. My quick glance at the issue suggests that the problem lies in daemonStreamHandleWriteData() and the way end of stream is handled. I mean, daemonStreamHandleWriteData() calls virStreamSend() which in turn calls virFDStreamWrite(). On the last call, fdst->length is equal fdst->offset which causes error. Well, it needs to cause stream finish. BTW: another problem is that virReportSystemError(ENOSPC) is not being propagated to the client. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list