📄 xfs_sb.h
字号:
#define XFS_SB_GOOD_VERSION(sbp) xfs_sb_good_version(sbp)#ifdef __KERNEL__static inline int xfs_sb_good_version(xfs_sb_t *sbp){ return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN)));}#elsestatic inline int xfs_sb_good_version(xfs_sb_t *sbp){ return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ (!(sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) || \ (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN))));}#endif /* __KERNEL__ */#define XFS_SB_VERSION_TONEW(v) xfs_sb_version_tonew(v)static inline unsigned xfs_sb_version_tonew(unsigned v){ return ((((v) == XFS_SB_VERSION_1) ? \ 0 : \ (((v) == XFS_SB_VERSION_2) ? \ XFS_SB_VERSION_ATTRBIT : \ (XFS_SB_VERSION_ATTRBIT | XFS_SB_VERSION_NLINKBIT))) | \ XFS_SB_VERSION_4);}#define XFS_SB_VERSION_TOOLD(v) xfs_sb_version_toold(v)static inline unsigned xfs_sb_version_toold(unsigned v){ return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ 0 : \ (((v) & XFS_SB_VERSION_NLINKBIT) ? \ XFS_SB_VERSION_3 : \ (((v) & XFS_SB_VERSION_ATTRBIT) ? \ XFS_SB_VERSION_2 : \ XFS_SB_VERSION_1)));}#define XFS_SB_VERSION_HASATTR(sbp) xfs_sb_version_hasattr(sbp)static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp){ return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT));}#define XFS_SB_VERSION_ADDATTR(sbp) xfs_sb_version_addattr(sbp)static inline void xfs_sb_version_addattr(xfs_sb_t *sbp){ (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ XFS_SB_VERSION_2 : \ ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) ? \ ((sbp)->sb_versionnum | XFS_SB_VERSION_ATTRBIT) : \ (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT)));}#define XFS_SB_VERSION_HASNLINK(sbp) xfs_sb_version_hasnlink(sbp)static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp){ return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT));}#define XFS_SB_VERSION_ADDNLINK(sbp) xfs_sb_version_addnlink(sbp)static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp){ (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ XFS_SB_VERSION_3 : \ ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT));}#define XFS_SB_VERSION_HASQUOTA(sbp) xfs_sb_version_hasquota(sbp)static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT);}#define XFS_SB_VERSION_ADDQUOTA(sbp) xfs_sb_version_addquota(sbp)static inline void xfs_sb_version_addquota(xfs_sb_t *sbp){ (sbp)->sb_versionnum = \ (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ (XFS_SB_VERSION_TONEW((sbp)->sb_versionnum) | \ XFS_SB_VERSION_QUOTABIT));}#define XFS_SB_VERSION_HASALIGN(sbp) xfs_sb_version_hasalign(sbp)static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT);}#define XFS_SB_VERSION_SUBALIGN(sbp) xfs_sb_version_subalign(sbp)static inline void xfs_sb_version_subalign(xfs_sb_t *sbp){ (sbp)->sb_versionnum = \ XFS_SB_VERSION_TOOLD((sbp)->sb_versionnum & ~XFS_SB_VERSION_ALIGNBIT);}#define XFS_SB_VERSION_HASDALIGN(sbp) xfs_sb_version_hasdalign(sbp)static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT);}#define XFS_SB_VERSION_ADDDALIGN(sbp) xfs_sb_version_adddalign(sbp)static inline int xfs_sb_version_adddalign(xfs_sb_t *sbp){ return (sbp)->sb_versionnum = \ ((sbp)->sb_versionnum | XFS_SB_VERSION_DALIGNBIT);}#define XFS_SB_VERSION_HASSHARED(sbp) xfs_sb_version_hasshared(sbp)static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT);}#define XFS_SB_VERSION_ADDSHARED(sbp) xfs_sb_version_addshared(sbp)static inline int xfs_sb_version_addshared(xfs_sb_t *sbp){ return (sbp)->sb_versionnum = \ ((sbp)->sb_versionnum | XFS_SB_VERSION_SHAREDBIT);}#define XFS_SB_VERSION_SUBSHARED(sbp) xfs_sb_version_subshared(sbp)static inline int xfs_sb_version_subshared(xfs_sb_t *sbp){ return (sbp)->sb_versionnum = \ ((sbp)->sb_versionnum & ~XFS_SB_VERSION_SHAREDBIT);}#define XFS_SB_VERSION_HASDIRV2(sbp) xfs_sb_version_hasdirv2(sbp)static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT);}#define XFS_SB_VERSION_HASLOGV2(sbp) xfs_sb_version_haslogv2(sbp)static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT);}#define XFS_SB_VERSION_HASEXTFLGBIT(sbp) xfs_sb_version_hasextflgbit(sbp)static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT);}#define XFS_SB_VERSION_ADDEXTFLGBIT(sbp) xfs_sb_version_addextflgbit(sbp)static inline int xfs_sb_version_addextflgbit(xfs_sb_t *sbp){ return (sbp)->sb_versionnum = \ ((sbp)->sb_versionnum | XFS_SB_VERSION_EXTFLGBIT);}#define XFS_SB_VERSION_SUBEXTFLGBIT(sbp) xfs_sb_version_subextflgbit(sbp)static inline int xfs_sb_version_subextflgbit(xfs_sb_t *sbp){ return (sbp)->sb_versionnum = \ ((sbp)->sb_versionnum & ~XFS_SB_VERSION_EXTFLGBIT);}#define XFS_SB_VERSION_HASSECTOR(sbp) xfs_sb_version_hassector(sbp)static inline int xfs_sb_version_hassector(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT);}#define XFS_SB_VERSION_HASMOREBITS(sbp) xfs_sb_version_hasmorebits(sbp)static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp){ return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ ((sbp)->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT);}/* * sb_features2 bit version macros. * * For example, for a bit defined as XFS_SB_VERSION2_FUNBIT, has a macro: * * SB_VERSION_HASFUNBIT(xfs_sb_t *sbp) * ((XFS_SB_VERSION_HASMOREBITS(sbp) && * ((sbp)->sb_features2 & XFS_SB_VERSION2_FUNBIT) */static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp){ return (XFS_SB_VERSION_HASMOREBITS(sbp) && \ ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT));}#define XFS_SB_VERSION_HASATTR2(sbp) xfs_sb_version_hasattr2(sbp)static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp){ return (XFS_SB_VERSION_HASMOREBITS(sbp)) && \ ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT);}#define XFS_SB_VERSION_ADDATTR2(sbp) xfs_sb_version_addattr2(sbp)static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp){ ((sbp)->sb_versionnum = \ ((sbp)->sb_versionnum | XFS_SB_VERSION_MOREBITSBIT), \ ((sbp)->sb_features2 = \ ((sbp)->sb_features2 | XFS_SB_VERSION2_ATTR2BIT)));}/* * end of superblock version macros */#define XFS_SB_DADDR ((xfs_daddr_t)0) /* daddr in filesystem/ag */#define XFS_SB_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_SB_DADDR)#define XFS_BUF_TO_SBP(bp) ((xfs_dsb_t *)XFS_BUF_PTR(bp))#define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d))#define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ XFS_DADDR_TO_AGNO(mp,d), XFS_DADDR_TO_AGBNO(mp,d))#define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno))/* * File system sector to basic block conversions. */#define XFS_FSS_TO_BB(mp,sec) ((sec) << (mp)->m_sectbb_log)/* * File system block to basic block conversions. */#define XFS_FSB_TO_BB(mp,fsbno) ((fsbno) << (mp)->m_blkbb_log)#define XFS_BB_TO_FSB(mp,bb) \ (((bb) + (XFS_FSB_TO_BB(mp,1) - 1)) >> (mp)->m_blkbb_log)#define XFS_BB_TO_FSBT(mp,bb) ((bb) >> (mp)->m_blkbb_log)#define XFS_BB_FSB_OFFSET(mp,bb) ((bb) & ((mp)->m_bsize - 1))/* * File system block to byte conversions. */#define XFS_FSB_TO_B(mp,fsbno) ((xfs_fsize_t)(fsbno) << (mp)->m_sb.sb_blocklog)#define XFS_B_TO_FSB(mp,b) \ ((((__uint64_t)(b)) + (mp)->m_blockmask) >> (mp)->m_sb.sb_blocklog)#define XFS_B_TO_FSBT(mp,b) (((__uint64_t)(b)) >> (mp)->m_sb.sb_blocklog)#define XFS_B_FSB_OFFSET(mp,b) ((b) & (mp)->m_blockmask)#endif /* __XFS_SB_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -