summaryrefslogtreecommitdiff
path: root/monitor
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2009-04-09 19:05:37 -0400
committerDavid Zeuthen <davidz@redhat.com>2009-05-01 15:51:35 -0400
commitf1806a6055af42213362d7d686e6844abf4bf027 (patch)
tree71a8bf2f040e339453a1fc66d54c07a7d1de1cf2 /monitor
parentfff39a618cd0ce467e6629cee461784e404cca83 (diff)
downloadgvfs-f1806a6055af42213362d7d686e6844abf4bf027.tar.gz
Avoid automounting volumes on virtual and unknown buses
Basically we want to avoid automounting volumes from 1. drives on a 'virtual' or unset bus 2. volumes without a drive This is to avoid interference with things like Fedora's livecd-tools that use device-mapper to set up images. See https://bugzilla.redhat.com/show_bug.cgi?id=494144 for more background. In the future we might want to relax 1. so automounting things like Linux MD and LVM2 devices work.
Diffstat (limited to 'monitor')
-rw-r--r--monitor/gdu/ggduvolume.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/monitor/gdu/ggduvolume.c b/monitor/gdu/ggduvolume.c
index b5403251..a5a3321f 100644
--- a/monitor/gdu/ggduvolume.c
+++ b/monitor/gdu/ggduvolume.c
@@ -293,6 +293,56 @@ update_volume (GGduVolume *volume)
volume->should_automount = FALSE;
}
+ /* Avoid automounting volumes from
+ *
+ * 1. drives on a 'virtual' or unset bus
+ * 2. volumes without a drive
+ *
+ * This is to avoid interference with things like Fedora's
+ * livecd-tools that use device-mapper to set up images. See
+ * https://bugzilla.redhat.com/show_bug.cgi?id=494144 for more
+ * background.
+ *
+ * In the future we might want to relax 1. so automounting
+ * things like Linux MD and LVM2 devices work.
+ */
+ if (volume->drive != NULL)
+ {
+ GduPresentable *drive_presentable;
+ drive_presentable = g_gdu_drive_get_presentable (volume->drive);
+ if (drive_presentable != NULL)
+ {
+ GduDevice *drive_device;
+ drive_device = gdu_presentable_get_device (drive_presentable);
+ if (drive_device != NULL)
+ {
+ const gchar *bus;
+ bus = gdu_device_drive_get_connection_interface (drive_device);
+ if (bus == NULL || strlen (bus) == 0 || g_strcmp0 (bus, "virtual") == 0)
+ {
+ volume->should_automount = FALSE;
+ }
+ g_object_unref (drive_device);
+ }
+ else
+ {
+ volume->should_automount = FALSE;
+ }
+ }
+ else
+ {
+ volume->should_automount = FALSE;
+ }
+ }
+ else
+ {
+ volume->should_automount = FALSE;
+ }
+
+ g_debug ("should_automount = %d for %s",
+ volume->should_automount,
+ device != NULL ? gdu_device_get_device_file (device) : "(none)");
+
g_free (activation_uri);
}