From 59df1261e0dc123c22dde588ced5c3abbf8300ca Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Fri, 22 Apr 2016 16:03:26 -0400 Subject: updated btrfs send/recv code; script to put layered seed on iso --- btrfs-functions.sh | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'btrfs-functions.sh') diff --git a/btrfs-functions.sh b/btrfs-functions.sh index 3648c24..b83b94d 100644 --- a/btrfs-functions.sh +++ b/btrfs-functions.sh @@ -100,28 +100,52 @@ btrfs_show_default_path() mp=$(btrfs_get_mountpoint "$mp") || die # TODO: fix caller? btrfs_mountpoint "$mp" || die "not a mountpoint: $mp" path=$(btrfs subvolume get-default "$mp"/|sed -n -e 's/.* path //p') - printf '%s\n' "$mp/$path" + if [ "$path" ]; then + printf '%s\n' "$mp/$path" + else + printf '%s\n' "$mp" + fi +} + +btrfs_show_default_id() +{ + $(ARGS_NE mp) + local id + mp=$(btrfs_get_mountpoint "$mp") || die # TODO: fix caller? + btrfs_mountpoint "$mp" || die "not a mountpoint: $mp" + id=$(btrfs subvolume get-default "$mp"/|sed -n -e 's/^ID \([^ ]*\) .*/\1/p') + [ "$id" ] || return + echo $id } btrfs_replace_default_subvolume_with() { $(ARGS_NE new_default) - local old_default subvol_id - old_default=$(btrfs_show_default_path "$new_default") || die + local old_default old_default_id new_default_id + old_default_id=$(btrfs_show_default_id "$new_default") || die + new_default_id=$(btrfs_show_subvolume_id "$new_default") || die + + [ "$new_default_id" = "$old_default_id" ] && return + + if [ "$old_default_id" != 5 ]; then + old_default=$(btrfs_show_default_path "$new_default") || die + else + old_default= + fi - [ "$new_default" = "$old_default" ] && return + btrfs subvolume set-default "$new_default_id" "$new_default" || die - subvol_id=$(btrfs_show_subvolume_id "$new_default") || die - btrfs subvolume set-default "$subvol_id" "$new_default" || die - btrfs subvolume delete "$old_default" - sex mv "$new_default" "$old_default" + if [ "$old_default" ]; then + btrfs subvolume delete "$old_default" + sex mv "$new_default" "$old_default" + fi } btrfs_show_subvolume_id() { $(ARGS_NE path) local result - result=$(btrfs subvolume show "$path" | sed -n -e 's/^[ \t]*Subvolume ID:[ \t]*//p') + result=$(btrfs subvolume show "$path" | sed -n -e 's/^[ \t]*Subvolume ID:[ \t]*//p; s/.*is toplevel subvolume/5/p') if [ "$result" ] then printf '%s\n' "$result" else false -- cgit v1.2.3