diff -u shared/clone shared_self/clone
--- shared/clone	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/clone	2019-06-08 18:16:14.212278075 +0300
@@ -54,6 +54,8 @@
 
 SRC_PATH="${DST_DS_PATH}${SRC_ARG_PATH##$SRC_DS_PATH}"
 
+SRC_DIR="$(dirname "$SRC_ARG_PATH")"
+
 #-------------------------------------------------------------------------------
 # Get Image information
 #-------------------------------------------------------------------------------
@@ -88,21 +90,24 @@
 ssh_make_path $DST_HOST $DST_DIR $MONITOR
 
 #-------------------------------------------------------------------------------
-# Clone (cp) SRC into DST
+# Clone (cp) SRC to SRC_PATH/$VM_ID-$DISK_ID
 #-------------------------------------------------------------------------------
 
+CLONE_PATH="${SRC_DIR}/${VMID}-${DISK_ID}"
+
 if [ -n "$ORIGINAL_SIZE" -a "$SIZE" -gt "$ORIGINAL_SIZE" ]; then
-   RESIZE_CMD="qemu-img resize ${DST_PATH} ${SIZE}M"
+   RESIZE_CMD="qemu-img resize ${CLONE_PATH} ${SIZE}M"
 fi
 
-log "Cloning $SRC_PATH in $DST"
+log "Cloning $SRC_PATH in $CLONE_PATH"
 
 CLONE_CMD=$(cat <<EOF
     set -e -o pipefail
 
-    cd ${DST_DIR}
-    rm -f ${DST_PATH}
-    cp ${SRC_PATH} ${DST_PATH}
+    cd "${DST_DIR}"
+    rm -f "${DST_PATH}" "${CLONE_PATH}"
+    cp "${SRC_PATH}" "${CLONE_PATH}"
+    ln -s "$CLONE_PATH" "$DST_PATH"
 
     ${RESIZE_CMD}
 EOF
diff -u shared/cpds shared_self/cpds
--- shared/cpds	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/cpds	2019-06-08 18:38:39.602676954 +0300
@@ -74,11 +74,12 @@
 
 DST_PATH="${SRC_DS_PATH}${DST_ARG_PATH##$DST_DS_PATH}"
 
+logger -t "one_${0##*/}" -- "SRC_PATH=$SRC_PATH DST_PATH=$DST_PATH DISK_SRC=$DISK_SRC"
 if [ "$SNAP_ID" != "-1" ]; then
     [ "$CLONE" != "YES" ] && SRC_PATH="$DISK_SRC"
     SRC_PATH="$SRC_PATH.snap/$SNAP_ID"
+    logger -t "one_${0##*/}" -- "SRC_PATH=$SRC_PATH (snapshot)"
 fi
-
 #-------------------------------------------------------------------------------
 # Move the image back to the datastore
 #-------------------------------------------------------------------------------
diff -u shared/delete shared_self/delete
--- shared/delete	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/delete	2019-06-08 23:31:00.218067668 +0300
@@ -42,13 +42,15 @@
 DST_PATH=`arg_path $DST`
 DST_HOST=`arg_host $DST`
 
+CLONE_PATH="$(readlink -f $DST_PATH)"
+
 log "Deleting $DST_PATH"
 
 delete_file=$(cat <<EOF
 [ -e "$DST_PATH" ] || exit 0
 
 times=10
-function="rm -rf $DST_PATH"
+function="rm -rf $DST_PATH ${CLONE_PATH}*"
 
 count=1
 
@@ -66,5 +68,5 @@
 EOF
 )
 
-ssh_exec_and_log $DST_HOST "$delete_file" "Error deleting $DST_PATH"
+ssh_exec_and_log $DST_HOST "$delete_file" "Error deleting $DST_PATH and $CLONE_PATH"
 hup_collectd $DST_HOST
diff -u shared/failmigrate shared_self/failmigrate
--- shared/failmigrate	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/failmigrate	2019-06-09 00:08:04.305983715 +0300
@@ -16,4 +16,14 @@
 # limitations under the License.                                             #
 #--------------------------------------------------------------------------- #
 
+if [ -z "${ONE_LOCATION}" ]; then
+    TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
+else
+    TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
+fi
+
+source $TMCOMMON
+
+migrate_other "$@"
+
 exit 0
diff -u shared/ln shared_self/ln
--- shared/ln	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/ln	2019-06-08 18:05:53.845448542 +0300
@@ -94,11 +94,7 @@
     cd ${DST_DIR}
     rm -f ${DST_PATH}
 
-    if [ "${TM_MAD}" = 'ssh' ]; then
-        cp "${SRC_PATH}" "${DST_PATH}"
-    else
-        ln -s "${SRC_PATH}" "${DST_PATH}"
-    fi
+    ln -s "${SRC_PATH}" "${DST_PATH}"
 EOF
 )
 
diff -u shared/monitor shared_self/monitor
--- shared/monitor	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/monitor	2019-06-08 23:49:45.293025855 +0300
@@ -37,7 +37,7 @@
 
 DRV_ACTION=$1
 DS_ID=$2
-
+logger -t one_monitor -- "$0 $*"
 XPATH="${DRIVER_PATH}/../../datastore/xpath.rb -b $DRV_ACTION"
 
 unset i XPATH_ELEMENTS
diff -u shared/mvds shared_self/mvds
--- shared/mvds	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/mvds	2019-06-09 00:01:04.653185600 +0300
@@ -24,60 +24,4 @@
 #   - vmid is the id of the VM
 #   - dsid is the target datastore (0 is the system datastore)
 
-SRC=$1
-DST=$2
-
-VMID=$3
-DSID=$4
-
-if [ -z "${ONE_LOCATION}" ]; then
-    TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
-else
-    TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
-fi
-
-. $TMCOMMON
-
-DRIVER_PATH=$(dirname $0)
-
-#-------------------------------------------------------------------------------
-# Set dst path and dir
-#-------------------------------------------------------------------------------
-
-SRC_PATH="$(arg_path $SRC)"
-SRC_HOST="$(arg_host $SRC)"
-
-DST_PATH="$(arg_path $DST)"
-
-#-------------------------------------------------------------------------------
-# Get Image information
-#-------------------------------------------------------------------------------
-
-DISK_ID=$(basename ${SRC_PATH} | cut -d. -f2)
-
-XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
-
-unset i j XPATH_ELEMENTS
-
-set -x
-
-while IFS= read -r -d '' element; do
-    XPATH_ELEMENTS[i++]="$element"
-done < <(onevm show -x $VMID| $XPATH \
-                    /VM/HISTORY_RECORDS/HISTORY[last\(\)]/TM_MAD)
-
-TM_MAD="${XPATH_ELEMENTS[j++]}"
-
-#-------------------------------------------------------------------------------
-# Move the image back to the datastore
-#-------------------------------------------------------------------------------
-
-if [ "${TM_MAD}" = 'ssh' ]; then
-    log "Moving $SRC to datastore as $DST"
-
-    ssh_exec_and_log "${SRC_HOST}" \
-        "cp -r ${SRC_PATH} ${DST_PATH}" \
-        "Error copying ${SRC} to ${DST}" >&2
-fi
-
 exit 0
diff -u shared/snap_create shared_self/snap_create
--- shared/snap_create	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/snap_create	2019-06-09 00:03:22.506534888 +0300
@@ -66,12 +66,9 @@
 
 if [ "$CLONE" = "YES" ]; then
     DISK_PATH="${SYSTEM_DS_PATH}/disk.${DISK_ID}"
+    DISK_PATH="$(readlink -f "$DISK_PATH")"
 else
     DISK_PATH=$DISK_SRC
-
-    if [ "${TM_MAD}" = 'ssh' ]; then
-        CURRENT_PATH="${SYSTEM_DS_PATH}/disk.${DISK_ID}"
-    fi
 fi
 
 SNAP_DIR="${DISK_PATH}.snap"
diff -u shared/snap_delete shared_self/snap_delete
--- shared/snap_delete	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/snap_delete	2019-06-08 23:28:22.827519557 +0300
@@ -63,6 +63,7 @@
 
 if [ "$CLONE" = "YES" ]; then
     DISK_PATH="${SYSTEM_DS_PATH}/disk.${DISK_ID}"
+    DISK_PATH="$(readlink -f "$DISK_PATH")"
 else
     DISK_PATH=$DISK_SRC
 fi
diff -u shared/snap_revert shared_self/snap_revert
--- shared/snap_revert	2019-05-20 14:12:32.000000000 +0300
+++ shared_self/snap_revert	2019-06-09 00:04:26.562909168 +0300
@@ -68,12 +68,10 @@
     DISK_PATH="${SYSTEM_DS_PATH}/disk.${DISK_ID}"
 else
     DISK_PATH=$DISK_SRC
-
-    if [ "${TM_MAD}" = 'ssh' ]; then
-        CURRENT_PATH="${SYSTEM_DS_PATH}/disk.${DISK_ID}"
-    fi
 fi
 
+DISK_PATH="$(readlink -f "$DISK_PATH")"
+
 SNAP_DIR="${DISK_PATH}.snap"
 SNAP_PATH="${SNAP_DIR}/${SNAP_ID}"
 SNAP_PATH_RELATIVE=$(basename ${SNAP_PATH})
