}
static void
-print_xfs_info(int verbose)
+print_extended_info(int verbose)
{
- struct dioattr dio;
- struct fsxattr fsx, fsxa;
-
- if ((xfsctl(file->name, file->fd, FS_IOC_FSGETXATTR, &fsx)) < 0 ||
- (xfsctl(file->name, file->fd, XFS_IOC_FSGETXATTRA, &fsxa)) < 0) {
- perror("FS_IOC_FSGETXATTR");
- } else {
- printf(_("fsxattr.xflags = 0x%x "), fsx.fsx_xflags);
- printxattr(fsx.fsx_xflags, verbose, 0, file->name, 1, 1);
- printf(_("fsxattr.projid = %u\n"), fsx.fsx_projid);
- printf(_("fsxattr.extsize = %u\n"), fsx.fsx_extsize);
- printf(_("fsxattr.cowextsize = %u\n"), fsx.fsx_cowextsize);
- printf(_("fsxattr.nextents = %u\n"), fsx.fsx_nextents);
- printf(_("fsxattr.naextents = %u\n"), fsxa.fsx_nextents);
+ struct dioattr dio = {};
+ struct fsxattr fsx = {}, fsxa = {};
+
+ if ((ioctl(file->fd, FS_IOC_FSGETXATTR, &fsx)) < 0) {
+ perror("FS_IOC_GETXATTR");
+ exitcode = 1;
+ return;
}
+
+ printf(_("fsxattr.xflags = 0x%x "), fsx.fsx_xflags);
+ printxattr(fsx.fsx_xflags, verbose, 0, file->name, 1, 1);
+ printf(_("fsxattr.projid = %u\n"), fsx.fsx_projid);
+ printf(_("fsxattr.extsize = %u\n"), fsx.fsx_extsize);
+ printf(_("fsxattr.cowextsize = %u\n"), fsx.fsx_cowextsize);
+ printf(_("fsxattr.nextents = %u\n"), fsx.fsx_nextents);
+
+ /* Only XFS supports FS_IOC_FSGETXATTRA and XFS_IOC_DIOINFO */
+ if (file->flags & IO_FOREIGN)
+ return;
+
+ if ((ioctl(file->fd, XFS_IOC_FSGETXATTRA, &fsxa)) < 0) {
+ perror("XFS_IOC_GETXATTRA");
+ exitcode = 1;
+ return;
+ }
+
+ printf(_("fsxattr.naextents = %u\n"), fsxa.fsx_nextents);
+
if ((xfsctl(file->name, file->fd, XFS_IOC_DIOINFO, &dio)) < 0) {
perror("XFS_IOC_DIOINFO");
- } else {
- printf(_("dioattr.mem = 0x%x\n"), dio.d_mem);
- printf(_("dioattr.miniosz = %u\n"), dio.d_miniosz);
- printf(_("dioattr.maxiosz = %u\n"), dio.d_maxiosz);
+ exitcode = 1;
+ return;
}
+
+ printf(_("dioattr.mem = 0x%x\n"), dio.d_mem);
+ printf(_("dioattr.miniosz = %u\n"), dio.d_miniosz);
+ printf(_("dioattr.maxiosz = %u\n"), dio.d_maxiosz);
}
int
printf(_("stat.ctime = %s"), ctime(&st.st_ctime));
}
- if (file->flags & IO_FOREIGN)
- return 0;
-
- print_xfs_info(verbose);
+ print_extended_info(verbose);
return 0;
}
ctime((time_t *)&stx.stx_btime.tv_sec));
}
- if (file->flags & IO_FOREIGN)
- return 0;
-
- print_xfs_info(verbose);
+ print_extended_info(verbose);
return 0;
}