Skip to content

Commit 773426f

Browse files
authored
B #7400: Fix Thin Pool extend during snap operations (#3966)
Signed-off-by: Guillermo Ramos <gramos@opennebula.io>
1 parent 5366934 commit 773426f

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

src/tm_mad/fs_lvm_ssh/snap_create

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,20 @@ SNAP_CREATE_CMD=$(cat <<EOF
8888
8989
${SYNC}
9090
${SUDO} ${LVSCAN}
91-
$SUDO $LVEXTEND -L +${SIZE}M $VG_NAME/$POOL_NAME
91+
9292
$SUDO $LVCREATE -s -n $SNAP_NAME $VG_NAME/$LV_NAME
93+
94+
# Extend the pool as needed
95+
pool_size="\$($SUDO $LVS --nosuffix --noheadings --units B -o lv_size $VG_NAME/$POOL_NAME)"
96+
lvs_size=0
97+
for lv in \$($SUDO $LVS --noheading -o lv_name -S 'vg_name = $VG_NAME && pool_lv = $POOL_NAME'); do
98+
lv_size="\$($SUDO $LVS --nosuffix --noheadings --units B -o lv_size $VG_NAME/\$lv)"
99+
lvs_size=\$((lvs_size + lv_size))
100+
done
101+
if [ "\$lvs_size" -gt "\$pool_size" ]; then
102+
$SUDO $LVEXTEND -L \${lvs_size}B $VG_NAME/$POOL_NAME
103+
fi
104+
93105
${SYNC}
94106
EOF
95107
)

src/tm_mad/fs_lvm_ssh/snap_create_live

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,20 @@ SNAP_CREATE_CMD=$(cat <<EOF
8484
trap "virsh -c $LIBVIRT_URI domfsthaw $DEPLOY_ID || true" EXIT
8585
${SYNC}
8686
${SUDO} ${LVSCAN}
87-
$SUDO $LVEXTEND -L +${SIZE}M $VG_NAME/$POOL_NAME
87+
8888
$SUDO $LVCREATE -s -n $SNAP_NAME $VG_NAME/$LV_NAME
89+
90+
# Extend the pool as needed
91+
pool_size="\$($SUDO $LVS --nosuffix --noheadings --units B -o lv_size $VG_NAME/$POOL_NAME)"
92+
lvs_size=0
93+
for lv in \$($SUDO $LVS --noheading -o lv_name -S 'vg_name = $VG_NAME && pool_lv = $POOL_NAME'); do
94+
lv_size="\$($SUDO $LVS --nosuffix --noheadings --units B -o lv_size $VG_NAME/\$lv)"
95+
lvs_size=\$((lvs_size + lv_size))
96+
done
97+
if [ "\$lvs_size" -gt "\$pool_size" ]; then
98+
$SUDO $LVEXTEND -L \${lvs_size}B $VG_NAME/$POOL_NAME
99+
fi
100+
89101
${SYNC}
90102
else
91103
echo "Unable to freeze VM; aborting"

src/tm_mad/fs_lvm_ssh/snap_revert

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,18 @@ SNAP_REVERT_CMD=$(cat <<EOF
8989
${SUDO} ${LVSCAN}
9090
$SUDO $LVREMOVE -y $VG_NAME/$LV_NAME
9191
$SUDO $LVCREATE -s -n $LV_NAME $VG_NAME/$SNAP_NAME
92+
93+
# Extend the pool as needed
94+
pool_size="\$($SUDO $LVS --nosuffix --noheadings --units B -o lv_size $VG_NAME/$POOL_NAME)"
95+
lvs_size=0
96+
for lv in \$($SUDO $LVS --noheading -o lv_name -S 'vg_name = $VG_NAME && pool_lv = $POOL_NAME'); do
97+
lv_size="\$($SUDO $LVS --nosuffix --noheadings --units B -o lv_size $VG_NAME/\$lv)"
98+
lvs_size=\$((lvs_size + lv_size))
99+
done
100+
if [ "\$lvs_size" -gt "\$pool_size" ]; then
101+
$SUDO $LVEXTEND -L \${lvs_size}B $VG_NAME/$POOL_NAME
102+
fi
103+
92104
# Next two commands could be merged, but is advised against by LVM
93105
$SUDO $LVCHANGE -kn $VG_NAME/$LV_NAME
94106
$SUDO $LVCHANGE -ay $VG_NAME/$LV_NAME

0 commit comments

Comments
 (0)