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:
parent
e4e72f5c63
commit
fa1ed2be55
@ -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"
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user