tags 443200 pending
tags 443200 patch
thanks

On Sat, Sep 22, 2007 at 03:44:37PM -0700, [EMAIL PROTECTED] wrote:
> On Wed, Sep 19, 2007 at 04:31:10PM -0000, [EMAIL PROTECTED] wrote:
> >  cdrom and cdrom(1) are the same media
> 
> good thing i know exactly what this bug report is about...
> 
> so, because ltspfs mounts in /tmp/.ltspfs-username/* and then bind
> mounts into /media/username/*, gnome-vfs sees this as two different
> devices. 

tried another less intrusive approach to fixing the problem, using
"mount --move" instead of "mount --bind".

patch attached based on upstream bzr:
   
   http://bazaar.launchpad.net/~ltsp-upstream/ltspfs/ltspfs-trunk/

also available in bzr branch:
  
  http://llama.freegeek.org/~vagrant/bzr/ltspfs/bugs/ltspfs-debian-bts-443200

live well,
  vagrant
=== modified file 'scripts/ltspfsmounter'
--- scripts/ltspfsmounter	2007-12-14 00:39:37 +0000
+++ scripts/ltspfsmounter	2008-01-07 23:15:01 +0000
@@ -25,11 +25,14 @@
         print >>sys.stderr, "mount failed:", e
     try:
         call(lbmount_command)
+        if os.access(hidden_mount, 0):
+            os.rmdir(hidden_mount)
+        if os.access(root, 0):
+            os.rmdir(root)
     except OSError, e:
         print >>sys.stderr, "suid mount failed:", e
 
 def remove_ltspfsmount(root, dev):
-    hidden_mount = "%s/%s" % (root, dev)
     lbumount_command=['lbmount', '--umount', dev]
     ltspfs_umount=['fusermount', '-uzq', root+'/'+dev]
 
@@ -42,9 +45,6 @@
     except OSError, e:
         print >>sys.stderr, "umount failed:", e
 
-    if os.access(hidden_mount, 0):
-        os.rmdir(hidden_mount)
-
 def cleanup(user):
     known_mounts = open( '/proc/mounts', 'r' ).readlines()
     for dir in ['/media', '/tmp']:
@@ -72,13 +72,14 @@
     path = sys.argv[1]
     command = sys.argv[2]
     root = "/tmp/.%s-ltspfs" % get_var('USER')
+    mediaroot = "/media/%s" % get_var('USER')
     conn = get_var('SSH_CONNECTION').split()[0]
     dev = path.split('/')[-1]
 
     if command=='add':
         add_ltspfsmount(conn, path, root, dev)
     elif command=='remove':
-        remove_ltspfsmount(root, dev)
+        remove_ltspfsmount(mediaroot, dev)
     elif command=='cleanup':
         cleanup(get_var('USER'))
     else:

=== modified file 'src/lbmount.c'
--- src/lbmount.c	2007-08-21 20:01:32 +0000
+++ src/lbmount.c	2008-01-07 23:15:01 +0000
@@ -138,7 +138,7 @@
         }
         /* Statically build command line to prevent monkey business */
         if (path2)
-            execle(mountprog, mountprog, "--bind", path1, path2, NULL,
+            execle(mountprog, mountprog, "--move", path1, path2, NULL,
                    null_env);
         else
             execle(umountprog, umountprog, path1, NULL, null_env);
@@ -247,10 +247,10 @@
     snprintf(ltspfsmount, sizeof(ltspfsmount), "%s%s%s%s",
              ltspfsdir1, pwent->pw_name, ltspfsdir2, mountpoint);
 
-    if (!is_mounted(ltspfsmount))
-        exit(1);
-
     if (!umount) {
+        if (!is_mounted(ltspfsmount))
+            exit(1);
+
         /* OK, name's a normal size, and looks valid. Begin creating the media
          * mount point. First, we need to create /media/uid */
 

Reply via email to