tu /etc/fstab <<<"$l"
done
}
+kill-dir() {
+ for sig; do
+ echo kill-dir $sig
+ found_pids=false
+ if pids=$(timeout 4 lsof -t $dir); then
+ found_pids=true
+ timeout 4 lsof -w $dir
+ kill -$sig $pids
+ fi
+ # fuser will find open sockets that lsof won't, for example from gpg-agent.
+ # note: -v shows kernel processes, which then doesn't return true when we want
+ if timeout 4 fuser -m $dir &>/dev/null; then
+ found_pids=true
+ fuser -$sig -mvk $dir
+ fi
+ sleep .5
+ if ! $found_pids; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+force=false
+if [[ $1 == -f ]]; then
+ force=true
+fi
ret=0
shopt -s nullglob
+# ssh and probably some other things care about parent directory
+# ownership, and ssh doesn\'t allow any group writable parent
+# directories, so we are forced to use a directory structure similar
+# to home directories
f=(/mnt/root/btrbk/q.*)
if [[ -e $f ]]; then
fstab <<EOF
-$first_root_crypt /q btrfs noatime,subvol=q 0 0
+$first_root_crypt /q btrfs noatime,subvol=q,gid=1000 0 0
/q/p /p none bind 0 0
EOF
fi
if e umount -R $dir; then
unmounted+=($dir)
else
- echo "$0: failed to umount $dir"
- # lsof will fail if it finds no pids
- if ! e timeout 4 lsof $dir; then
- umount_ret=false
- ret=1
- continue
+ if ! kill-dir TERM TERM TERM INT INT HUP HUP; then
+ if $force; then kill-dir KILL; fi
fi
- pids=$(lsof -t $dir) ||:
- kill $pids
- sleep .5
+
if e umount -R $dir; then
unmounted+=($dir)
else
+ echo "$0: failed to umount $dir"
umount_ret=false
ret=1
continue
# todo: decipher /mnt/root, like we do in check-subvol-stale
cd /mnt/root
if [[ -e $vol ]]; then
- e mv $vol $vol.leaf.$(date +%Y%m%dT%H%M%S%z)
+ e mv $vol $vol.leaf.$(date +%Y-%m-%dT%H:%M:%S-%z)
fi
# Note, we make a few assumptions in this script, like
# $d was not a different subvol id than $vol, and
done
### disabled
-if [[ $HOSTNAME == treetowlxxxxxxxxx ]]; then
+if [[ $HOSTNAME == kdxxxxxxxxx ]]; then
# partitioned it with fai partitioner outside of fai,
# because it\'s worth it to have 1% space reserved for boot and
# swap partitions in case I ever want to boot off those drives.
EOF
fi
tu /etc/crypttab <<EOF
-crypt_dev_$dev /dev/disk/by-id/$dev /q/root/luks/host-treetowl discard,luks
+crypt_dev_$dev /dev/disk/by-id/$dev /q/root/luks/host-kd discard,luks
EOF
if [[ ! -e /dev/mapper/crypt_dev_$dev ]]; then
cryptdisks_start crypt_dev_$dev