Package: open-vm-tools
Version: 2:8.8.0+2012.05.21-724730-1+nmu2
Severity: important

Dear Maintainer,
The open-vm-tools package should be responsible for provinding drag-and-drop 
support,
however there is a grave problem as there is no synchronization of this 
operation.

* Expected Operation:
Dragging a file from the host into the virtual machine will result in
1) copying the data from the OS into the virtual machine (tmp folder)
2) copying the file from the tmp dir to the drop-location.
3) Having the file completely transferred

* Actual Operation:
The file will often be transfered partially as point 1 and 2 arent synchronized.
Easy to reproduce with big files, whereas  dropping on existing files typically 
works since you have to click the overwrite button

* Details:
the official vmware tools do this correctly by using a "vmblock" fileystem 
that blocks access to the file in the tmp dir until its completely transfered.
This module is not running when using the open-vm tools
(still a problem with newer versions as far as I can tell.)

I tried running the vmblock fs by hand and editing the init.d script,
but my attempts apparently failed, possibly the order is rather important
The difference to the official tools seems to be primarly in this script,
and it seems there is alot of the startup/shutdown procedures missing.


-- System Information:
Debian Release: 7.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-4-686-pae (SMP w/6 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages open-vm-tools depends on:
ii  libc6         2.13-38
ii  libdumbnet1   1.12-3.1
ii  libfuse2      2.9.0-2+deb7u1
ii  libgcc1       1:4.7.2-5
ii  libglib2.0-0  2.33.12+really2.32.4-5
ii  libicu48      4.8.1.1-12+deb7u1
ii  libprocps0    1:3.3.3-3
ii  libstdc++6    4.7.2-5

Versions of packages open-vm-tools recommends:
ii  ethtool       1:3.4.2-1
ii  open-vm-dkms  2:8.8.0+2012.05.21-724730-1+nmu2
ii  zerofree      1.0.2-1

Versions of packages open-vm-tools suggests:
ii  open-vm-toolbox  2:8.8.0+2012.05.21-724730-1+nmu2

-- Configuration Files:
/etc/init.d/open-vm-tools changed:
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC=`basename $0`
NAME=vmtoolsd
DAEMON=/usr/bin/$NAME
PIDPATH=/var/run
PIDFILE=$PIDPATH/$NAME.pid
DAEMON_ARGS="--background ${PIDFILE}"
SCRIPTNAME=/etc/init.d/${DESC}
[ -x "$DAEMON" ] || exit 0
.. /lib/init/vars.sh
.. /lib/lsb/init-functions
exit_if_not_in_vm () {
    if [ ! -x /usr/bin/vmware-checkvm ] || ! /usr/bin/vmware-checkvm > 
/dev/null 2>&1
    then
        [ "$VERBOSE" != no ] && log_daemon_msg "Not starting as we're not 
running in a VM." "$NAME"
        [ "$VERBOSE" != no ] && log_end_msg 0
        exit 0
    fi
}
do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test 
> /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
        $DAEMON_ARGS \
        || return 2
}
do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE 
--exec $DAEMON
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
}
do_load_modules() {
    vmware_start_vmblock
    # the daemon works well without the modules, so ignore
    # if they fail to load.
    [ "$VERBOSE" != no ] && log_daemon_msg "Loading $DESC modules"
    [ "$VERBOSE" != no ] && log_progress_msg "vmhgfs"
    modprobe vmhgfs
    [ "$VERBOSE" != no ] && log_progress_msg "vmsync"
    modprobe vmsync
    log_end_msg 0
}
do_remove_modules()
{
    [ "$VERBOSE" != no ] && log_daemon_msg "Removing $DESC modules"
    [ "$VERBOSE" != no ] && log_progress_msg "vmhgfs"
    modprobe -r vmhgfs
    [ "$VERBOSE" != no ] && log_progress_msg "vmsync";
    modprobe -r vmsync
    log_end_msg 0
}
vmware_start_vmblock() {
   mkdir -p -m 1777 /tmp/VMwareDnD
   if ! grep -q "fuse" /proc/filesystems; then
      # Try to load fuse module if it is not there yet.
      modprobe fuse > /dev/null 2>&1 || return 1
   fi
   # Vmblock-fuse dev path could be /var/run/vmblock-fuse
   # or /run/vmblock-fuse. Bug 758526.
   if grep -q "/run/vmblock-fuse fuse\.vmware-vmblock " /etc/mtab; then
      true;
   else
      mkdir -p /var/run/vmblock-fuse
      vmware-vmblock-fuse -o 
subtype=vmware-vmblock,default_permissions,allow_other /var/run/vmblock-fuse
   fi
}
vmware_stop_vmblock() {
    # Check if the file system is mounted and only unmount if so.
    # Start with FUSE-based version first, then legacy one.
    #
    # Vmblock-fuse dev path could be /var/run/vmblock-fuse,
    # or /run/vmblock-fuse. Bug 758526.
    if grep -q "/run/vmblock-fuse fuse\.vmware-vmblock " /etc/mtab; then
       # if it's mounted, then unmount it
       umount /var/run/vmblock-fuse
    fi
}
case "${1}" in
    start)
        # Check if we're running inside VMWare
        exit_if_not_in_vm
        # load modules
        do_load_modules
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
            0|1)
                [ "$VERBOSE" != no ] && log_end_msg 0
                RETVAL=0
                ;;
            2)
                [ "$VERBOSE" != no ] && log_end_msg 1
                RETVAL=1
                ;;
        esac
        ;;
    stop)
        # Check if we're running inside VMWare
        exit_if_not_in_vm
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
            0|1)
                [ "$VERBOSE" != no ] && log_end_msg 0
                RETVAL=0
                ;;
            2)
                [ "$VERBOSE" != no ] && log_end_msg 1
                RETVAL=1
                ;;
        esac
        do_remove_modules
        ;;
    force-reload|restart)
        exit_if_not_in_vm
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
            0|1)
                do_remove_modules
                do_load_modules
                do_start
                case "$?" in
                    0)
                        log_end_msg 0
                        RETVAL=0
                        ;;
                    1) # Old process is still running
                        log_end_msg 1
                        RETVAL=1
                        ;; 
                    *) # Failed to start
                        log_end_msg 1
                        RETVAL=1
                        ;;
                esac
                ;;
            *)
                # Failed to stop
                log_end_msg 1
                RETVAL=1
                ;;
        esac
        ;;
    *)
        log_success_msg "Usage: ${0} {start|stop|restart|force-reload}"
        exit 1
        ;;
esac
exit $RETVAL

/etc/vmware-tools/tools.conf changed:


-- no debconf information


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to