diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2011-08-10 00:49:15 +0400 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2011-08-10 00:49:15 +0400 |
commit | b347df91317ca05910e930c94fdba30baf9e2de8 (patch) | |
tree | d7d035a1708ed90f2103bbe9c8e92d52ff4a1d2f /util-linux/fdisk.c | |
parent | a6367f9faec0f8736f6ff92fbda5c19d4cbc384e (diff) |
randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux/fdisk.c')
-rw-r--r-- | util-linux/fdisk.c | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/util-linux/fdisk.c b/util-linux/fdisk.c index 976558693..c0be15a3a 100644 --- a/util-linux/fdisk.c +++ b/util-linux/fdisk.c @@ -201,6 +201,7 @@ enum action { OPEN_MAIN, TRY_ONLY, CREATE_EMPTY_DOS, CREATE_EMPTY_SUN }; static void update_units(void); #if ENABLE_FEATURE_FDISK_WRITABLE static void change_units(void); +static void reread_partition_table(int leave); static void delete_partition(int i); static unsigned get_partition(int warn, unsigned max); static void list_types(const char *const *sys); @@ -2542,6 +2543,35 @@ new_partition(void) } static void +reread_partition_table(int leave) +{ + int i; + + printf("Calling ioctl() to re-read partition table\n"); + sync(); + /* Users with slow external USB disks on a 320MHz ARM system (year 2011) + * report that sleep is needed, otherwise BLKRRPART may fail with -EIO: + */ + sleep(1); + i = ioctl_or_perror(dev_fd, BLKRRPART, NULL, + "WARNING: rereading partition table " + "failed, kernel still uses old table"); +#if 0 + if (dos_changed) + printf( + "\nWARNING: If you have created or modified any DOS 6.x\n" + "partitions, please see the fdisk manual page for additional\n" + "information\n"); +#endif + + if (leave) { + if (ENABLE_FEATURE_CLEAN_UP) + close_dev_fd(); + exit(i != 0); + } +} + +static void write_table(void) { int i; @@ -2571,30 +2601,8 @@ write_table(void) } } - printf( - "The partition table has been altered.\n" - "Calling ioctl(BLKRRPART) to re-read partition table.\n" - ); - - sync(); - /* Users with slow external USB disks on a 320MHz ARM system (year 2011) - * report that sleep is needed, otherwise BLKRRPART may fail with -EIO: - */ - sleep(1); - i = ioctl_or_perror(dev_fd, BLKRRPART, NULL, - "WARNING: rereading partition table " - "failed, kernel still uses old table"); -#if 0 - if (dos_changed) - printf( - "\nWARNING: If you have created or modified any DOS 6.x\n" - "partitions, please see the fdisk manual page for additional\n" - "information\n"); -#endif - - if (ENABLE_FEATURE_CLEAN_UP) - close_dev_fd(); - exit(i != 0); + printf("The partition table has been altered.\n"); + reread_partition_table(1); } #endif /* FEATURE_FDISK_WRITABLE */ |