Commit ac3a0275 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: don't use the incore struct xfs_sb for offsets into struct xfs_dsb



Currently, the XFS_SB_CRC_OFF macro uses the incore superblock struct
(xfs_sb) to compute the address of sb_crc within the ondisk superblock
struct (xfs_dsb).  This is a landmine if we ever change the layout of
the incore superblock (as we're about to do), so redefine the macro
to use xfs_dsb to compute the layout of xfs_dsb.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 47d4d596
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -90,8 +90,7 @@ struct xfs_ifork;
#define XFSLABEL_MAX			12

/*
 * Superblock - in core version.  Must match the ondisk version below.
 * Must be padded to 64 bit alignment.
 * Superblock - in core version.  Must be padded to 64 bit alignment.
 */
typedef struct xfs_sb {
	uint32_t	sb_magicnum;	/* magic number == XFS_SB_MAGIC */
@@ -178,10 +177,8 @@ typedef struct xfs_sb {
	/* must be padded to 64 bit alignment */
} xfs_sb_t;

#define XFS_SB_CRC_OFF		offsetof(struct xfs_sb, sb_crc)

/*
 * Superblock - on disk version.  Must match the in core version above.
 * Superblock - on disk version.
 * Must be padded to 64 bit alignment.
 */
struct xfs_dsb {
@@ -265,6 +262,8 @@ struct xfs_dsb {
	/* must be padded to 64 bit alignment */
};

#define XFS_SB_CRC_OFF		offsetof(struct xfs_dsb, sb_crc)

/*
 * Misc. Flags - warning - these will be cleared by xfs_repair unless
 * a feature bit is set when the flag is used.
+1 −0
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ xfs_check_ondisk_structs(void)
	XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_name_remote_t,	12);
	 */

	XFS_CHECK_OFFSET(struct xfs_dsb, sb_crc,		224);
	XFS_CHECK_OFFSET(xfs_attr_leaf_name_local_t, valuelen,	0);
	XFS_CHECK_OFFSET(xfs_attr_leaf_name_local_t, namelen,	2);
	XFS_CHECK_OFFSET(xfs_attr_leaf_name_local_t, nameval,	3);