+
+# if we have /p, rsync to targets without /p
+if mountpoint /p; then
+ for tg in ${targets[@]}; do
+ case $tg in
+ tp|li|lk)
+ # todo, test this
+ for x in /p/c/machine_specific/*.hosts; do
+ if grep -qxF $tg $x; then
+ dir=${x%.hosts}
+ rsync-dirs ${dir##*/} $dir
+ fi
+ done
+ ;;
+ esac
+ done
+fi
+
+first_root=$(awk '$2 == "/mnt/root" {print $1}' /etc/mtab)
+
+# make $primary have the rw snapshot
+if [[ $primary ]] && ! $dry_run; then
+ fstab=()
+ for m in ${mountpoints[@]}; do
+ last-snap $m
+ fstab+=("$first_root $m btrfs noatime,subvol=$last_snap 0 0")
+ done
+
+ printf "%s\n" "${fstab[@]}" | cedit /etc/fstab
+ for d in ${mountpoints[@]}; do
+ mount $d
+ btrfs sub del /mnt/root$d
+ done
+ ssh root@primary bash -s "${mountpoints[*]}" "${last_snaps[*]}" <<'EOF'
+set -xe
+mountpoints=($1)
+last_snaps=($2)
+first_root=$(awk '$2 == "/mnt/root" {print $1}' /etc/mtab)
+for ((i=0; i < ${#mountpoints[@]}; i++)); do
+ m=${mountpoints[i]}
+ vol=${m##*/}
+ fstab+=("$first_root $m btrfs noatime,subvol=$vol 0 0")
+ cd /mnt/root
+ btrfs sub snapshot ${last_snaps[i]} $vol
+ mount $m
+done
+EOF
+fi
+
+
+# background on btrbk timezones. with short/long, timestamps use local time.
+# for long, if your local time moves backwards, by moving timezones or
+# for an hour when daylight savings changes it, you will temporarily get
+# a more aggressive retention policy for the overlapping period, and
+# vice versa for the opposite timezone move. The alternative is using
+# long-iso, which puts timezone info into the timestamp, which means
+# that instead of shifting time, you shift the start of day/week/month
+# which is used for retention to your new local time, which means for
+# example, if you moved forward by 8 hours, the daily/weekly/monthly
+# retention will be 8 hours more aggressive since midnight is at a new
+# time, unless you fake the timzeone using the TZ env variable.
+# However, in the short term, there will be no inconsistencies.
+# I don't see any problem with shifting when the day starts for
+# retention, so I'm using long-iso.