From de694e0b06a869c4bc4987220aaaca053d322e00 Mon Sep 17 00:00:00 2001 From: James Bunton Date: Mon, 29 Jan 2024 16:39:57 +1100 Subject: [PATCH] bsnap more robust lvm snapshots --- bsnap/bsnap | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/bsnap/bsnap b/bsnap/bsnap index 4a39f10..af77d1f 100755 --- a/bsnap/bsnap +++ b/bsnap/bsnap @@ -57,25 +57,34 @@ function unsnap_bind { } function snap_lvm { - local dev="$1" mnt="$2" + local mnt="$2" local lvname="" vgname="" - read -r lvname vgname _ < <(lvdisplay --noheadings -C "$dev") + read -r lvname vgname _ < <(get_lvm_vgname_lvname "${mnt}") + echo "snapshot ${vgname}/${lvname}" - lvcreate -L1G --snapshot --name "${lvname}snap" "${vgname}/${lvname}" - mount -o ro "${dev}snap" "/a${mnt}" + lvcreate -L1G --snapshot --name "${lvname}-snap" "${vgname}/${lvname}" + mount -o ro "/dev/${vgname}/${lvname}-snap" "/a${mnt}" } function unsnap_lvm { - local snapdev="${1}snap" - local snapmnt="/a$2" - if mountpoint -q "$snapmnt"; then - umount "$snapmnt" + local mnt="$2" + local lvname="" vgname="" + + if mountpoint -q "/a$mnt"; then + umount "/a$mnt" fi - if [ -b "$(readlink -f "$snapdev")" ]; then - lvremove -f "${dev}snap" + + read -r lvname vgname _ < <(get_lvm_vgname_lvname "${mnt}") + if lvdisplay "${vgname}/${lvname}-snap" &> /dev/null; then + lvremove -f "${vgname}/${lvname}-snap" fi } +function get_lvm_vgname_lvname { + local mnt="$1" subvol="" + lvdisplay --noheadings -C "$(findmnt -n -o source "$mnt")" +} + function snap_btrfs { local mnt="$2" opts="$3" snapdir="" -- 2.39.2