Query stat information for a group of XFS inodes.
NOTE: This ioctl has been superseded. Please see the
ioctl_xfs_bulkstat(2) manpage for information about its
replacement.
These ioctls use struct xfs_fsop_bulkreq
to set up a bulk
transfer with the kernel:
struct xfs_fsop_bulkreq {
__u64 *lastip;
__s32 count;
void *ubuffer;
__s32 *ocount;
};
lastip points to a value that will receive the number of the
"last inode." This cannot be NULL. For FSBULKSTAT
, this should
be set to one less than the number of the first inode for which
the caller wants information, or zero to start with the first
inode in the filesystem. For FSBULKSTAT_SINGLE
, this should be
set to the number of the inode for which the caller wants
information. After the call, this value will be set to the
number of the last inode for which information was supplied.
This field will not be updated if ocount is NULL.
count is the number of elements in the ubuffer
array and
therefore the number of inodes for which to return stat
information. This value must be set to 1 for FSBULKSTAT_SINGLE
.
ocount points to a value that will receive the number of records
returned. If this value is NULL, then neither ocount nor lastip
will be updated.
ubuffer points to a memory buffer into which inode stat
information will be copied. This buffer must be an array of
struct xfs_bstat
which is described below. The array must have
at least count elements.
struct xfs_bstat {
__u64 bs_ino;
__u16 bs_mode;
__u16 bs_nlink;
__u32 bs_uid;
__u32 bs_gid;
__u32 bs_rdev;
__s32 bs_blksize;
__s64 bs_size;
struct xfs_bstime bs_atime;
struct xfs_bstime bs_mtime;
struct xfs_bstime bs_ctime;
int64_t bs_blocks;
__u32 bs_xflags;
__s32 bs_extsize;
__s32 bs_extents;
__u32 bs_gen;
__u16 bs_projid_lo;
__u16 bs_forkoff;
__u16 bs_projid_hi;
uint16_t bs_sick;
uint16_t bs_checked;
unsigned char bs_pad[2];
__u32 bs_cowextsize;
__u32 bs_dmevmask;
__u16 bs_dmstate;
__u16 bs_aextents;
};
The structure members are as follows:
bs_ino is the inode number for this record.
bs_mode is the file type and mode.
bs_nlink is the number of hard links to this inode.
bs_uid is the user id.
bs_gid is the group id.
bs_rdev is the encoded device id if this is a special file.
bs_blksize is the size of a data block for this file, in units of
bytes.
bs_size is the size of the file, in bytes.
bs_atime is the last time this file was accessed.
bs_mtime is the last time the contents of this file were
modified.
bs_ctime is the last time this inode record was modified.
bs_blocks is the number of filesystem blocks allocated to this
file, including metadata.
bs_xflags contains the extended flags that are set on this inode.
These flags are the same values as those defined in the XFS INODE
FLAGS
section of the ioctl_xfs_fsgetxattr(2) manpage.
bs_extsize is the extent size hint for this file, in bytes.
bs_extents is the number of storage mappings associated with this
file's data.
bs_gen is the generation number of the inode record.
bs_projid_lo is the lower 16-bits of the project id.
bs_forkoff is the offset of the attribute fork in the inode
record, in bytes.
bs_projid_hi is the upper 16-bits of the project id.
bs_pad[6] is zeroed.
bs_cowextsize is the Copy on Write extent size hint for this
file, in bytes.
bs_dmevmask is unused on Linux.
bs_dmstate is unused on Linux.
bs_aextents is the number of storage mappings associated with
this file's extended attributes.
The fields bs_sick and bs_checked indicate the relative health of
various inode metadata:
• If a given sick flag is set in bs_sick, then that piece of
metadata has been observed to be damaged. The same bit should
be set in bs_checked.
• If a given sick flag is set in bs_checked but is not set in
bs_sick, then that piece of metadata has been checked and is
not faulty.
• If a given sick flag is not set in bs_checked, then no
conclusion can be made.
The following flags apply to these fields:
XFS_BS_SICK_INODE
The inode's record itself.
XFS_BS_SICK_BMBTD
File data extent mappings.
XFS_BS_SICK_BMBTA
Extended attribute extent mappings.
XFS_BS_SICK_BMBTC
Copy on Write staging extent mappings.
XFS_BS_SICK_DIR
Directory information.
XFS_BS_SICK_XATTR
Extended attribute data.
XFS_BS_SICK_SYMLINK
Symbolic link target.
XFS_BS_SICK_PARENT
Parent pointers.