]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
punch-alternating: use the block size reported by the fs for punching
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 18 Feb 2016 23:51:17 +0000 (10:51 +1100)
committerDave Chinner <david@fromorbit.com>
Thu, 18 Feb 2016 23:51:17 +0000 (10:51 +1100)
When we're trying to punch alternating blocks out of a file, use the
bsize reported by fstatfs so that we can punch out single blocks.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
src/punch-alternating.c

index 95663108db6f8867302f07a6ecd6c20db2957549..4148622f8a96c9b448d80f2cac3c31aaa6f7afed 100644 (file)
@@ -14,6 +14,7 @@
 int main(int argc, char *argv[])
 {
        struct stat     s;
+       struct statfs   sf;
        off_t           offset;
        int             fd;
        blksize_t       blksz;
@@ -35,8 +36,12 @@ int main(int argc, char *argv[])
        if (error)
                goto err;
 
+       error = fstatfs(fd, &sf);
+       if (error)
+               goto err;
+
        sz = s.st_size;
-       blksz = s.st_blksize;
+       blksz = sf.f_bsize;
 
        mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE;
        for (offset = 0; offset < sz; offset += blksz * 2) {