xfs_ag.c (2d6ca8321c354e1cb6f6b1963c4f7bd053d2e272) xfs_ag.c (36029dee382a20cf515494376ce9f0d5949944eb)
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
4 * Copyright (c) 2018 Red Hat, Inc.
5 * All rights reserved.
6 */
7
8#include "xfs.h"

--- 376 unchanged lines hidden (view full) ---

385
386 bp->b_maps[0].bm_bn = blkno;
387 bp->b_ops = ops;
388
389 *bpp = bp;
390 return 0;
391}
392
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
4 * Copyright (c) 2018 Red Hat, Inc.
5 * All rights reserved.
6 */
7
8#include "xfs.h"

--- 376 unchanged lines hidden (view full) ---

385
386 bp->b_maps[0].bm_bn = blkno;
387 bp->b_ops = ops;
388
389 *bpp = bp;
390 return 0;
391}
392
393static inline bool is_log_ag(struct xfs_mount *mp, struct aghdr_init_data *id)
394{
395 return mp->m_sb.sb_logstart > 0 &&
396 id->agno == XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart);
397}
398
399/*
400 * Generic btree root block init function
401 */
402static void
403xfs_btroot_init(
404 struct xfs_mount *mp,
405 struct xfs_buf *bp,
406 struct aghdr_init_data *id)

--- 9 unchanged lines hidden (view full) ---

416 struct aghdr_init_data *id)
417{
418 struct xfs_alloc_rec *arec;
419 struct xfs_btree_block *block = XFS_BUF_TO_BLOCK(bp);
420
421 arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1);
422 arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks);
423
393/*
394 * Generic btree root block init function
395 */
396static void
397xfs_btroot_init(
398 struct xfs_mount *mp,
399 struct xfs_buf *bp,
400 struct aghdr_init_data *id)

--- 9 unchanged lines hidden (view full) ---

410 struct aghdr_init_data *id)
411{
412 struct xfs_alloc_rec *arec;
413 struct xfs_btree_block *block = XFS_BUF_TO_BLOCK(bp);
414
415 arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1);
416 arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks);
417
424 if (is_log_ag(mp, id)) {
418 if (xfs_ag_contains_log(mp, id->agno)) {
425 struct xfs_alloc_rec *nrec;
426 xfs_agblock_t start = XFS_FSB_TO_AGBNO(mp,
427 mp->m_sb.sb_logstart);
428
429 ASSERT(start >= mp->m_ag_prealloc_blocks);
430 if (start != mp->m_ag_prealloc_blocks) {
431 /*
432 * Modify first record to pad stripe align of log

--- 110 unchanged lines hidden (view full) ---

543 rrec->rm_startblock = cpu_to_be32(xfs_refc_block(mp));
544 rrec->rm_blockcount = cpu_to_be32(1);
545 rrec->rm_owner = cpu_to_be64(XFS_RMAP_OWN_REFC);
546 rrec->rm_offset = 0;
547 be16_add_cpu(&block->bb_numrecs, 1);
548 }
549
550 /* account for the log space */
419 struct xfs_alloc_rec *nrec;
420 xfs_agblock_t start = XFS_FSB_TO_AGBNO(mp,
421 mp->m_sb.sb_logstart);
422
423 ASSERT(start >= mp->m_ag_prealloc_blocks);
424 if (start != mp->m_ag_prealloc_blocks) {
425 /*
426 * Modify first record to pad stripe align of log

--- 110 unchanged lines hidden (view full) ---

537 rrec->rm_startblock = cpu_to_be32(xfs_refc_block(mp));
538 rrec->rm_blockcount = cpu_to_be32(1);
539 rrec->rm_owner = cpu_to_be64(XFS_RMAP_OWN_REFC);
540 rrec->rm_offset = 0;
541 be16_add_cpu(&block->bb_numrecs, 1);
542 }
543
544 /* account for the log space */
551 if (is_log_ag(mp, id)) {
545 if (xfs_ag_contains_log(mp, id->agno)) {
552 rrec = XFS_RMAP_REC_ADDR(block,
553 be16_to_cpu(block->bb_numrecs) + 1);
554 rrec->rm_startblock = cpu_to_be32(
555 XFS_FSB_TO_AGBNO(mp, mp->m_sb.sb_logstart));
556 rrec->rm_blockcount = cpu_to_be32(mp->m_sb.sb_logblocks);
557 rrec->rm_owner = cpu_to_be64(XFS_RMAP_OWN_LOG);
558 rrec->rm_offset = 0;
559 be16_add_cpu(&block->bb_numrecs, 1);

--- 54 unchanged lines hidden (view full) ---

614 uuid_copy(&agf->agf_uuid, &mp->m_sb.sb_meta_uuid);
615 if (xfs_has_reflink(mp)) {
616 agf->agf_refcount_root = cpu_to_be32(
617 xfs_refc_block(mp));
618 agf->agf_refcount_level = cpu_to_be32(1);
619 agf->agf_refcount_blocks = cpu_to_be32(1);
620 }
621
546 rrec = XFS_RMAP_REC_ADDR(block,
547 be16_to_cpu(block->bb_numrecs) + 1);
548 rrec->rm_startblock = cpu_to_be32(
549 XFS_FSB_TO_AGBNO(mp, mp->m_sb.sb_logstart));
550 rrec->rm_blockcount = cpu_to_be32(mp->m_sb.sb_logblocks);
551 rrec->rm_owner = cpu_to_be64(XFS_RMAP_OWN_LOG);
552 rrec->rm_offset = 0;
553 be16_add_cpu(&block->bb_numrecs, 1);

--- 54 unchanged lines hidden (view full) ---

608 uuid_copy(&agf->agf_uuid, &mp->m_sb.sb_meta_uuid);
609 if (xfs_has_reflink(mp)) {
610 agf->agf_refcount_root = cpu_to_be32(
611 xfs_refc_block(mp));
612 agf->agf_refcount_level = cpu_to_be32(1);
613 agf->agf_refcount_blocks = cpu_to_be32(1);
614 }
615
622 if (is_log_ag(mp, id)) {
616 if (xfs_ag_contains_log(mp, id->agno)) {
623 int64_t logblocks = mp->m_sb.sb_logblocks;
624
625 be32_add_cpu(&agf->agf_freeblks, -logblocks);
626 agf->agf_longest = cpu_to_be32(id->agsize -
627 XFS_FSB_TO_AGBNO(mp, mp->m_sb.sb_logstart) - logblocks);
628 }
629}
630

--- 426 unchanged lines hidden ---
617 int64_t logblocks = mp->m_sb.sb_logblocks;
618
619 be32_add_cpu(&agf->agf_freeblks, -logblocks);
620 agf->agf_longest = cpu_to_be32(id->agsize -
621 XFS_FSB_TO_AGBNO(mp, mp->m_sb.sb_logstart) - logblocks);
622 }
623}
624

--- 426 unchanged lines hidden ---