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>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
#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>
int main(int argc, char ** argv)
{
- struct stat sb;
+ struct statfs sb;
struct fiemap *fie;
struct fiemap_extent *fe;
int fd;
return 1;
}
- ret = fstat(fd, &sb);
+ ret = fstatfs(fd, &sb);
if (ret) {
perror(filename);
close(fd);
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",