diff -ur gnome-volume-manager-0.9.5+cvs20040724/src/manager.c gnome-volume-manager-0.9.5+cvs20040724.new/src/manager.c
--- gnome-volume-manager-0.9.5+cvs20040724/src/manager.c	2004-06-12 04:07:00.000000000 -0500
+++ gnome-volume-manager-0.9.5+cvs20040724.new/src/manager.c	2004-08-12 13:24:43.000000000 -0500
@@ -22,6 +22,8 @@
 #include <dbus/dbus-glib.h>
 #include <libhal.h>
 
+#include <mntent.h>
+
 #include "gvm.h"
 
 #ifdef ENABLE_NLS
@@ -362,6 +364,44 @@
 }
 
 /*
+ * gvm_get_fstab_path - scans the fstab file for an entry matching the
+ * specified device name, even if this entry is a symbolic link that eventually
+ * resolves to the real device
+ */
+static void
+gvm_get_fstab_path (char *device, char *real_device, GError **error)
+{
+    GQuark domain = g_quark_from_static_string ("gnome-volume-manager");
+
+    struct mntent *mnt; /* pointer to the next mntent record */
+    char buf[PATH_MAX]; /* buffer to store resolved real paths */
+    char *res;          /* result of realpath, NULL if error */
+    FILE *fstab = setmntent("/etc/fstab" /* get this some other way? */, "r");
+
+    if (fstab == NULL) {
+        g_set_error (error, domain, 0, "failed to open file");
+        return;
+    }
+    
+    /* loop over each fstab entry */
+    while ((mnt = getmntent (fstab)) != NULL) {
+        res = realpath (mnt->mnt_fsname, buf);
+        
+        if (res == NULL)
+            continue;
+            
+        if (strcmp (device, buf) == 0) {
+            g_stpcpy (real_device, mnt->mnt_fsname);
+            endmntent (fstab);
+            return;
+        }
+    }
+    
+    endmntent (fstab);
+    g_set_error (error, domain, 0, "%s not found in fstab", device);
+}
+
+/*
  * gvm_device_mount - use BIN_MOUNT to mount the given device node.
  *
  * Note that this requires that the given device node is in /etc/fstab.  This
@@ -370,17 +410,28 @@
 static void
 gvm_device_mount (char *device)
 {
+    char fstab_device[PATH_MAX];
 	char *argv[3];
 	GError *error = NULL;
 
+    /* resolve the system device path to the one in the fstab */
+    gvm_get_fstab_path (device, fstab_device, &error);
+    if (error) {
+        g_warning ("could not find %s in fstab: %s\n", device, error->message);
+        g_error_free (error);
+        return;
+    }
+    
 	argv[0] = BIN_MOUNT;
-	argv[1] = device;
+	argv[1] = fstab_device;
 	argv[2] = NULL;
-
-	g_spawn_async (g_get_home_dir (), argv, NULL, 0, NULL,
-		       NULL, NULL, &error);
-	if (error)
-		warn ("failed to exec " BIN_MOUNT ": %s\n", error->message);
+    
+	g_spawn_async (g_get_home_dir (), argv, NULL, 0, NULL, NULL, NULL, &error);
+	if (error) {
+		g_warning ("failed to exec " BIN_MOUNT ": %s\n", error->message);
+        g_error_free (error);
+        return;
+    }
 }
 
 /*
