]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: report inode health via bulkstat
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 24 Jul 2019 19:54:06 +0000 (15:54 -0400)
committerEric Sandeen <sandeen@redhat.com>
Wed, 24 Jul 2019 19:54:06 +0000 (15:54 -0400)
Source kernel commit: 89d139d5ad465e35a9c602421eb1a1ff08ea530d

Use space in the bulkstat ioctl structure to report any problems
observed with the inode.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_fs.h
libxfs/xfs_health.h

index dae92701d43cfd4458d76c14f99cd65cfe58cf12..8d50ccf8a760ece26340a62189d5dbdca5ee23d0 100644 (file)
@@ -370,13 +370,25 @@ typedef struct xfs_bstat {
 #define        bs_projid       bs_projid_lo    /* (previously just bs_projid)  */
        __u16           bs_forkoff;     /* inode fork offset in bytes   */
        __u16           bs_projid_hi;   /* higher part of project id    */
-       unsigned char   bs_pad[6];      /* pad space, unused            */
+       uint16_t        bs_sick;        /* sick inode metadata          */
+       uint16_t        bs_checked;     /* checked inode metadata       */
+       unsigned char   bs_pad[2];      /* pad space, unused            */
        __u32           bs_cowextsize;  /* cow extent size              */
        __u32           bs_dmevmask;    /* DMIG event mask              */
        __u16           bs_dmstate;     /* DMIG state info              */
        __u16           bs_aextents;    /* attribute number of extents  */
 } xfs_bstat_t;
 
+/* bs_sick flags */
+#define XFS_BS_SICK_INODE      (1 << 0)  /* inode core */
+#define XFS_BS_SICK_BMBTD      (1 << 1)  /* data fork */
+#define XFS_BS_SICK_BMBTA      (1 << 2)  /* attr fork */
+#define XFS_BS_SICK_BMBTC      (1 << 3)  /* cow fork */
+#define XFS_BS_SICK_DIR                (1 << 4)  /* directory */
+#define XFS_BS_SICK_XATTR      (1 << 5)  /* extended attributes */
+#define XFS_BS_SICK_SYMLINK    (1 << 6)  /* symbolic link remote target */
+#define XFS_BS_SICK_PARENT     (1 << 7)  /* parent pointers */
+
 /*
  * Project quota id helpers (previously projid was 16bit only
  * and using two 16bit values to hold new 32bit projid was choosen
index e392457023a44d6c5c30244c60a59814df8b9b59..49ddfeac19f25bfac8b1b4ecb1d76d645fb1e1f5 100644 (file)
@@ -185,5 +185,6 @@ xfs_inode_is_healthy(struct xfs_inode *ip)
 
 void xfs_fsop_geom_health(struct xfs_mount *mp, struct xfs_fsop_geom *geo);
 void xfs_ag_geom_health(struct xfs_perag *pag, struct xfs_ag_geometry *ageo);
+void xfs_bulkstat_health(struct xfs_inode *ip, struct xfs_bstat *bs);
 
 #endif /* __XFS_HEALTH_H__ */