v2 of: https://www.redhat.com/archives/libvir-list/2020-July/msg00145.html diff to v1: - Switch virfdstream to glib (patches 1-6) - Document the feature in NEWS.rst - Introduced test cases for virStringIsNull() - Included what was WIP patch in v1 => patch 16 which ensures block devices aren't read twice Michal Prívozník (17): virfdstream: Use g_autofree in virFDStreamThreadDoRead() virFDStreamMsgQueuePush: Clear pointer to passed message virfdstream: Use autoptr for virFDStreamMsg virfdstream: Use g_new0() instead of VIR_ALLOC() virfdstream: Use VIR_AUTOCLOSE() virfdstream: Drop some needless labels libvirt-storage: Document volume upload/download stream format virstring: Introduce virStringIsNull() virfile: Introduce virFileInDataDetectZeroes() virsh: Pass virshStreamCallbackDataPtr to virshStreamSink() and virshStreamSkip() virsh: Track if vol-upload or vol-download work over a block device virshStreamSkip: Emulate skip for block devices virfdstream: Allow sparse stream vol-download virshStreamInData: Handle block devices virfdstream: Emulate skip for block devices stream: Don't read block device twice news: Document sparse streams for block devcies NEWS.rst | 7 ++ src/libvirt-storage.c | 8 +- src/libvirt_private.syms | 2 + src/util/virfdstream.c | 179 ++++++++++++++++++++++----------------- src/util/virfile.c | 50 +++++++++++ src/util/virfile.h | 5 ++ src/util/virstring.c | 38 +++++++++ src/util/virstring.h | 2 + tests/virstringtest.c | 47 ++++++++++ tools/virsh-util.c | 90 +++++++++++++++++--- tools/virsh-util.h | 4 + tools/virsh-volume.c | 23 ++++- 12 files changed, 360 insertions(+), 95 deletions(-) -- 2.26.2