From 118e30597315cb59d42491fdb16645307a82c653 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" <rsmontero@opennebula.org> Date: Mon, 13 Nov 2023 12:15:37 +0100 Subject: [PATCH] F #6333: Fix ssh-replica issues - Remove self-link when saving persistent images - Adjust migrate to new structure (>6.8) that not use symlinks --- src/tm_mad/ssh/mvds | 5 +++++ src/vmm_mad/remotes/kvm/migrate | 28 ++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/tm_mad/ssh/mvds b/src/tm_mad/ssh/mvds index 735c5f2be1..1594a21ac9 100755 --- a/src/tm_mad/ssh/mvds +++ b/src/tm_mad/ssh/mvds @@ -65,6 +65,11 @@ CONVERT_CMD=$(cat <<EOF if [ -e $SRC_PATH_SNAP/base ]; then rm -f $SRC_PATH_SNAP/base $SRC_PATH_SNAP/base.1 $SRC_PATH_SNAP/rs_tmp + + if [ "\$(ls $SRC_PATH_SNAP)" = "${SRC_FILE}.snap" ]; then + rm -f $SRC_PATH_SNAP/${SRC_FILE}.snap + fi + rmdir $SRC_PATH_SNAP elif [ -d $SRC_PATH_SNAP ]; then rm -rf $SRC_PATH_SNAP diff --git a/src/vmm_mad/remotes/kvm/migrate b/src/vmm_mad/remotes/kvm/migrate index 4b1890d7a9..8d51749421 100755 --- a/src/vmm_mad/remotes/kvm/migrate +++ b/src/vmm_mad/remotes/kvm/migrate @@ -41,15 +41,12 @@ get_size_and_format_of_disk_img() { local QEMU_IMG_PATH="$1" local PARAM="$2" - if [ -L "$QEMU_IMG_PATH" ]; then - TARGET=$(readlink "$QEMU_IMG_PATH")A - # symlink to disk.X.snap/base.1 - if [[ "$TARGET" =~ disk.[0-9]*.snap/base.1 ]]; then - echo unknown qcow2-symlink - return - fi - - # symlink, assume network disk + if [[ "$TARGET" =~ disk.[0-9]*.snap/ ]]; then + #Disk lives in snap dir it is a link (includes replica) + echo unknown qcow2-symlink + return + elif [ -L "$QEMU_IMG_PATH" ]; then + #Disk is a synlink, assume network-disk echo unknown network-disk return fi @@ -175,10 +172,17 @@ else # recreate symlinks if [ -L "$DISK_PATH" ]; then - LINK_TARGET=$(readlink $DISK_PATH) - ssh_exec_and_log "$DEST_HOST" "[ -L \"$DISK_PATH\" ] || ln -s \"$LINK_TARGET\" \"$DISK_PATH\"" - "Failed to create symlink $DISK_PATH -> $LINK_TARGET on $DEST_HOST" + TARGET=$(readlink $DISK_PATH) + LNAME=$DISK_PATH + elif [[ "$DISK_PATH" =~ (disk.([0-9]*).snap/[0-9]*) ]]; then + TARGET=${BASH_REMATCH[1]} + LNAME="disk.${BASH_REMATCH[2]}" + else + continue fi + + ssh_exec_and_log "$DEST_HOST" "[ -L \"$LNAME\" ] || ln -s \"$TARGET\" \"$LNAME\"" + "Failed to create symlink $TARGET -> $LNAME on $DEST_HOST" done # copy vm.xml and ds.xml from the $VM_DIR