xfs: sanitise sb_bad_features2 handling
We currently have to ensure that every time we update sb_features2 that we update sb_bad_features2. Now that we log and format the superblock in it's entirety we actually don't have to care because we can simply update the sb_bad_features2 when we format it into the buffer. This removes the need for anything but the mount and superblock formatting code to care about sb_bad_features2, and hence removes the possibility that we forget to update bad_features2 when necessary in the future. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:

committed by
Dave Chinner

parent
61e63ecb57
commit
074e427ba7
@@ -151,10 +151,13 @@ typedef struct xfs_sb {
|
||||
__uint32_t sb_features2; /* additional feature bits */
|
||||
|
||||
/*
|
||||
* bad features2 field as a result of failing to pad the sb
|
||||
* structure to 64 bits. Some machines will be using this field
|
||||
* for features2 bits. Easiest just to mark it bad and not use
|
||||
* it for anything else.
|
||||
* bad features2 field as a result of failing to pad the sb structure to
|
||||
* 64 bits. Some machines will be using this field for features2 bits.
|
||||
* Easiest just to mark it bad and not use it for anything else.
|
||||
*
|
||||
* This is not kept up to date in memory; it is always overwritten by
|
||||
* the value in sb_features2 when formatting the incore superblock to
|
||||
* the disk buffer.
|
||||
*/
|
||||
__uint32_t sb_bad_features2;
|
||||
|
||||
@@ -453,13 +456,11 @@ static inline void xfs_sb_version_addattr2(struct xfs_sb *sbp)
|
||||
{
|
||||
sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT;
|
||||
sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT;
|
||||
sbp->sb_bad_features2 |= XFS_SB_VERSION2_ATTR2BIT;
|
||||
}
|
||||
|
||||
static inline void xfs_sb_version_removeattr2(struct xfs_sb *sbp)
|
||||
{
|
||||
sbp->sb_features2 &= ~XFS_SB_VERSION2_ATTR2BIT;
|
||||
sbp->sb_bad_features2 &= ~XFS_SB_VERSION2_ATTR2BIT;
|
||||
if (!sbp->sb_features2)
|
||||
sbp->sb_versionnum &= ~XFS_SB_VERSION_MOREBITSBIT;
|
||||
}
|
||||
@@ -475,7 +476,6 @@ static inline void xfs_sb_version_addprojid32bit(struct xfs_sb *sbp)
|
||||
{
|
||||
sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT;
|
||||
sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT;
|
||||
sbp->sb_bad_features2 |= XFS_SB_VERSION2_PROJID32BIT;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user