Deleted snapshots are discarded in the image file by default, discard requests take their default from the -drive discard=... option and other places that free clusters must always be enabled explicitly.
67af674 qcow2: Options to enable discard for freed clusters
block/qcow2-refcount.c | 5 +++++
block/qcow2.c | 26 ++++++++++++++++++++++++++
block/qcow2.h | 5 +++++
3 files changed, 36 insertions(+)
Upstream: git.qemu.org