X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=virt-p2v.sh;h=228e1fc57aa101bd9a34e4a9c4ba4cce1e04a2fe;hb=ed6daabef5e8dfab691520e94e2c39458cd3a8ec;hp=0007e54bec6e1d39d1235e0f575bc0640eebcaec;hpb=733cfd03fb692fc76a8ea87018640cd2e9806409;p=virt-p2v.git diff --git a/virt-p2v.sh b/virt-p2v.sh index 0007e54..228e1fc 100755 --- a/virt-p2v.sh +++ b/virt-p2v.sh @@ -251,6 +251,13 @@ function search_parts { # $parts is returned. } +# This generates a snapshot device name from a device name. +# eg. sda -> snap_sda +# Sets $dname. +function snap_name { + dname=`echo -n snap_"$1" | tr -cs '[:alnum:]' _` +} + #---------------------------------------------------------------------- # Network configuration functions. @@ -430,9 +437,12 @@ while [ "$state" != "exit" ]; do else stat=off fi + log running blockdev --getsize /dev/$d gigs=$(($(blockdev --getsize /dev/$d)/2/1024/1024)) + log /dev/$d has size $gigs deviceslist="$deviceslist $d /dev/$d(${gigs}GB) $stat" done + log deviceslist="$deviceslist" dialog \ --extra-button --extra-label "Back" --nocancel \ @@ -540,13 +550,14 @@ rm -f /etc/lvm/cache/.cache # Snapshot the block devices. for d in $devices_to_send; do - log snapshotting block device /dev/$d ... + snap_name $d + log snapshotting block device /dev/$d to $dname ... - snapshot $d snap_$d + snapshot $d $dname # The block devices are whole disks. Use kpartx to repartition them. - log running kpartx -a /dev/mapper/snap_$d ... - kpartx -a /dev/mapper/snap_$d + log running kpartx -a /dev/mapper/$dname ... + kpartx -a /dev/mapper/$dname done # Rescan for LVs. @@ -560,8 +571,11 @@ vgchange -a y log mount $root_filesystem as /mnt/root -if [ -f /dev/mapper/snap_$root_filesystem ]; then - mount /dev/mapper/snap_$root_filesystem /mnt/root +snap_name $root_filesystem +root_filesystem_dname="$dname" + +if [ -b /dev/mapper/$root_filesystem_dname ]; then + mount /dev/mapper/$root_filesystem_dname /mnt/root else mount /dev/$root_filesystem /mnt/root fi @@ -645,12 +659,14 @@ for dev in $devices_to_send; do name="$basename-$rdev.img" log sending $dev to $name - sectors=`blockdev --getsize /dev/mapper/snap_$dev` + snap_name $dev + + sectors=`blockdev --getsize /dev/mapper/$dname` gigs=$(($sectors/2/1024/1024)) echo "Sending /dev/$dev (${gigs} GB) to remote machine" - dd if=/dev/mapper/snap_$dev | gzip --best | + dd if=/dev/mapper/$dname | gzip --best | case "$remote_transport" in ssh) ssh -p "$remote_port" "$remote_host" \ @@ -669,8 +685,9 @@ done # Clean up. #for d in $devices_to_send; do -# kpartx -d /dev/mapper/snap_$d -# drop_snapshot snap_$d +# snap_name $d +# kpartx -d /dev/mapper/$dname +# drop_snapshot $dname #done # This file must end with a newline