summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>2016-04-04 11:35:03 +0200
committerMartin Pitt <martin.pitt@ubuntu.com>2016-04-04 11:35:03 +0200
commit5c859c99dfcd362599eb497760231e7aa816c070 (patch)
tree01b73bb02b0b82e3bdfe434ea860442b13540cb5
parentd2c869e916734d7f77b1f385a2c2a7ede7b9ffac (diff)
downloadudisks-5c859c99dfcd362599eb497760231e7aa816c070.tar.gz
Reread partition table before wiping when creating new partitions
https://bugs.freedesktop.org/show_bug.cgi?id=85477 https://bugs.debian.org/767457 https://launchpad.net/bugs/1460602
-rw-r--r--src/udiskslinuxpartitiontable.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/udiskslinuxpartitiontable.c b/src/udiskslinuxpartitiontable.c
index 2692b31..7870ca8 100644
--- a/src/udiskslinuxpartitiontable.c
+++ b/src/udiskslinuxpartitiontable.c
@@ -343,6 +343,7 @@ handle_create_partition (UDisksPartitionTable *table,
uid_t caller_uid;
gid_t caller_gid;
gboolean do_wipe = TRUE;
+ gboolean was_partitioned = FALSE;
GError *error;
error = NULL;
@@ -589,6 +590,10 @@ handle_create_partition (UDisksPartitionTable *table,
/* this is sometimes needed because parted(8) does not generate the uevent itself */
udisks_linux_block_object_trigger_uevent (UDISKS_LINUX_BLOCK_OBJECT (object));
+ was_partitioned = (udisks_object_peek_partition_table (object) != NULL);
+ if (was_partitioned)
+ udisks_linux_block_object_reread_partition_table (UDISKS_LINUX_BLOCK_OBJECT (object));
+
/* sit and wait for the partition to show up */
g_warn_if_fail (wait_data->pos_to_wait_for > 0);
wait_data->partition_table_object = object;
@@ -644,6 +649,8 @@ handle_create_partition (UDisksPartitionTable *table,
/* this is sometimes needed because parted(8) does not generate the uevent itself */
udisks_linux_block_object_trigger_uevent (UDISKS_LINUX_BLOCK_OBJECT (partition_object));
+ if (was_partitioned)
+ udisks_linux_block_object_reread_partition_table (UDISKS_LINUX_BLOCK_OBJECT (object));
udisks_partition_table_complete_create_partition (table,
invocation,