Message ID | 20181121162646.18117-1-chandan@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | src/t_stripealign.c: Use block size reported by fstatfs() | expand |
On Wed, Nov 21, 2018 at 09:56:46PM +0530, Chandan Rajendra wrote: > On ppc64le, block size reported by fstat(2) is 64k (the page size) > i.e. the "preferred I/O size". However src/t_stripealign.c requires the > actual block size of the filesystem. Hence this commit now makes use of > the block size reported by fstatfs(2) syscall. > > Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com> Looks like that only XFS returns the preferred iosize (xfs_preferred_iosize()) on stat(2), other filesystems will return block size (I checked the code of ext4, f2fs, ocfs2). On the other hand, statfs(2) returns the actual block size on all filesystems I've checked, including XFS. So this patch looks fine to me. Thanks, Eryu
diff --git a/src/t_stripealign.c b/src/t_stripealign.c index c61e7632..5cdadaae 100644 --- a/src/t_stripealign.c +++ b/src/t_stripealign.c @@ -7,7 +7,7 @@ #include <unistd.h> #include <stdlib.h> #include <sys/types.h> -#include <sys/stat.h> +#include <sys/vfs.h> #include <fcntl.h> #include <stdio.h> #include <sys/ioctl.h> @@ -31,7 +31,7 @@ int main(int argc, char ** argv) { - struct stat sb; + struct statfs sb; struct fiemap *fie; struct fiemap_extent *fe; int fd; @@ -54,7 +54,7 @@ int main(int argc, char ** argv) return 1; } - ret = fstat(fd, &sb); + ret = fstatfs(fd, &sb); if (ret) { perror(filename); close(fd); @@ -101,7 +101,7 @@ int main(int argc, char ** argv) return 1; } - block = fie->fm_extents[0].fe_physical / sb.st_blksize; + block = fie->fm_extents[0].fe_physical / sb.f_bsize; check: if (block % sunit) { printf("%s: Start block %llu not multiple of sunit %u\n",
On ppc64le, block size reported by fstat(2) is 64k (the page size) i.e. the "preferred I/O size". However src/t_stripealign.c requires the actual block size of the filesystem. Hence this commit now makes use of the block size reported by fstatfs(2) syscall. Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com> --- src/t_stripealign.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)