aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/hush.c12
-rw-r--r--util-linux/fdisk.c56
2 files changed, 38 insertions, 30 deletions
diff --git a/shell/hush.c b/shell/hush.c
index 6b3027771..e4138adf7 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -5519,12 +5519,6 @@ static char **expand_assignments(char **argv, int count)
}
-#if BB_MMU
-/* never called */
-void re_execute_shell(char ***to_free, const char *s,
- char *g_argv0, char **g_argv,
- char **builtin_argv) NORETURN;
-
static void switch_off_special_sigs(unsigned mask)
{
unsigned sig = 0;
@@ -5544,6 +5538,12 @@ static void switch_off_special_sigs(unsigned mask)
}
}
+#if BB_MMU
+/* never called */
+void re_execute_shell(char ***to_free, const char *s,
+ char *g_argv0, char **g_argv,
+ char **builtin_argv) NORETURN;
+
static void reset_traps_to_defaults(void)
{
/* This function is always called in a child shell
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 */