diff -Nur gnome-vfs2-2.20.0/libgnomevfs/gnome-vfs-cancellable-ops.c gnome-vfs2-2.20.0.new/libgnomevfs/gnome-vfs-cancellable-ops.c
--- gnome-vfs2-2.20.0/libgnomevfs/gnome-vfs-cancellable-ops.c	2007-09-17 19:00:46.000000000 +0200
+++ gnome-vfs2-2.20.0.new/libgnomevfs/gnome-vfs-cancellable-ops.c	2007-10-24 01:23:01.000000000 +0200
@@ -31,6 +31,7 @@
 #include "gnome-vfs-private-utils.h"
 #include "gnome-vfs-utils.h"
 #include "gnome-vfs-handle-private.h"
+#include "gnome-vfs-volume-monitor.h"
 
 #include <glib/gmessages.h>
 #include <glib/gutils.h>
@@ -275,6 +276,48 @@
 	return result;
 }
 
+
+/* FIXME: file method specific, should better be moved there */
+static gboolean
+_gnome_vfs_is_mount_point (GnomeVFSURI *uri)
+{		
+	GnomeVFSVolume *volume;
+	char *uri_string, *local_path, *mount_path;
+	GnomeVFSURI *mount_uri;
+	gboolean result;
+	       
+	uri_string = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE);
+	if (!uri_string)
+		return FALSE;
+
+	local_path = gnome_vfs_get_local_path_from_uri (uri_string);
+	g_free (uri_string);
+	if (!local_path) 
+		return FALSE;
+
+	volume = gnome_vfs_volume_monitor_get_volume_for_path (gnome_vfs_get_volume_monitor (), local_path);
+	g_free (local_path);
+	if (!volume)
+		return FALSE;
+
+	mount_path = gnome_vfs_volume_get_activation_uri (volume);
+	gnome_vfs_volume_unref (volume);
+	if (!mount_path)
+	       return FALSE;
+
+	mount_uri = gnome_vfs_uri_new (mount_path);
+	g_free (mount_path);
+	if (!mount_uri)
+		return FALSE;
+
+	result = gnome_vfs_uri_equal (mount_uri, uri);
+	gnome_vfs_uri_unref (mount_uri);
+
+	return result;
+}
+
+
+
 GnomeVFSResult
 gnome_vfs_find_directory_cancellable (GnomeVFSURI *near_uri,
 				      GnomeVFSFindDirectoryKind kind,
@@ -285,7 +328,8 @@
 				      GnomeVFSContext *context)
 {
 	GnomeVFSResult result;
-	GnomeVFSURI *resolved_uri;
+	GnomeVFSURI *resolved_uri, *parent_uri;
+	gboolean use_parent_uri = TRUE;
 
 	g_return_val_if_fail (result_uri != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS);
 
@@ -319,11 +363,21 @@
 		return GNOME_VFS_ERROR_NOT_SUPPORTED;
 	}
 
+	/* we use the parent uri only if it's not the mount point */
+	if (!_gnome_vfs_is_mount_point (near_uri)) {
+		parent_uri = gnome_vfs_uri_get_parent (near_uri);
+		if (parent_uri) {
+			gnome_vfs_uri_unref (near_uri);
+			near_uri = parent_uri;
+		}
+	}
+
 	/* Need to expand the final symlink, since if the directory is a symlink
 	 * we want to look at the device the symlink points to, not the one the
 	 * symlink is stored on
 	 */
 	result = _gnome_vfs_uri_resolve_all_symlinks_uri (near_uri, &resolved_uri);
+
 	if (result == GNOME_VFS_OK) {
 		gnome_vfs_uri_unref (near_uri);
 		near_uri = resolved_uri;
