lots of fixes, new music stuff
[distro-setup] / mount-latest-subvol
index 93a085a8e20e764e85d43153480f1a58b924507d..7a179c4fd604480b50af48136d81990a25cef69b 100644 (file)
@@ -268,13 +268,6 @@ else
   do_o=false
 fi
 
-if [[ $HOSTNAME == frodo ]]; then
-  fstab <<EOF
-$crypt_dev  /i  btrfs  noatime,subvol=i$mopts  0 0
-EOF
-fi
-
-
 
 ##### end setup fstab for subvols we care about ######
 
@@ -389,47 +382,27 @@ for vol in ${all_vols[@]}; do
     m btrfs property set -ts $leaf ro true
 
     ### 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 of btrfs-snapshots-diff
-      # todo: need python3 port of btrfs-snapshots-diff, py2 no exist on nabia
-      parentid=$(btrfs sub show $leaf | awk '$1 == "Parent" && $2 == "UUID:" {print $3}')
-      bsubs=(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. 32 happens sometimes under systemd.
-        # $ errno 32
-        # EPIPE 32 Broken pipe
-        btrfs send --no-data -p $bsub $leaf | head -c 1000 > $tmp || [[ $? == 141 || ${PIPESTATUS[0]} == 32 ]]
-        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
-            # rotate in case we find a bug, weve got 2 old ones
-            tmpleaf=($vol.tmpleaf2.*)
-            if (( ${#tmpleaf[@]} )); then
-              x btrfs sub del ${tmpleaf[@]}
-            fi
-            tmpleaf=($vol.tmpleaf1.*)
-            if (( ${#tmpleaf[@]} )); then
-              x mv ${tmpleaf[0]} $vol.tmpleaf2.${tmpleaf[0]#$vol.tmpleaf1.}
-            fi
-            echo suspected identical: $bsub $leaf
-            x mv $leaf $vol.tmpleaf1.${leaf#$vol.leaf.}
-          fi
-        fi
+    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
+      tmp=$(mktemp)
+      # 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
     fi
     ### end check if leaf is different, delete it if not ###