aboutsummaryrefslogtreecommitdiff
path: root/fs/xfs/xfs_log_recover.c
diff options
context:
space:
mode:
authorGravatar Dave Chinner <dchinner@redhat.com> 2021-08-18 18:46:26 -0700
committerGravatar Darrick J. Wong <djwong@kernel.org> 2021-08-19 10:07:12 -0700
commita1d86e8dec8c1325d301c9d5594bb794bc428fc3 (patch)
treef71195aebaf5b4b76ff5cc534c0e393579ae9d80 /fs/xfs/xfs_log_recover.c
parentxfs: rework attr2 feature and mount options (diff)
downloadlinux-a1d86e8dec8c1325d301c9d5594bb794bc428fc3.tar.gz
linux-a1d86e8dec8c1325d301c9d5594bb794bc428fc3.tar.bz2
linux-a1d86e8dec8c1325d301c9d5594bb794bc428fc3.zip
xfs: reflect sb features in xfs_mount
Currently on-disk feature checks require decoding the superblock fileds and so can be non-trivial. We have almost 400 hundred individual feature checks in the XFS code, so this is a significant amount of code. To reduce runtime check overhead, pre-process all the version flags into a features field in the xfs_mount at mount time so we can convert all the feature checks to a simple flag check. There is also a need to convert the dynamic feature flags to update the m_features field. This is required for attr, attr2 and quota features. New xfs_mount based wrappers are added for this. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Diffstat (limited to 'fs/xfs/xfs_log_recover.c')
-rw-r--r--fs/xfs/xfs_log_recover.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 71dd1bbd93de..bcab5c67c0f7 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -3348,6 +3348,7 @@ xlog_do_recover(
xfs_buf_relse(bp);
/* re-initialise in-core superblock and geometry structures */
+ mp->m_features |= xfs_sb_version_to_features(sbp);
xfs_reinit_percpu_counters(mp);
error = xfs_initialize_perag(mp, sbp->sb_agcount, &mp->m_maxagi);
if (error) {