How can I successfully run virt-sparsify. I get this:
sudo virt-sparsify -v -x win11-2.qcow2 win11-2-sparse.qcow2 -tmp /opt
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: disk_format "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2"
libguestfs: command: run: qemu-img --help | grep -sqE -- '\binfo\b.*-U\b'
libguestfs: command: run: qemu-img
libguestfs: command: run: \ info
libguestfs: command: run: \ --output json
libguestfs: command: run: \ /run/media/j/Ventoy/qemukvm-images/win11-2.qcow2
libguestfs: parse_json: qemu-img info JSON output:\n{\n "children": [\n {\n "name": "file",\n "info": {\n "children": [\n ],\n "virtual-size": 71993393152,\n "filename": "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2",\n "format": "file",\n "actual-size": 71993393152,\n "format-specific": {\n "type": "file",\n "data": {\n }\n },\n "dirty-flag": false\n }\n }\n ],\n "virtual-size": 103079215104,\n "filename": "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2",\n "cluster-size": 65536,\n "format": "qcow2",\n "actual-size": 71993393152,\n "format-specific": {\n "type": "qcow2",\n "data": {\n "compat": "1.1",\n "compression-type": "zlib",\n "lazy-refcounts": false,\n "refcount-bits": 16,\n "corrupt": false,\n "extended-l2": false\n }\n },\n "dirty-flag": false\n}\n\n
libguestfs: trace: disk_format = "qcow2"
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: disk_virtual_size "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2"
libguestfs: command: run: qemu-img --help | grep -sqE -- '\binfo\b.*-U\b'
libguestfs: command: run: qemu-img
libguestfs: command: run: \ info
libguestfs: command: run: \ --output json
libguestfs: command: run: \ /run/media/j/Ventoy/qemukvm-images/win11-2.qcow2
libguestfs: parse_json: qemu-img info JSON output:\n{\n "children": [\n {\n "name": "file",\n "info": {\n "children": [\n ],\n "virtual-size": 71993393152,\n "filename": "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2",\n "format": "file",\n "actual-size": 71993393152,\n "format-specific": {\n "type": "file",\n "data": {\n }\n },\n "dirty-flag": false\n }\n }\n ],\n "virtual-size": 103079215104,\n "filename": "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2",\n "cluster-size": 65536,\n "format": "qcow2",\n "actual-size": 71993393152,\n "format-specific": {\n "type": "qcow2",\n "data": {\n "compat": "1.1",\n "compression-type": "zlib",\n "lazy-refcounts": false,\n "refcount-bits": 16,\n "corrupt": false,\n "extended-l2": false\n }\n },\n "dirty-flag": false\n}\n\n
libguestfs: trace: disk_virtual_size = 103079215104
virt-sparsify: debug: input disk virtual size is 103079215104 bytes (96.0G)
[ 0.0] Create overlay file in /opt to protect source disk
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: disk_create "/opt/sparsify0f5891.qcow2" "qcow2" -1 "backingfile:/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2" "compat:1.1"
libguestfs: trace: disk_format "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2"
libguestfs: command: run: qemu-img --help | grep -sqE -- '\binfo\b.*-U\b'
libguestfs: command: run: qemu-img
libguestfs: command: run: \ info
libguestfs: command: run: \ --output json
libguestfs: command: run: \ /run/media/j/Ventoy/qemukvm-images/win11-2.qcow2
libguestfs: parse_json: qemu-img info JSON output:\n{\n "children": [\n {\n "name": "file",\n "info": {\n "children": [\n ],\n "virtual-size": 71993393152,\n "filename": "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2",\n "format": "file",\n "actual-size": 71993393152,\n "format-specific": {\n "type": "file",\n "data": {\n }\n },\n "dirty-flag": false\n }\n }\n ],\n "virtual-size": 103079215104,\n "filename": "/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2",\n "cluster-size": 65536,\n "format": "qcow2",\n "actual-size": 71993393152,\n "format-specific": {\n "type": "qcow2",\n "data": {\n "compat": "1.1",\n "compression-type": "zlib",\n "lazy-refcounts": false,\n "refcount-bits": 16,\n "corrupt": false,\n "extended-l2": false\n }\n },\n "dirty-flag": false\n}\n\n
libguestfs: trace: disk_format = "qcow2"
libguestfs: command: run: qemu-img
libguestfs: command: run: \ create
libguestfs: command: run: \ -f qcow2
libguestfs: command: run: \ -o backing_file=/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2,backing_fmt=qcow2,compat=1.1
libguestfs: command: run: \ /opt/sparsify0f5891.qcow2
libguestfs: Formatting '/opt/sparsify0f5891.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=103079215104 compat=1.1 backing_file=/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16\n
libguestfs: trace: disk_create = 0
[ 0.1] Examine source disk
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: add_drive "/opt/sparsify0f5891.qcow2" "readonly:false" "format:qcow2" "cachemode:unsafe"
libguestfs: trace: add_drive = 0
libguestfs: trace: set_network false
libguestfs: trace: set_network = 0
libguestfs: trace: launch
libguestfs: trace: max_disks
libguestfs: trace: max_disks = 255
libguestfs: trace: get_tmpdir
libguestfs: trace: get_tmpdir = "/tmp"
libguestfs: trace: version
libguestfs: trace: version = <struct guestfs_version = major: 1, minor: 59, release: 8, extra: fedora=44,release=1.fc44,libvirt, >
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "libvirt"
libguestfs: launch: program=virt-sparsify
libguestfs: launch: version=1.59.8fedora=44,release=1.fc44,libvirt
libguestfs: launch: backend registered: direct
libguestfs: launch: backend registered: libvirt
libguestfs: launch: backend=libvirt
libguestfs: launch: tmpdir=/tmp/libguestfsOup5a2
libguestfs: launch: umask=0022
libguestfs: launch: euid=0
libguestfs: launch: host: Linux ws-study 7.0.13-200.fc44.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jun 19 22:51:30 UTC 2026 x86_64
libguestfs: libvirt version = 12000000
libguestfs: guest random name = guestfs-kqrkvpiyxqxdxm4r
libguestfs: connect to libvirt
libguestfs: opening libvirt handle: URI = qemu:///system, auth = default+wrapper, flags = 0
libguestfs: successfully opened libvirt handle: conn = 0x556afd05a080
libguestfs: qemu version (reported by libvirt) = 10002002
libguestfs: get libvirt capabilities
libguestfs: parsing capabilities XML
libguestfs: trace: get_backend_setting "force_kvm"
libguestfs: trace: get_backend_setting = NULL (error)
libguestfs: trace: get_backend_setting "force_tcg"
libguestfs: trace: get_backend_setting = NULL (error)
libguestfs: parsing domcapabilities XML
libguestfs: trace: get_backend_setting "internal_libvirt_label"
libguestfs: trace: get_backend_setting = NULL (error)
libguestfs: trace: get_backend_setting "internal_libvirt_imagelabel"
libguestfs: trace: get_backend_setting = NULL (error)
libguestfs: trace: get_backend_setting "internal_libvirt_norelabel_disks"
libguestfs: trace: get_backend_setting = NULL (error)
libguestfs: build appliance
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: begin building supermin appliance
libguestfs: run supermin
libguestfs: command: run: /usr/bin/supermin
libguestfs: command: run: \ --build
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ --if-newer
libguestfs: command: run: \ --lock /var/tmp/.guestfs-0/lock
libguestfs: command: run: \ --copy-kernel
libguestfs: command: run: \ -f ext2
libguestfs: command: run: \ --host-cpu x86_64
libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d
libguestfs: command: run: \ -o /var/tmp/.guestfs-0/appliance.d
supermin: version: 5.3.5
supermin: rpm: detected RPM version 6.0
supermin: rpm: detected RPM architecture x86_64
supermin: package handler: fedora/rpm
supermin: acquiring lock on /var/tmp/.guestfs-0/lock
supermin: if-newer: output does not need rebuilding
libguestfs: finished building supermin appliance
libguestfs: trace: disk_create "/tmp/libguestfsOup5a2/overlay1.qcow2" "qcow2" -1 "backingfile:/var/tmp/.guestfs-0/appliance.d/root"
libguestfs: trace: disk_format "/var/tmp/.guestfs-0/appliance.d/root"
libguestfs: command: run: qemu-img --help | grep -sqE -- '\binfo\b.*-U\b'
libguestfs: command: run: qemu-img
libguestfs: command: run: \ info
libguestfs: command: run: \ --output json
libguestfs: command: run: \ /var/tmp/.guestfs-0/appliance.d/root
libguestfs: parse_json: qemu-img info JSON output:\n{\n "children": [\n {\n "name": "file",\n "info": {\n "children": [\n ],\n "virtual-size": 4294967296,\n "filename": "/var/tmp/.guestfs-0/appliance.d/root",\n "format": "file",\n "actual-size": 501555200,\n "format-specific": {\n "type": "file",\n "data": {\n }\n },\n "dirty-flag": false\n }\n }\n ],\n "virtual-size": 4294967296,\n "filename": "/var/tmp/.guestfs-0/appliance.d/root",\n "format": "raw",\n "actual-size": 501555200,\n "dirty-flag": false\n}\n\n
libguestfs: trace: disk_format = "raw"
libguestfs: command: run: qemu-img
libguestfs: command: run: \ create
libguestfs: command: run: \ -f qcow2
libguestfs: command: run: \ -o backing_file=/var/tmp/.guestfs-0/appliance.d/root,backing_fmt=raw
libguestfs: command: run: \ /tmp/libguestfsOup5a2/overlay1.qcow2
libguestfs: Formatting '/tmp/libguestfsOup5a2/overlay1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=4294967296 backing_file=/var/tmp/.guestfs-0/appliance.d/root backing_fmt=raw lazy_refcounts=off refcount_bits=16\n
libguestfs: trace: disk_create = 0
libguestfs: trace: get_sockdir
libguestfs: trace: get_sockdir = "/tmp"
libguestfs: create libvirt XML
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: libvirt XML:\n<?xml version="1.0"?>\n<domain type="kvm" xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">\n <name>guestfs-kqrkvpiyxqxdxm4r</name>\n <memory unit="MiB">1280</memory>\n <currentMemory unit="MiB">1280</currentMemory>\n <cpu mode="maximum">\n <feature policy="disable" name="la57"/>\n </cpu>\n <vcpu>1</vcpu>\n <features>\n <acpi/>\n </features>\n <clock offset="utc">\n <timer name="rtc" tickpolicy="catchup"/>\n <timer name="pit" tickpolicy="delay"/>\n <timer name="hpet" present="no"/>\n </clock>\n <os>\n <type machine="q35">hvm</type>\n <kernel>/var/tmp/.guestfs-0/appliance.d/kernel</kernel>\n <initrd>/var/tmp/.guestfs-0/appliance.d/initrd</initrd>\n <cmdline>panic=1 console=ttyS0 edd=off udevtimeout=6000 udev.event-timeout=6000 no_timer_check printk.time=1 cgroup_disable=memory usbcore.nousb cryptomgr.notests tsc=reliable 8250.nr_uarts=1 root=UUID=0a22b69c-183d-484c-99a9-1e5318996faf selinux=0 guestfs_verbose=1 TERM=xterm-256color</cmdline>\n <bios useserial="yes"/>\n </os>\n <on_reboot>destroy</on_reboot>\n <devices>\n <rng model="virtio">\n <backend model="random">/dev/urandom</backend>\n </rng>\n <controller type="scsi" index="0" model="virtio-scsi"/>\n <disk device="disk" type="file">\n <source file="/opt/sparsify0f5891.qcow2"/>\n <target dev="sda" bus="scsi"/>\n <driver name="qemu" type="qcow2" cache="unsafe"/>\n <address type="drive" controller="0" bus="0" target="0" unit="0"/>\n </disk>\n <disk type="file" device="disk">\n <source file="/tmp/libguestfsOup5a2/overlay1.qcow2"/>\n <target dev="sdb" bus="scsi"/>\n <driver name="qemu" type="qcow2" cache="unsafe"/>\n <address type="drive" controller="0" bus="0" target="1" unit="0"/>\n </disk>\n <serial type="unix">\n <source mode="connect" path="/tmp/libguestfs5XH9q9/console.sock"/>\n <target port="0"/>\n </serial>\n <channel type="unix">\n <source mode="connect" path="/tmp/libguestfs5XH9q9/guestfsd.sock"/>\n <target type="virtio" name="org.libguestfs.channel.0"/>\n </channel>\n <controller type="usb" model="none"/>\n <memballoon model="none"/>\n </devices>\n <qemu:commandline>\n <qemu:env name="TMPDIR" value="/var/tmp"/>\n </qemu:commandline>\n</domain>\n
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: command: run: ls
libguestfs: command: run: \ -a
libguestfs: command: run: \ -l
libguestfs: command: run: \ -R
libguestfs: command: run: \ -Z /var/tmp/.guestfs-0
libguestfs: /var/tmp/.guestfs-0:
libguestfs: total 0
libguestfs: drwxr-xr-x. 1 root root unconfined_u:object_r:user_tmp_t:s0 30 Jun 28 09:30 .
libguestfs: drwxrwxrwt. 1 root root system_u:object_r:tmp_t:s0 1988 Jun 28 09:30 ..
libguestfs: drwxr-xr-x. 1 root root unconfined_u:object_r:user_tmp_t:s0 32 Jun 28 09:30 appliance.d
libguestfs: -rw-r--r--. 1 root root unconfined_u:object_r:user_tmp_t:s0 0 Jun 27 17:00 lock
libguestfs:
libguestfs: /var/tmp/.guestfs-0/appliance.d:
libguestfs: total 517312
libguestfs: drwxr-xr-x. 1 root root unconfined_u:object_r:user_tmp_t:s0 32 Jun 28 09:30 .
libguestfs: drwxr-xr-x. 1 root root unconfined_u:object_r:user_tmp_t:s0 30 Jun 28 09:30 ..
libguestfs: -rw-r--r--. 1 root root unconfined_u:object_r:user_tmp_t:s0 9483264 Jun 28 09:30 initrd
libguestfs: -rwxr-xr-x. 1 root root unconfined_u:object_r:user_tmp_t:s0 18684264 Jun 28 09:30 kernel
libguestfs: -rw-r--r--. 1 root root unconfined_u:object_r:user_tmp_t:s0 4294967296 Jun 28 09:30 root
libguestfs: command: run: ls
libguestfs: command: run: \ -a
libguestfs: command: run: \ -l
libguestfs: command: run: \ -Z /tmp/libguestfs5XH9q9
libguestfs: total 0
libguestfs: drwxr-xr-x. 2 root root unconfined_u:object_r:user_tmp_t:s0 80 Jun 28 09:30 .
libguestfs: drwxrwxrwt. 25 root root system_u:object_r:tmp_t:s0 640 Jun 28 09:30 ..
libguestfs: srw-rw----. 1 root root unconfined_u:object_r:user_tmp_t:s0 0 Jun 28 09:30 console.sock
libguestfs: srw-rw----. 1 root root unconfined_u:object_r:user_tmp_t:s0 0 Jun 28 09:30 guestfsd.sock
libguestfs: launch libvirt guest
libguestfs: trace: launch = -1 (error)
virt-sparsify: error: libguestfs error: could not create appliance through
libvirt. Original error from libvirt: Cannot access backing file
'/run/media/j/Ventoy/qemukvm-images/win11-2.qcow2' of storage file
'/opt/sparsify0f5891.qcow2' (as uid:107, gid:107): Permission denied
[code=38 int1=13]
libguestfs: trace: close
libguestfs: closing guestfs handle 0x556afd05a690 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsOup5a2
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfs5XH9q9
libguestfs: trace: close
libguestfs: closing guestfs handle 0x556afd059cf0 (state 0)
libguestfs: trace: close
libguestfs: closing guestfs handle 0x556afd058f90 (state 0)
libguestfs: trace: close
libguestfs: closing guestfs handle 0x556afd0586f0 (state 0)