summaryrefslogtreecommitdiff
path: root/monitor
diff options
context:
space:
mode:
authorsegfault <segfault@riseup.net>2017-12-20 08:12:15 +0100
committerOndrej Holy <oholy@redhat.com>2018-08-15 08:19:22 +0000
commit3db2ca9828fa19bcea032899f48ae38478112526 (patch)
tree1389115c848723be9aebea8d26c60e6716374259 /monitor
parentc0699c2e3c702b9efd610f4bf364ace9c70a273a (diff)
downloadgvfs-3db2ca9828fa19bcea032899f48ae38478112526.tar.gz
udisks2: Use loop backing file as description for unlock
For encrypted loop devices, the backing file name is a better description than the device file name (/dev/loopX).
Diffstat (limited to 'monitor')
-rw-r--r--monitor/udisks2/gvfsudisks2volume.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/monitor/udisks2/gvfsudisks2volume.c b/monitor/udisks2/gvfsudisks2volume.c
index b6eaf8a5..0ff4809a 100644
--- a/monitor/udisks2/gvfsudisks2volume.c
+++ b/monitor/udisks2/gvfsudisks2volume.c
@@ -1525,10 +1525,13 @@ gvfs_udisks2_volume_mount (GVolume *_volume,
GVfsUDisks2Volume *volume = GVFS_UDISKS2_VOLUME (_volume);
GDBusObject *object;
UDisksBlock *block;
+ UDisksClient *client;
UDisksFilesystem *filesystem;
MountData *data;
GTask *task;
+ client = gvfs_udisks2_volume_monitor_get_udisks_client (volume->monitor);
+
task = g_task_new (volume, cancellable, callback, user_data);
g_task_set_source_tag (task, gvfs_udisks2_volume_mount);
@@ -1562,8 +1565,7 @@ gvfs_udisks2_volume_mount (GVolume *_volume,
}
/* if encrypted and already unlocked, just mount the cleartext block device */
- block = udisks_client_get_cleartext_block (gvfs_udisks2_volume_monitor_get_udisks_client (volume->monitor),
- volume->block);
+ block = udisks_client_get_cleartext_block (client, volume->block);
if (block != NULL)
g_object_unref (block);
else
@@ -1593,8 +1595,7 @@ gvfs_udisks2_volume_mount (GVolume *_volume,
* gives us, since this is going to be used to refer to the device even
* when not plugged in
*/
- udisks_drive = udisks_client_get_drive_for_block (gvfs_udisks2_volume_monitor_get_udisks_client (volume->monitor),
- block);
+ udisks_drive = udisks_client_get_drive_for_block (client, block);
if (udisks_drive != NULL)
{
gchar *drive_name = NULL;
@@ -1605,8 +1606,7 @@ gvfs_udisks2_volume_mount (GVolume *_volume,
UDisksObject *object = (UDisksObject *) g_dbus_interface_get_object (G_DBUS_INTERFACE (udisks_drive));
if (object != NULL)
{
- UDisksObjectInfo *info = udisks_client_get_object_info (gvfs_udisks2_volume_monitor_get_udisks_client (volume->monitor),
- object);
+ UDisksObjectInfo *info = udisks_client_get_object_info (client, object);
if (info != NULL)
{
drive_name = g_strdup (udisks_object_info_get_name (info));
@@ -1616,7 +1616,7 @@ gvfs_udisks2_volume_mount (GVolume *_volume,
}
}
#else
- udisks_client_get_drive_info (gvfs_udisks2_volume_monitor_get_udisks_client (volume->monitor),
+ udisks_client_get_drive_info (client,
udisks_drive,
&drive_name,
&drive_desc,
@@ -1637,7 +1637,11 @@ gvfs_udisks2_volume_mount (GVolume *_volume,
}
else
{
- data->desc_of_encrypted_to_unlock = udisks_block_dup_preferred_device (block);
+ UDisksLoop *loop = udisks_client_get_loop_for_block (client, block);
+ if (loop != NULL)
+ data->desc_of_encrypted_to_unlock = udisks_loop_dup_backing_file (loop);
+ else
+ data->desc_of_encrypted_to_unlock = udisks_block_dup_preferred_device (block);
}
data->uuid_of_encrypted_to_unlock = udisks_block_dup_id_uuid (block);