diff options
author | Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> | 2016-04-04 11:35:03 +0200 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2016-04-04 11:35:03 +0200 |
commit | 5c859c99dfcd362599eb497760231e7aa816c070 (patch) | |
tree | 01b73bb02b0b82e3bdfe434ea860442b13540cb5 | |
parent | d2c869e916734d7f77b1f385a2c2a7ede7b9ffac (diff) | |
download | udisks-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.c | 7 |
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, |