aboutsummaryrefslogtreecommitdiff
path: root/util-linux
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-08-09 22:49:15 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2011-08-09 22:49:15 +0200
commitb347df91317ca05910e930c94fdba30baf9e2de8 (patch)
treed7d035a1708ed90f2103bbe9c8e92d52ff4a1d2f /util-linux
parenta6367f9faec0f8736f6ff92fbda5c19d4cbc384e (diff)
downloadbusybox-b347df91317ca05910e930c94fdba30baf9e2de8.tar.gz
randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux')
-rw-r--r--util-linux/fdisk.c56
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 */