]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - bitmap.c
Grow: fix hang when growing a RAID5.
[thirdparty/mdadm.git] / bitmap.c
index 4144977b9ffce91230af17b6c9c4e4f9eca9b09a..028225d525e741eab8b393c67df6f3688f7b5323 100644 (file)
--- a/bitmap.c
+++ b/bitmap.c
@@ -97,7 +97,7 @@ int count_dirty_bits(char *buf, int num_bits)
 {
        int i, num = 0;
 
-       for (i=0; i < num_bits / 8; i++)
+       for (i = 0; i < num_bits / 8; i++)
                num += count_dirty_bits_byte(buf[i], 8);
 
        if (num_bits % 8) /* not an even byte boundary */
@@ -121,7 +121,6 @@ unsigned long bitmap_sectors(struct bitmap_super_s *bsb)
        return (bits + bits_per_sector - 1) / bits_per_sector;
 }
 
-
 bitmap_info_t *bitmap_fd_read(int fd, int brief)
 {
        /* Note: fd might be open O_DIRECT, so we must be
@@ -208,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));
@@ -226,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);