Lines Matching refs:sbp
39 struct xfs_sb *sbp) in xfs_sb_validate_v5_features() argument
42 if (sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) in xfs_sb_validate_v5_features()
49 if (sbp->sb_features2 & ~(XFS_SB_VERSION2_OKBITS | in xfs_sb_validate_v5_features()
67 if ((sbp->sb_versionnum & V5_VERS_FLAGS) != V5_VERS_FLAGS) in xfs_sb_validate_v5_features()
69 if ((sbp->sb_features2 & V5_FEAT_FLAGS) != V5_FEAT_FLAGS) in xfs_sb_validate_v5_features()
79 struct xfs_sb *sbp) in xfs_sb_good_version() argument
86 if (xfs_sb_is_v5(sbp)) in xfs_sb_good_version()
87 return xfs_sb_validate_v5_features(sbp); in xfs_sb_good_version()
90 if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) || in xfs_sb_good_version()
91 ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && in xfs_sb_good_version()
92 (sbp->sb_features2 & ~XFS_SB_VERSION2_OKBITS))) in xfs_sb_good_version()
96 if (XFS_SB_VERSION_NUM(sbp) < XFS_SB_VERSION_4) in xfs_sb_good_version()
100 if (!(sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT)) in xfs_sb_good_version()
102 if (!(sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT)) in xfs_sb_good_version()
111 struct xfs_sb *sbp) in xfs_sb_version_to_features() argument
116 if (sbp->sb_rblocks > 0) in xfs_sb_version_to_features()
118 if (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT) in xfs_sb_version_to_features()
120 if (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT) in xfs_sb_version_to_features()
122 if (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT) in xfs_sb_version_to_features()
124 if (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT) in xfs_sb_version_to_features()
126 if (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT) in xfs_sb_version_to_features()
128 if (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT) in xfs_sb_version_to_features()
130 if (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT) in xfs_sb_version_to_features()
132 if (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT) in xfs_sb_version_to_features()
134 if (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT) in xfs_sb_version_to_features()
136 if (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) { in xfs_sb_version_to_features()
137 if (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT) in xfs_sb_version_to_features()
139 if (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT) in xfs_sb_version_to_features()
141 if (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT) in xfs_sb_version_to_features()
143 if (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE) in xfs_sb_version_to_features()
147 if (!xfs_sb_is_v5(sbp)) in xfs_sb_version_to_features()
156 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FINOBT) in xfs_sb_version_to_features()
158 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_RMAPBT) in xfs_sb_version_to_features()
160 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_REFLINK) in xfs_sb_version_to_features()
162 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_INOBTCNT) in xfs_sb_version_to_features()
164 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_FTYPE) in xfs_sb_version_to_features()
166 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_SPINODES) in xfs_sb_version_to_features()
168 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_META_UUID) in xfs_sb_version_to_features()
170 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_BIGTIME) in xfs_sb_version_to_features()
172 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR) in xfs_sb_version_to_features()
174 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NREXT64) in xfs_sb_version_to_features()
184 struct xfs_sb *sbp) in xfs_validate_sb_read() argument
186 if (!xfs_sb_is_v5(sbp)) in xfs_validate_sb_read()
193 if (xfs_sb_has_compat_feature(sbp, XFS_SB_FEAT_COMPAT_UNKNOWN)) { in xfs_validate_sb_read()
196 (sbp->sb_features_compat & XFS_SB_FEAT_COMPAT_UNKNOWN)); in xfs_validate_sb_read()
201 if (xfs_sb_has_ro_compat_feature(sbp, XFS_SB_FEAT_RO_COMPAT_UNKNOWN)) { in xfs_validate_sb_read()
204 (sbp->sb_features_ro_compat & in xfs_validate_sb_read()
215 if (xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_UNKNOWN)) { in xfs_validate_sb_read()
218 (sbp->sb_features_incompat & in xfs_validate_sb_read()
233 struct xfs_sb *sbp) in xfs_validate_sb_write() argument
245 if (xfs_buf_daddr(bp) == XFS_SB_DADDR && !sbp->sb_inprogress && in xfs_validate_sb_write()
246 (sbp->sb_fdblocks > sbp->sb_dblocks || in xfs_validate_sb_write()
247 !xfs_verify_icount(mp, sbp->sb_icount) || in xfs_validate_sb_write()
248 sbp->sb_ifree > sbp->sb_icount)) { in xfs_validate_sb_write()
253 if (!xfs_sb_is_v5(sbp)) in xfs_validate_sb_write()
261 if (xfs_sb_has_compat_feature(sbp, XFS_SB_FEAT_COMPAT_UNKNOWN)) { in xfs_validate_sb_write()
264 (sbp->sb_features_compat & XFS_SB_FEAT_COMPAT_UNKNOWN)); in xfs_validate_sb_write()
268 if (xfs_sb_has_ro_compat_feature(sbp, XFS_SB_FEAT_RO_COMPAT_UNKNOWN)) { in xfs_validate_sb_write()
271 (sbp->sb_features_ro_compat & in xfs_validate_sb_write()
275 if (xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_UNKNOWN)) { in xfs_validate_sb_write()
278 (sbp->sb_features_incompat & in xfs_validate_sb_write()
282 if (xfs_sb_has_incompat_log_feature(sbp, in xfs_validate_sb_write()
286 (sbp->sb_features_log_incompat & in xfs_validate_sb_write()
296 if (!xfs_log_check_lsn(mp, sbp->sb_lsn)) in xfs_validate_sb_write()
307 struct xfs_sb *sbp) in xfs_validate_sb_common() argument
321 if (!xfs_sb_good_version(sbp)) { in xfs_validate_sb_common()
330 if (xfs_sb_is_v5(sbp)) { in xfs_validate_sb_common()
331 if (sbp->sb_blocksize < XFS_MIN_CRC_BLOCKSIZE) { in xfs_validate_sb_common()
334 sbp->sb_blocksize, XFS_MIN_CRC_BLOCKSIZE); in xfs_validate_sb_common()
339 if (sbp->sb_qflags & (XFS_OQUOTA_ENFD | XFS_OQUOTA_CHKD)) { in xfs_validate_sb_common()
350 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_SPINODES) { in xfs_validate_sb_common()
353 align = XFS_INODES_PER_CHUNK * sbp->sb_inodesize in xfs_validate_sb_common()
354 >> sbp->sb_blocklog; in xfs_validate_sb_common()
355 if (sbp->sb_inoalignmt != align) { in xfs_validate_sb_common()
358 sbp->sb_inoalignmt, align); in xfs_validate_sb_common()
362 } else if (sbp->sb_qflags & (XFS_PQUOTA_ENFD | XFS_GQUOTA_ENFD | in xfs_validate_sb_common()
370 sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) { in xfs_validate_sb_common()
378 sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) { in xfs_validate_sb_common()
386 if (sbp->sb_agblocks) { in xfs_validate_sb_common()
387 agcount = div_u64_rem(sbp->sb_dblocks, sbp->sb_agblocks, &rem); in xfs_validate_sb_common()
397 sbp->sb_agcount <= 0 || in xfs_validate_sb_common()
398 sbp->sb_sectsize < XFS_MIN_SECTORSIZE || in xfs_validate_sb_common()
399 sbp->sb_sectsize > XFS_MAX_SECTORSIZE || in xfs_validate_sb_common()
400 sbp->sb_sectlog < XFS_MIN_SECTORSIZE_LOG || in xfs_validate_sb_common()
401 sbp->sb_sectlog > XFS_MAX_SECTORSIZE_LOG || in xfs_validate_sb_common()
402 sbp->sb_sectsize != (1 << sbp->sb_sectlog) || in xfs_validate_sb_common()
403 sbp->sb_blocksize < XFS_MIN_BLOCKSIZE || in xfs_validate_sb_common()
404 sbp->sb_blocksize > XFS_MAX_BLOCKSIZE || in xfs_validate_sb_common()
405 sbp->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG || in xfs_validate_sb_common()
406 sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG || in xfs_validate_sb_common()
407 sbp->sb_blocksize != (1 << sbp->sb_blocklog) || in xfs_validate_sb_common()
408 sbp->sb_dirblklog + sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG || in xfs_validate_sb_common()
409 sbp->sb_inodesize < XFS_DINODE_MIN_SIZE || in xfs_validate_sb_common()
410 sbp->sb_inodesize > XFS_DINODE_MAX_SIZE || in xfs_validate_sb_common()
411 sbp->sb_inodelog < XFS_DINODE_MIN_LOG || in xfs_validate_sb_common()
412 sbp->sb_inodelog > XFS_DINODE_MAX_LOG || in xfs_validate_sb_common()
413 sbp->sb_inodesize != (1 << sbp->sb_inodelog) || in xfs_validate_sb_common()
414 sbp->sb_logsunit > XLOG_MAX_RECORD_BSIZE || in xfs_validate_sb_common()
415 sbp->sb_inopblock != howmany(sbp->sb_blocksize,sbp->sb_inodesize) || in xfs_validate_sb_common()
416 XFS_FSB_TO_B(mp, sbp->sb_agblocks) < XFS_MIN_AG_BYTES || in xfs_validate_sb_common()
417 XFS_FSB_TO_B(mp, sbp->sb_agblocks) > XFS_MAX_AG_BYTES || in xfs_validate_sb_common()
418 sbp->sb_agblklog != xfs_highbit32(sbp->sb_agblocks - 1) + 1 || in xfs_validate_sb_common()
419 agcount == 0 || agcount != sbp->sb_agcount || in xfs_validate_sb_common()
420 (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog) || in xfs_validate_sb_common()
421 (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE) || in xfs_validate_sb_common()
422 (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) || in xfs_validate_sb_common()
423 (sbp->sb_imax_pct > 100 /* zero sb_imax_pct is valid */) || in xfs_validate_sb_common()
424 sbp->sb_dblocks == 0 || in xfs_validate_sb_common()
425 sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp) || in xfs_validate_sb_common()
426 sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp) || in xfs_validate_sb_common()
427 sbp->sb_shared_vn != 0)) { in xfs_validate_sb_common()
433 if (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE || in xfs_validate_sb_common()
434 sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) { in xfs_validate_sb_common()
440 if (sbp->sb_rblocks == 0) { in xfs_validate_sb_common()
441 if (sbp->sb_rextents != 0 || sbp->sb_rbmblocks != 0 || in xfs_validate_sb_common()
442 sbp->sb_rextslog != 0 || sbp->sb_frextents != 0) { in xfs_validate_sb_common()
451 rexts = div_u64(sbp->sb_rblocks, sbp->sb_rextsize); in xfs_validate_sb_common()
452 rbmblocks = howmany_64(sbp->sb_rextents, in xfs_validate_sb_common()
453 NBBY * sbp->sb_blocksize); in xfs_validate_sb_common()
455 if (sbp->sb_rextents != rexts || in xfs_validate_sb_common()
456 sbp->sb_rextslog != xfs_highbit32(sbp->sb_rextents) || in xfs_validate_sb_common()
457 sbp->sb_rbmblocks != rbmblocks) { in xfs_validate_sb_common()
468 has_dalign = sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT; in xfs_validate_sb_common()
469 if (!!sbp->sb_unit ^ has_dalign) { in xfs_validate_sb_common()
474 if (!xfs_validate_stripe_geometry(mp, XFS_FSB_TO_B(mp, sbp->sb_unit), in xfs_validate_sb_common()
475 XFS_FSB_TO_B(mp, sbp->sb_width), 0, false)) in xfs_validate_sb_common()
481 switch (sbp->sb_inodesize) { in xfs_validate_sb_common()
489 sbp->sb_inodesize); in xfs_validate_sb_common()
497 xfs_sb_quota_from_disk(struct xfs_sb *sbp) in xfs_sb_quota_from_disk() argument
510 if (sbp->sb_uquotino == 0) in xfs_sb_quota_from_disk()
511 sbp->sb_uquotino = NULLFSINO; in xfs_sb_quota_from_disk()
512 if (sbp->sb_gquotino == 0) in xfs_sb_quota_from_disk()
513 sbp->sb_gquotino = NULLFSINO; in xfs_sb_quota_from_disk()
514 if (sbp->sb_pquotino == 0) in xfs_sb_quota_from_disk()
515 sbp->sb_pquotino = NULLFSINO; in xfs_sb_quota_from_disk()
521 if (xfs_sb_is_v5(sbp)) in xfs_sb_quota_from_disk()
524 if (sbp->sb_qflags & XFS_OQUOTA_ENFD) in xfs_sb_quota_from_disk()
525 sbp->sb_qflags |= (sbp->sb_qflags & XFS_PQUOTA_ACCT) ? in xfs_sb_quota_from_disk()
527 if (sbp->sb_qflags & XFS_OQUOTA_CHKD) in xfs_sb_quota_from_disk()
528 sbp->sb_qflags |= (sbp->sb_qflags & XFS_PQUOTA_ACCT) ? in xfs_sb_quota_from_disk()
530 sbp->sb_qflags &= ~(XFS_OQUOTA_ENFD | XFS_OQUOTA_CHKD); in xfs_sb_quota_from_disk()
532 if (sbp->sb_qflags & XFS_PQUOTA_ACCT && in xfs_sb_quota_from_disk()
533 sbp->sb_gquotino != NULLFSINO) { in xfs_sb_quota_from_disk()
543 sbp->sb_pquotino = sbp->sb_gquotino; in xfs_sb_quota_from_disk()
544 sbp->sb_gquotino = NULLFSINO; in xfs_sb_quota_from_disk()
910 struct xfs_sb *sbp) in xfs_sb_mount_common() argument
915 mp->m_blkbit_log = sbp->sb_blocklog + XFS_NBBYLOG; in xfs_sb_mount_common()
916 mp->m_blkbb_log = sbp->sb_blocklog - BBSHIFT; in xfs_sb_mount_common()
917 mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT; in xfs_sb_mount_common()
918 mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1; in xfs_sb_mount_common()
919 mp->m_blockmask = sbp->sb_blocksize - 1; in xfs_sb_mount_common()
920 mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; in xfs_sb_mount_common()
923 mp->m_alloc_mxr[0] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 1); in xfs_sb_mount_common()
924 mp->m_alloc_mxr[1] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 0); in xfs_sb_mount_common()
928 mp->m_bmap_dmxr[0] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 1); in xfs_sb_mount_common()
929 mp->m_bmap_dmxr[1] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 0); in xfs_sb_mount_common()
933 mp->m_rmap_mxr[0] = xfs_rmapbt_maxrecs(sbp->sb_blocksize, 1); in xfs_sb_mount_common()
934 mp->m_rmap_mxr[1] = xfs_rmapbt_maxrecs(sbp->sb_blocksize, 0); in xfs_sb_mount_common()
938 mp->m_refc_mxr[0] = xfs_refcountbt_maxrecs(sbp->sb_blocksize, true); in xfs_sb_mount_common()
939 mp->m_refc_mxr[1] = xfs_refcountbt_maxrecs(sbp->sb_blocksize, false); in xfs_sb_mount_common()
1129 struct xfs_sb *sbp = &mp->m_sb; in xfs_fs_geometry() local
1133 geo->blocksize = sbp->sb_blocksize; in xfs_fs_geometry()
1134 geo->rtextsize = sbp->sb_rextsize; in xfs_fs_geometry()
1135 geo->agblocks = sbp->sb_agblocks; in xfs_fs_geometry()
1136 geo->agcount = sbp->sb_agcount; in xfs_fs_geometry()
1137 geo->logblocks = sbp->sb_logblocks; in xfs_fs_geometry()
1138 geo->sectsize = sbp->sb_sectsize; in xfs_fs_geometry()
1139 geo->inodesize = sbp->sb_inodesize; in xfs_fs_geometry()
1140 geo->imaxpct = sbp->sb_imax_pct; in xfs_fs_geometry()
1141 geo->datablocks = sbp->sb_dblocks; in xfs_fs_geometry()
1142 geo->rtblocks = sbp->sb_rblocks; in xfs_fs_geometry()
1143 geo->rtextents = sbp->sb_rextents; in xfs_fs_geometry()
1144 geo->logstart = sbp->sb_logstart; in xfs_fs_geometry()
1145 BUILD_BUG_ON(sizeof(geo->uuid) != sizeof(sbp->sb_uuid)); in xfs_fs_geometry()
1146 memcpy(geo->uuid, &sbp->sb_uuid, sizeof(sbp->sb_uuid)); in xfs_fs_geometry()
1151 geo->sunit = sbp->sb_unit; in xfs_fs_geometry()
1152 geo->swidth = sbp->sb_width; in xfs_fs_geometry()
1195 geo->logsectsize = sbp->sb_logsectsize; in xfs_fs_geometry()
1201 geo->rtsectsize = sbp->sb_blocksize; in xfs_fs_geometry()
1202 geo->dirblocksize = xfs_dir2_dirblock_bytes(sbp); in xfs_fs_geometry()
1210 geo->logsunit = sbp->sb_logsunit; in xfs_fs_geometry()