Yu Ning has proposed merging 
lp:~yuningdodo/usb-creator/usb-creator.lp1413494-auto-mount-after-format into 
lp:usb-creator.

Requested reviews:
  usb-creator hackers (usb-creator-hackers)
Related bugs:
  Bug #1413494 in usb-creator (Ubuntu): "Free partition space isn't correctly 
updated after erasing"
  https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/1413494

For more details, see:
https://code.launchpad.net/~yuningdodo/usb-creator/usb-creator.lp1413494-auto-mount-after-format/+merge/250256

I checked the source code and found usb-creator can only calculate the free 
space for a mounted partition, however the newly formated partition isn't 
mounted.

So to fix the issue we could mount it automatically after the formating. In the 
attached patch this job is done in the dbus method Format() in 
usb-creator-helper. In my own test it works fine.

-- 
Your team usb-creator hackers is requested to review the proposed merge of 
lp:~yuningdodo/usb-creator/usb-creator.lp1413494-auto-mount-after-format into 
lp:usb-creator.
=== modified file 'bin/usb-creator-helper'
--- bin/usb-creator-helper	2014-09-02 20:12:12 +0000
+++ bin/usb-creator-helper	2015-02-19 05:17:59 +0000
@@ -231,7 +231,7 @@
             check_system_internal(dev)
 
         # TODO LOCK
-        unmount_all(udisks, dev)
+        unmount_all(udisks, parent_dev)
         # Do NOT use the disk if asked to format a partition.
         # We still need to obtain the disk device name to zero out the MBR
         part = dev.get_partition()
@@ -243,6 +243,9 @@
             part.call_set_type_sync('0x0c', no_options, None)
             part.call_set_flags_sync(boot_dos_flag, no_options, None)
             block.call_format_sync('vfat', GLib.Variant('a{sv}', {'label': GLib.Variant('s', '')}), None)
+
+            # Mount the partition for the frontend to calc free space
+            dev.get_filesystem().call_mount_sync(no_options, None)
         else:
             # Create a new partition table and a FAT partition.
             # Is this correct call to create partition table ?!
@@ -262,6 +265,11 @@
             block = obj.get_block()
             block.call_format_sync('vfat', GLib.Variant('a{sv}', {'label': GLib.Variant('s', '')}), None)
 
+            # Mount the partition for the frontend to calc free space
+            udisks = UDisks.Client.new_sync(None)
+            obj = udisks.get_object(partition)
+            obj.get_filesystem().call_mount_sync(no_options, None)
+
         # Zero out the MBR.  Will require fancy privileges.
         parent_block = parent_dev.get_block()
         parent_file = parent_block.get_cached_property('Device').get_bytestring().decode('utf-8')

_______________________________________________
Mailing list: https://launchpad.net/~usb-creator-hackers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~usb-creator-hackers
More help   : https://help.launchpad.net/ListHelp

Reply via email to