On 2/17/26 20:14, Roman Bogorodskiy wrote: > Erik Huelsmann wrote: > >> Hi Roman, >> >> On Mon, Feb 16, 2026, 19:32 Roman Bogorodskiy <[email protected]> wrote: >> >>> Erik Huelsmann wrote: >>> >>>> Before this change, buffers returned from virFDStreamRead() would >>>> alternate in size (262120 and 24), because it only consumed the >>>> bytes remaining from the current background thread message. >>>> >>>> As the background thread reads 262144 bytes (256kB) of data in >>>> each chunk, where the maximum size returned from virFDStreamRead() >>>> to be transferred over the remote protocol is only 262120, 24 bytes >>>> would be left in the buffer on each iteration. The next iteration >>>> leaves 24 bytes, which used to be returned without considering >>>> messages waiting in the queue. >>>> >>>> Signed-off-by: Erik Huelsmann <[email protected]> >>>> --- >>>> src/util/virfdstream.c | 26 +++++++++++++++++--------- >>>> 1 file changed, 17 insertions(+), 9 deletions(-) >>> >>> Hi, >>> >>> I noticed that with this change libvirt-tck tests started failing for >>> me on FreeBSD: >>> >>> ../scripts/storage/400-vol-download.t >>> ../scripts/storage/405-vol-download-all.t >>> ../scripts/storage/410-vol-download-nonblock.t >>> >>> Things get back to normal when I revert this commit. >>> >>> The only thing I see in the log is: >>> >>> 2026-02-16 18:04:27.505+0000: 75802027180048: error : virFDStreamRead:921 >>> : stream is not open: Bad file descriptor >>> >> >> I see these are Perl scripts. Can you run the tests in verboden mode? >> ("prove --verbose") That should provide an indication of the point in the >> test where the error occurs > > root@testrunner:~/libvirt-tck # PERL5LIB=./lib > LIBVIRT_TCK_CONFIG=/etc/libvirt-tck/default.yml prove --verbose > ./scripts/storage/400-vol-download.t > ./scripts/storage/400-vol-download.t .. > 1..16 > # Defining transient storage pool > ok 1 - define transient storage pool > ok 2 - built storage pool > ok 3 - started storage pool > ok 4 - create raw volume > ok 5 - started download > libvirt error code: 38, message: stream is not open: Bad file descriptor
This is weird. I tried to reproduce locally but failed to do so. Can you perhaps rerun with LIBVIRT_DEBUG=1 and see whether there's something that closed the stream? Or perhaps is there an error message in libvirtd log? Michal
