}
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=""