mirror of
https://github.com/torvalds/linux.git
synced 2024-12-10 05:01:26 +00:00
a1d86e8dec
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>
41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2000-2005 Silicon Graphics, Inc.
|
|
* All Rights Reserved.
|
|
*/
|
|
#ifndef __XFS_SB_H__
|
|
#define __XFS_SB_H__
|
|
|
|
struct xfs_mount;
|
|
struct xfs_sb;
|
|
struct xfs_dsb;
|
|
struct xfs_trans;
|
|
struct xfs_fsop_geom;
|
|
struct xfs_perag;
|
|
|
|
extern void xfs_log_sb(struct xfs_trans *tp);
|
|
extern int xfs_sync_sb(struct xfs_mount *mp, bool wait);
|
|
extern int xfs_sync_sb_buf(struct xfs_mount *mp);
|
|
extern void xfs_sb_mount_common(struct xfs_mount *mp, struct xfs_sb *sbp);
|
|
extern void xfs_sb_from_disk(struct xfs_sb *to, struct xfs_dsb *from);
|
|
extern void xfs_sb_to_disk(struct xfs_dsb *to, struct xfs_sb *from);
|
|
extern void xfs_sb_quota_from_disk(struct xfs_sb *sbp);
|
|
extern uint64_t xfs_sb_version_to_features(struct xfs_sb *sbp);
|
|
|
|
extern int xfs_update_secondary_sbs(struct xfs_mount *mp);
|
|
|
|
#define XFS_FS_GEOM_MAX_STRUCT_VER (4)
|
|
extern void xfs_fs_geometry(struct xfs_sb *sbp, struct xfs_fsop_geom *geo,
|
|
int struct_version);
|
|
extern int xfs_sb_read_secondary(struct xfs_mount *mp,
|
|
struct xfs_trans *tp, xfs_agnumber_t agno,
|
|
struct xfs_buf **bpp);
|
|
extern int xfs_sb_get_secondary(struct xfs_mount *mp,
|
|
struct xfs_trans *tp, xfs_agnumber_t agno,
|
|
struct xfs_buf **bpp);
|
|
|
|
extern bool xfs_validate_stripe_geometry(struct xfs_mount *mp,
|
|
__s64 sunit, __s64 swidth, int sectorsize, bool silent);
|
|
|
|
#endif /* __XFS_SB_H__ */
|