+ ### begin check if leaf is different, delete it if not ###
+ if [[ -e /a/opt/btrfs-snapshots-diff/btrfs-snapshots-diff.py ]]; then
+ source /a/bin/distro-functions/src/package-manager-abstractions
+ pi python-jmespath # dependency
+ parentid=$(btrfs sub show $leaf | awk '$1 == "Parent" && $2 == "UUID:" {print $3}')
+ bsubs=(/mnt/root/btrbk/$vol.*)
+ bsub=
+ # go in reverse order as its more likely to be at the end
+ for ((i=${#bsubs[@]}-1; i>=0; i--)); do
+ if [[ $parentid == $(btrfs sub show ${bsubs[i]} | awk '$1 == "UUID:" {print $2}') ]]; then
+ bsub=${bsubs[i]}
+ break
+ fi
+ done
+ if [[ $bsub ]]; then
+ tmp=$(mktemp)
+ # in testing, same subvol is 136 bytes. allow some overhead
+ btrfs send --no-data -p $bsub $leaf | head -c 1000 > $tmp || [[ $? == 141 ]]
+ if (( $(stat -c%s $tmp) < 1000)); then
+ # example output for an empty diff:
+ # Found a valid Btrfs stream header, version 1
+ # o.leaf.2019-05-15T14:00:50-0400;snapshot: uuid=ba045ea30737dd449003f1ee40ec12d0, ctrasid=109533, clone_uuid=3c7e3544e486834aa71d89e5b8f30056, clone_ctransid=109533
+ lines=$(/a/opt/btrfs-snapshots-diff/btrfs-snapshots-diff.py -s -f $tmp | \
+ grep -vxF "Found a valid Btrfs stream header, version 1" | \
+ grep -cv "^[^;]*;snapshot: ") ||:
+ if [[ $lines == 0 ]]; then
+ x btrfs sub del $leaf
+ fi
+ fi
+ fi