diff --git a/bitmap.c b/bitmap.c index 97f33ff..028225d 100644 --- a/bitmap.c +++ b/bitmap.c @@ -207,7 +207,7 @@ bitmap_info_t *bitmap_file_read(char *filename, int brief, struct supertype **st return NULL; } if ((S_IFMT & stb.st_mode) == S_IFBLK) { - fd = open(filename, O_RDONLY); + fd = open(filename, O_RDONLY|O_DIRECT); if (fd < 0) { pr_err("failed to open bitmap file %s: %s\n", filename, strerror(errno)); @@ -225,7 +225,6 @@ bitmap_info_t *bitmap_file_read(char *filename, int brief, struct supertype **st } else st->ss->locate_bitmap(st, fd); - ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */ *stp = st; } else { fd = open(filename, O_RDONLY|O_DIRECT); diff --git a/super-gpt.c b/super-gpt.c index 6244657..8f7d4d9 100644 --- a/super-gpt.c +++ b/super-gpt.c @@ -82,8 +82,6 @@ static int load_gpt(struct supertype *st, int fd, char *devname) return 1; } - ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */ - lseek(fd, 0, 0); if (read(fd, super, sizeof(*super)) != sizeof(*super)) { no_read: diff --git a/super-mbr.c b/super-mbr.c index 4218619..8b175e3 100644 --- a/super-mbr.c +++ b/super-mbr.c @@ -86,8 +86,6 @@ static int load_super_mbr(struct supertype *st, int fd, char *devname) return 1; } - ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */ - lseek(fd, 0, 0); if (read(fd, super, sizeof(*super)) != sizeof(*super)) { if (devname) @@ -126,8 +124,6 @@ static int store_mbr(struct supertype *st, int fd) return 1; } - ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */ - lseek(fd, 0, 0); if (read(fd, old, sizeof(*old)) != sizeof(*old)) { free(old); diff --git a/super0.c b/super0.c index ecb6b38..d54a5d7 100644 --- a/super0.c +++ b/super0.c @@ -870,8 +870,6 @@ static int load_super0(struct supertype *st, int fd, char *devname) offset *= 512; - ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */ - if (lseek64(fd, offset, 0)< 0LL) { if (devname) pr_err("Cannot seek to superblock on %s: %s\n", diff --git a/super1.c b/super1.c index 3236a7e..fe83af5 100644 --- a/super1.c +++ b/super1.c @@ -1633,9 +1633,6 @@ static int load_super1(struct supertype *st, int fd, char *devname) return -EINVAL; } - ioctl(fd, BLKFLSBUF, 0); /* make sure we read current data */ - - if (lseek64(fd, sb_offset << 9, 0)< 0LL) { if (devname) pr_err("Cannot seek to superblock on %s: %s\n",