Lines Matching defs:sbp
39 struct xfs_sb *sbp)
42 if (sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS)
49 if (sbp->sb_features2 & ~(XFS_SB_VERSION2_OKBITS |
67 if ((sbp->sb_versionnum & V5_VERS_FLAGS) != V5_VERS_FLAGS)
69 if ((sbp->sb_features2 & V5_FEAT_FLAGS) != V5_FEAT_FLAGS)
80 struct xfs_sb *sbp)
87 if (xfs_sb_is_v5(sbp))
88 return xfs_sb_validate_v5_features(sbp);
91 if (XFS_SB_VERSION_NUM(sbp) != XFS_SB_VERSION_4)
95 if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKBITS) ||
96 ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) &&
97 (sbp->sb_features2 & ~XFS_SB_VERSION2_OKBITS)))
101 if (!(sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT))
103 if (!(sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT))
112 struct xfs_sb *sbp)
117 if (sbp->sb_rblocks > 0)
119 if (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT)
121 if (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT)
123 if (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT)
125 if (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT)
127 if (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT)
129 if (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT)
131 if (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT)
133 if (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT)
135 if (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT)
137 if (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) {
138 if (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)
140 if (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT)
142 if (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT)
144 if (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)
148 if (!xfs_sb_is_v5(sbp))
157 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FINOBT)
159 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_RMAPBT)
161 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_REFLINK)
163 if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_INOBTCNT)
165 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_FTYPE)
167 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_SPINODES)
169 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_META_UUID)
171 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_BIGTIME)
173 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR)
175 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NREXT64)
185 struct xfs_sb *sbp)
187 if (!xfs_sb_is_v5(sbp))
194 if (xfs_sb_has_compat_feature(sbp, XFS_SB_FEAT_COMPAT_UNKNOWN)) {
197 (sbp->sb_features_compat & XFS_SB_FEAT_COMPAT_UNKNOWN));
202 if (xfs_sb_has_ro_compat_feature(sbp, XFS_SB_FEAT_RO_COMPAT_UNKNOWN)) {
205 (sbp->sb_features_ro_compat &
216 if (xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_UNKNOWN)) {
219 (sbp->sb_features_incompat &
234 struct xfs_sb *sbp)
246 if (xfs_buf_daddr(bp) == XFS_SB_DADDR && !sbp->sb_inprogress &&
247 (sbp->sb_fdblocks > sbp->sb_dblocks ||
248 !xfs_verify_icount(mp, sbp->sb_icount) ||
249 sbp->sb_ifree > sbp->sb_icount)) {
254 if (!xfs_sb_is_v5(sbp))
262 if (xfs_sb_has_compat_feature(sbp, XFS_SB_FEAT_COMPAT_UNKNOWN)) {
265 (sbp->sb_features_compat & XFS_SB_FEAT_COMPAT_UNKNOWN));
270 xfs_sb_has_ro_compat_feature(sbp, XFS_SB_FEAT_RO_COMPAT_UNKNOWN)) {
273 (sbp->sb_features_ro_compat &
277 if (xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_UNKNOWN)) {
280 (sbp->sb_features_incompat &
284 if (xfs_sb_has_incompat_log_feature(sbp,
288 (sbp->sb_features_log_incompat &
298 if (!xfs_log_check_lsn(mp, sbp->sb_lsn))
309 struct xfs_sb *sbp)
323 if (!xfs_sb_good_version(sbp)) {
332 if (xfs_sb_is_v5(sbp)) {
333 if (sbp->sb_blocksize < XFS_MIN_CRC_BLOCKSIZE) {
336 sbp->sb_blocksize, XFS_MIN_CRC_BLOCKSIZE);
341 if (sbp->sb_qflags & (XFS_OQUOTA_ENFD | XFS_OQUOTA_CHKD)) {
352 if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_SPINODES) {
355 align = XFS_INODES_PER_CHUNK * sbp->sb_inodesize
356 >> sbp->sb_blocklog;
357 if (sbp->sb_inoalignmt != align) {
360 sbp->sb_inoalignmt, align);
364 } else if (sbp->sb_qflags & (XFS_PQUOTA_ENFD | XFS_GQUOTA_ENFD |
372 sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) {
380 sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) {
388 if (sbp->sb_agblocks) {
389 agcount = div_u64_rem(sbp->sb_dblocks, sbp->sb_agblocks, &rem);
399 sbp->sb_agcount <= 0 ||
400 sbp->sb_sectsize < XFS_MIN_SECTORSIZE ||
401 sbp->sb_sectsize > XFS_MAX_SECTORSIZE ||
402 sbp->sb_sectlog < XFS_MIN_SECTORSIZE_LOG ||
403 sbp->sb_sectlog > XFS_MAX_SECTORSIZE_LOG ||
404 sbp->sb_sectsize != (1 << sbp->sb_sectlog) ||
405 sbp->sb_blocksize < XFS_MIN_BLOCKSIZE ||
406 sbp->sb_blocksize > XFS_MAX_BLOCKSIZE ||
407 sbp->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG ||
408 sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG ||
409 sbp->sb_blocksize != (1 << sbp->sb_blocklog) ||
410 sbp->sb_dirblklog + sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG ||
411 sbp->sb_inodesize < XFS_DINODE_MIN_SIZE ||
412 sbp->sb_inodesize > XFS_DINODE_MAX_SIZE ||
413 sbp->sb_inodelog < XFS_DINODE_MIN_LOG ||
414 sbp->sb_inodelog > XFS_DINODE_MAX_LOG ||
415 sbp->sb_inodesize != (1 << sbp->sb_inodelog) ||
416 sbp->sb_inopblock != howmany(sbp->sb_blocksize,sbp->sb_inodesize) ||
417 XFS_FSB_TO_B(mp, sbp->sb_agblocks) < XFS_MIN_AG_BYTES ||
418 XFS_FSB_TO_B(mp, sbp->sb_agblocks) > XFS_MAX_AG_BYTES ||
419 sbp->sb_agblklog != xfs_highbit32(sbp->sb_agblocks - 1) + 1 ||
420 agcount == 0 || agcount != sbp->sb_agcount ||
421 (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog) ||
422 (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE) ||
423 (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) ||
424 (sbp->sb_imax_pct > 100 /* zero sb_imax_pct is valid */) ||
425 sbp->sb_dblocks == 0 ||
426 sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp) ||
427 sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp) ||
428 sbp->sb_shared_vn != 0)) {
439 if (sbp->sb_logblocks > XFS_MAX_LOG_BLOCKS) {
442 sbp->sb_logblocks, XFS_MAX_LOG_BLOCKS);
446 if (XFS_FSB_TO_B(mp, sbp->sb_logblocks) > XFS_MAX_LOG_BYTES) {
449 XFS_FSB_TO_B(mp, sbp->sb_logblocks),
459 if (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT) {
460 if (sbp->sb_logsectsize != (1U << sbp->sb_logsectlog)) {
463 sbp->sb_logsectsize, 1U << sbp->sb_logsectlog);
466 } else if (sbp->sb_logsectsize || sbp->sb_logsectlog) {
469 sbp->sb_logsectsize, sbp->sb_logsectlog);
473 if (sbp->sb_logsunit > 1) {
474 if (sbp->sb_logsunit % sbp->sb_blocksize) {
477 sbp->sb_logsunit);
480 if (sbp->sb_logsunit > XLOG_MAX_RECORD_BSIZE) {
483 sbp->sb_logsunit, XLOG_MAX_RECORD_BSIZE);
489 if (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE ||
490 sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) {
496 if (sbp->sb_rblocks == 0) {
497 if (sbp->sb_rextents != 0 || sbp->sb_rbmblocks != 0 ||
498 sbp->sb_rextslog != 0 || sbp->sb_frextents != 0) {
507 rexts = div_u64(sbp->sb_rblocks, sbp->sb_rextsize);
508 rbmblocks = howmany_64(sbp->sb_rextents,
509 NBBY * sbp->sb_blocksize);
511 if (sbp->sb_rextents != rexts ||
512 sbp->sb_rextslog != xfs_highbit32(sbp->sb_rextents) ||
513 sbp->sb_rbmblocks != rbmblocks) {
524 has_dalign = sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT;
525 if (!!sbp->sb_unit ^ has_dalign) {
530 if (!xfs_validate_stripe_geometry(mp, XFS_FSB_TO_B(mp, sbp->sb_unit),
531 XFS_FSB_TO_B(mp, sbp->sb_width), 0, false))
537 switch (sbp->sb_inodesize) {
545 sbp->sb_inodesize);
553 xfs_sb_quota_from_disk(struct xfs_sb *sbp)
566 if (sbp->sb_uquotino == 0)
567 sbp->sb_uquotino = NULLFSINO;
568 if (sbp->sb_gquotino == 0)
569 sbp->sb_gquotino = NULLFSINO;
570 if (sbp->sb_pquotino == 0)
571 sbp->sb_pquotino = NULLFSINO;
577 if (xfs_sb_is_v5(sbp))
580 if (sbp->sb_qflags & XFS_OQUOTA_ENFD)
581 sbp->sb_qflags |= (sbp->sb_qflags & XFS_PQUOTA_ACCT) ?
583 if (sbp->sb_qflags & XFS_OQUOTA_CHKD)
584 sbp->sb_qflags |= (sbp->sb_qflags & XFS_PQUOTA_ACCT) ?
586 sbp->sb_qflags &= ~(XFS_OQUOTA_ENFD | XFS_OQUOTA_CHKD);
588 if (sbp->sb_qflags & XFS_PQUOTA_ACCT &&
589 sbp->sb_gquotino != NULLFSINO) {
599 sbp->sb_pquotino = sbp->sb_gquotino;
600 sbp->sb_gquotino = NULLFSINO;
966 struct xfs_sb *sbp)
971 mp->m_blkbit_log = sbp->sb_blocklog + XFS_NBBYLOG;
972 mp->m_blkbb_log = sbp->sb_blocklog - BBSHIFT;
973 mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT;
974 mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1;
975 mp->m_blockmask = sbp->sb_blocksize - 1;
976 mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG;
979 mp->m_alloc_mxr[0] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 1);
980 mp->m_alloc_mxr[1] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 0);
984 mp->m_bmap_dmxr[0] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 1);
985 mp->m_bmap_dmxr[1] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 0);
989 mp->m_rmap_mxr[0] = xfs_rmapbt_maxrecs(sbp->sb_blocksize, 1);
990 mp->m_rmap_mxr[1] = xfs_rmapbt_maxrecs(sbp->sb_blocksize, 0);
994 mp->m_refc_mxr[0] = xfs_refcountbt_maxrecs(sbp->sb_blocksize, true);
995 mp->m_refc_mxr[1] = xfs_refcountbt_maxrecs(sbp->sb_blocksize, false);
1185 struct xfs_sb *sbp = &mp->m_sb;
1189 geo->blocksize = sbp->sb_blocksize;
1190 geo->rtextsize = sbp->sb_rextsize;
1191 geo->agblocks = sbp->sb_agblocks;
1192 geo->agcount = sbp->sb_agcount;
1193 geo->logblocks = sbp->sb_logblocks;
1194 geo->sectsize = sbp->sb_sectsize;
1195 geo->inodesize = sbp->sb_inodesize;
1196 geo->imaxpct = sbp->sb_imax_pct;
1197 geo->datablocks = sbp->sb_dblocks;
1198 geo->rtblocks = sbp->sb_rblocks;
1199 geo->rtextents = sbp->sb_rextents;
1200 geo->logstart = sbp->sb_logstart;
1201 BUILD_BUG_ON(sizeof(geo->uuid) != sizeof(sbp->sb_uuid));
1202 memcpy(geo->uuid, &sbp->sb_uuid, sizeof(sbp->sb_uuid));
1207 geo->sunit = sbp->sb_unit;
1208 geo->swidth = sbp->sb_width;
1251 geo->logsectsize = sbp->sb_logsectsize;
1257 geo->rtsectsize = sbp->sb_blocksize;
1258 geo->dirblocksize = xfs_dir2_dirblock_bytes(sbp);
1266 geo->logsunit = sbp->sb_logsunit;