minor improvement
[distro-setup] / mount-latest-subvol
index 688e4f1b6d512209c5d892e9add1fe5f1d901e8c..099c38f78f88eb85ad19de2a7864513d394b3453 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-script=$(readlink -f -- "$BASH_SOURCE")
+this_file="$(readlink -f -- "${BASH_SOURCE[0]}")"
+readonly this_file
 cd /
-[[ $EUID == 0 ]] || exec sudo -E "$script" "$@"
+[[ $EUID == 0 ]] || exec sudo -E "$this_file" "$@"
 
 source /usr/local/lib/err
 
@@ -305,7 +306,7 @@ for vol in ${all_vols[@]}; do
       # eg. when r=/q/p, for lines like
       # /q/p  /p  none  bind  0 0
       # output /p
-      new_roots+=($(sed -rn "s#^$r/\S+\s+(\S+)\s+none\s+(\S+,|)bind[[:space:],].*#\1#p" /etc/fstab))
+      new_roots+=("$(sed -rn "s#^$r/\S+\s+(\S+)\s+none\s+(\S+,|)bind[[:space:],].*#\1#p" /etc/fstab)")
     done
     (( ${#new_roots} )) || break
     binds+=(${new_roots[@]})
@@ -414,12 +415,12 @@ for vol in ${all_vols[@]}; do
     leaf_vols=($vol.leaf.*)
     count=${#leaf_vols[@]}
     leaf_limit_time=$(( EPOCHSECONDS - 60*60*24*60 )) # 60 days
-    leaf_new_limit_time=$(( EPOCHSECONDS - 60*60*24 )) # 1 day
-    # this goes backwards from oldest. leaf_new_limit_time is just in case
-    # the order gets screwed up or something.
+    leaf_new_limit_time=$(( EPOCHSECONDS - 60*60*24 * 5 )) # 5 days this
+    # goes backwards from oldest. leaf_new_limit_time is a safety
+    # measure to ensure we don't delete very recent leafs.
     for leaf in ${leaf_vols[@]}; do
       leaf_time=$(date -d ${leaf#"$vol".leaf.} +%s)
-      if (( leaf_limit_time > leaf_time || ( leaf_new_limit_time > leaf_time && count > 15 ) )); then
+      if (( leaf_limit_time > leaf_time || ( leaf_new_limit_time > leaf_time && count > 30 ) )); then
         x btrfs sub del $leaf
       fi
       count=$((count-1))
@@ -471,6 +472,9 @@ for dir in /mnt/r7/amy/{root/root,boot/boot}_ubuntubionic /mnt/{root2/root,boot2
   rm -f /nocow/btrfs-stale/$vol
 done
 
+if (( $ret )); then
+  echo "$0: exit status $ret. see error above"
+fi
 exit $ret