From: James Bunton Date: Mon, 29 Jan 2024 05:39:57 +0000 (+1100) Subject: bsnap more robust lvm snapshots X-Git-Url: https://code.delx.au/monosys/commitdiff_plain/de694e0b06a869c4bc4987220aaaca053d322e00 bsnap more robust lvm snapshots --- 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=""