- if [[ -e $vol && $vol != qd ]]; then
- leaf=$vol.leaf.$(date +%Y-%m-%dT%H:%M:%S%z)
- m mv $vol $leaf
- m btrfs property set -ts $leaf ro true
-
- ### begin check if leaf is different, delete it if not ###
- parentid=$(btrfs sub show $leaf | awk '$1 == "Parent" && $2 == "UUID:" {print $3}')
- bsubs=(btrbk/$vol.*)
- bsub= # base subvolume
- # 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
- # in testing, same subvol is 136 bytes. allow some overhead. 32 happens sometimes under systemd.
- # $ errno 32
- # EPIPE 32 Broken pipe
- lines=$(btrfs send --no-data -p $bsub $leaf | btrfs receive --dump | head -n 100 | wc -l || [[ $? == 141 || ${PIPESTATUS[0]} == 32 ]])
- if [[ $lines == 0 ]]; then
- # example output of no differences:
- # snapshot ./qrtest uuid=c41ff6b7-0527-f34d-95ac-190eecf54ff5 transid=2239 parent_uuid=64949e1b-4a3e-3945-9a8e-cd7b7c15d7d6 parent_transid=2239
- echo suspected identical: $bsub $leaf
- x btrfs sub del $leaf
+ if [[ -e $vol ]]; then
+ if [[ $vol == qd ]]; then
+ m btrfs sub del qd
+ else
+ leaf=$vol.leaf.$(date +%Y-%m-%dT%H:%M:%S%z)
+ m mv $vol $leaf
+ m btrfs property set -ts $leaf ro true
+
+ ### begin check if leaf is different, delete it if not ###
+ parentid=$(btrfs sub show $leaf | awk '$1 == "Parent" && $2 == "UUID:" {print $3}')
+ bsubs=(btrbk/$vol.*)
+ bsub= # base subvolume
+ # 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
+ # in testing, same subvol is 136 bytes. allow some overhead. 32 happens sometimes under systemd.
+ # $ errno 32
+ # EPIPE 32 Broken pipe
+ lines=$(btrfs send --no-data -p $bsub $leaf | btrfs receive --dump | head -n 100 | wc -l || [[ $? == 141 || ${PIPESTATUS[0]} == 32 ]])
+ if [[ $lines == 0 ]]; then
+ # example output of no differences:
+ # snapshot ./qrtest uuid=c41ff6b7-0527-f34d-95ac-190eecf54ff5 transid=2239 parent_uuid=64949e1b-4a3e-3945-9a8e-cd7b7c15d7d6 parent_transid=2239
+ echo suspected identical: $bsub $leaf
+ x btrfs sub del $leaf
+ fi