1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-13 12:58:17 +03:00

B #5170: add a lock to lvm actions in fs_lvm

This commit is contained in:
Javi Fontan 2017-05-25 14:08:38 +02:00 committed by Vlastimil Holer
parent e4e72f5c63
commit fa1ed2be55
No known key found for this signature in database
GPG Key ID: EB549BADEFD07C53
3 changed files with 27 additions and 4 deletions

View File

@ -90,11 +90,24 @@ LV_NAME="lv-one-$VM_ID-$DISK_ID"
VG_NAME="vg-one-$DS_SYS_ID"
DEV="/dev/${VG_NAME}/${LV_NAME}"
CLONE_CMD=$(cat <<EOF
set -e -o pipefail
mkdir -p $DST_DIR
# Execute lvcreate with a lock in the frontend
mkdir -p $DST_DS_PATH
CREATE_CMD=$(cat <<EOF
$SUDO $SYNC
$SUDO $LVSCAN
$SUDO $LVCREATE --wipesignatures n -L${SIZE}M -n $LV_NAME $VG_NAME
EOF
)
LOCK_FILE="$DST_DS_PATH/lock"
flock -w 120 $LOCK_FILE ssh_exec_and_log "$DST_HOST" "$CREATE_CMD" \
"Error creating LV named $LV_NAME"
CLONE_CMD=$(cat <<EOF
set -e -o pipefail
$QEMU_IMG convert -O raw "$SRC_PATH" "$DEV"
rm -f "$DST_PATH"
ln -s "$DEV" "$DST_PATH"

View File

@ -60,5 +60,7 @@ DELETE_CMD=$(cat <<EOF
EOF
)
ssh_exec_and_log "$DST_HOST" "$DELETE_CMD" "Error deleting $DST_PATH"
LOCK_FILE="$DST_DS_PATH/lock"
flock -w 120 $LOCK_FILE ssh_exec_and_log "$DST_HOST" "$DELETE_CMD" \
"Error deleting $DST_PATH"

View File

@ -54,6 +54,10 @@ DEV="/dev/${VG_NAME}/${LV_NAME}"
DUMP_CMD=$(cat <<EOF
$DD if=$DEV of=$DST_PATH bs=64k
EOF
)
DELETE_CMD=$(cat <<EOF
$SUDO $LVREMOVE -f $DEV
EOF
)
@ -66,4 +70,8 @@ log "Dumping $SRC to $DST"
ssh_exec_and_log "$SRC_HOST" "$DUMP_CMD" \
"Error dumping $SRC to $DST"
LOCK_FILE="$DST_DS_PATH/lock"
flock -w 120 $LOCK_FILE ssh_exec_and_log "$SRC_HOST" "$REMOVE_CMD" \
"Error deleting LV $LV_NAME"
exit 0