summaryrefslogtreecommitdiffstats
path: root/rescue/kernel_read_part.c
diff options
context:
space:
mode:
Diffstat (limited to 'rescue/kernel_read_part.c')
-rw-r--r--rescue/kernel_read_part.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/rescue/kernel_read_part.c b/rescue/kernel_read_part.c
index 279dfe787..4b9d16d65 100644
--- a/rescue/kernel_read_part.c
+++ b/rescue/kernel_read_part.c
@@ -1,7 +1,14 @@
+#include <unistd.h>
+#include <stdlib.h>
#include <stdio.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
#include <sys/mount.h>
#include <fcntl.h>
+
void die(char *msg)
{
perror(msg);
@@ -11,9 +18,15 @@ void die(char *msg)
void kernel_read(char *dev)
{
int fd;
+
+ sync();
if ((fd = open(dev, O_RDONLY)) == -1) die("can't open device");
+ sync();
+ sleep(1);
ioctl(fd, BLKRRPART, 0);
+ sync();
close(fd);
+ sync();
}
int main(int argc, char **argv)