Commit Graph

28 Commits

Author SHA1 Message Date
Bill O'Donnell b440373349 xfs: remove conditional building of rt geometry validator functions
JIRA: https://issues.redhat.com/browse/RHEL-65728

commit 881f78f472556ed05588172d5b5676b48dc48240
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Jan 29 20:27:23 2024 -0800

    xfs: remove conditional building of rt geometry validator functions

    I mistakenly turned off CONFIG_XFS_RT in the Kconfig file for arm64
    variant of the djwong-wtf git branch.  Unfortunately, it took me a good
    hour to figure out that RT wasn't built because this is what got printed
    to dmesg:

    XFS (sda2): realtime geometry sanity check failed
    XFS (sda2): Metadata corruption detected at xfs_sb_read_verify+0x170/0x190 [xfs], xfs_sb block 0x0

    Whereas I would have expected:

    XFS (sda2): Not built with CONFIG_XFS_RT
    XFS (sda2): RT mount failed

    The root cause of these problems is the conditional compilation of the
    new functions xfs_validate_rtextents and xfs_compute_rextslog that I
    introduced in the two commits listed below.  The !RT versions of these
    functions return false and 0, respectively, which causes primary
    superblock validation to fail, which explains the first message.

    Move the two functions to other parts of libxfs that are not
    conditionally defined by CONFIG_XFS_RT and remove the broken stubs so
    that validation works again.

    Fixes: e14293803f4e ("xfs: don't allow overly small or large realtime volumes")
    Fixes: a6a38f309afc ("xfs: make rextslog computation consistent with mkfs")
    Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-20 11:26:21 -06:00
Bill O'Donnell 4df97e9500 xfs: move xfs_rtget_summary to xfs_rtbitmap.c
JIRA: https://issues.redhat.com/browse/RHEL-65728

commit c2adcfa31ff606264fab6e69129d6d45c9ddb7cb
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Dec 18 05:57:26 2023 +0100

    xfs: move xfs_rtget_summary to xfs_rtbitmap.c

    xfs_rtmodify_summary_int is only used inside xfs_rtbitmap.c and to
    implement xfs_rtget_summary.  Move xfs_rtget_summary to xfs_rtbitmap.c
    as the exported API and mark xfs_rtmodify_summary_int static.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-20 11:26:14 -06:00
Bill O'Donnell be34cb98e1 xfs: don't allow overly small or large realtime volumes
JIRA: https://issues.redhat.com/browse/RHEL-65728

commit e14293803f4e84eb23a417b462b56251033b5a66
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Fri Dec 1 09:24:18 2023 -0800

    xfs: don't allow overly small or large realtime volumes

    Don't allow realtime volumes that are less than one rt extent long.
    This has been broken across 4 LTS kernels with nobody noticing, so let's
    just disable it.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-20 11:25:52 -06:00
Bill O'Donnell c9f7d1db2b xfs: make rextslog computation consistent with mkfs
JIRA: https://issues.redhat.com/browse/RHEL-65728

commit a6a38f309afc4a7ede01242b603f36c433997780
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Fri Dec 1 09:17:40 2023 -0800

    xfs: make rextslog computation consistent with mkfs

    There's a weird discrepancy in xfsprogs dating back to the creation of
    the Linux port -- if there are zero rt extents, mkfs will set
    sb_rextents and sb_rextslog both to zero:

            sbp->sb_rextslog =
                    (uint8_t)(rtextents ?
                            libxfs_highbit32((unsigned int)rtextents) : 0);

    However, that's not the check that xfs_repair uses for nonzero rtblocks:

            if (sb->sb_rextslog !=
                            libxfs_highbit32((unsigned int)sb->sb_rextents))

    The difference here is that xfs_highbit32 returns -1 if its argument is
    zero.  Unfortunately, this means that in the weird corner case of a
    realtime volume shorter than 1 rt extent, xfs_repair will immediately
    flag a freshly formatted filesystem as corrupt.  Because mkfs has been
    writing ondisk artifacts like this for decades, we have to accept that
    as "correct".  TBH, zero rextslog for zero rtextents makes more sense to
    me anyway.

    Regrettably, the superblock verifier checks created in commit copied
    xfs_repair even though mkfs has been writing out such filesystems for
    ages.  Fix the superblock verifier to accept what mkfs spits out; the
    userspace version of this patch will have to fix xfs_repair as well.

    Note that the new helper leaves the zeroday bug where the upper 32 bits
    of sb_rextents is ripped off and fed to highbit32.  This leads to a
    seriously undersized rt summary file, which immediately breaks mkfs:

    $ hugedisk.sh foo /dev/sdc $(( 0x100000080 * 4096))B
    $ /sbin/mkfs.xfs -f /dev/sda -m rmapbt=0,reflink=0 -r rtdev=/dev/mapper/foo
    meta-data=/dev/sda               isize=512    agcount=4, agsize=1298176 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=0    bigtime=1 inobtcount=1 nrext64=1
    data     =                       bsize=4096   blocks=5192704, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=16384, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =/dev/mapper/foo        extsz=4096   blocks=4294967424, rtextents=4294967424
    Discarding blocks...Done.
    mkfs.xfs: Error initializing the realtime space [117 - Structure needs cleaning]

    The next patch will drop support for rt volumes with fewer than 1 or
    more than 2^32-1 rt extents, since they've clearly been broken forever.

    Fixes: f8e566c0f5 ("xfs: validate the realtime geometry in xfs_validate_sb_common")
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-20 11:25:52 -06:00
Bill O'Donnell 15da8bcb01 xfs: simplify rt bitmap/summary block accessor functions
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit e2cf427c91494ea0d1173a911090c39665c5fdef
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Oct 18 10:28:10 2023 -0700

    xfs: simplify rt bitmap/summary block accessor functions

    Simplify the calling convention of these functions since the
    xfs_rtalloc_args structure contains the parameters we need.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:41 -06:00
Bill O'Donnell 0c37661796 xfs: simplify xfs_rtbuf_get calling conventions
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 5b1d0ae9753f0654ab56c1e06155b3abf2919d71
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Oct 18 10:19:41 2023 -0700

    xfs: simplify xfs_rtbuf_get calling conventions

    Now that xfs_rtalloc_args holds references to the last-read bitmap and
    summary blocks, we don't need to pass the buffer pointer out of
    xfs_rtbuf_get.

    Callers no longer have to xfs_trans_brelse on their own, though they are
    required to call xfs_rtbuf_cache_relse before the xfs_rtalloc_args goes
    out of scope.

    While we're at it, create some trivial helpers so that we don't have to
    remember if "0" means "bitmap" and "1" means "summary".

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:41 -06:00
Bill O'Donnell 874aa49368 xfs: cache last bitmap block in realtime allocator
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit e94b53ff699c2674a9ec083342a5254866210ade
Author: Omar Sandoval <osandov@fb.com>
Date:   Mon Oct 16 10:13:22 2023 -0700

    xfs: cache last bitmap block in realtime allocator

    Profiling a workload on a highly fragmented realtime device showed a ton
    of CPU cycles being spent in xfs_trans_read_buf() called by
    xfs_rtbuf_get(). Further tracing showed that much of that was repeated
    calls to xfs_rtbuf_get() for the same block of the realtime bitmap.
    These come from xfs_rtallocate_extent_block(): as it walks through
    ranges of free bits in the bitmap, each call to xfs_rtcheck_range() and
    xfs_rtfind_{forw,back}() gets the same bitmap block. If the bitmap block
    is very fragmented, then this is _a lot_ of buffer lookups.

    The realtime allocator already passes around a cache of the last used
    realtime summary block to avoid repeated reads (the parameters rbpp and
    rsb). We can do the same for the realtime bitmap.

    This replaces rbpp and rsb with a struct xfs_rtbuf_cache, which caches
    the most recently used block for both the realtime bitmap and summary.
    xfs_rtbuf_get() now handles the caching instead of the callers, which
    requires plumbing xfs_rtbuf_cache to more functions but also makes sure
    we don't miss anything.

    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:41 -06:00
Bill O'Donnell b32270d457 xfs: consolidate realtime allocation arguments
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 41f33d82cfd310e344fc9183f02cc9e0d2d27663
Author: Dave Chinner <dchinner@redhat.com>
Date:   Mon Oct 16 09:54:19 2023 -0700

    xfs: consolidate realtime allocation arguments

    Consolidate the arguments passed around the rt allocator into a
    struct xfs_rtalloc_arg similar to how the btree allocator arguments
    are consolidated in a struct xfs_alloc_arg....

    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:40 -06:00
Bill O'Donnell b53b7def90 xfs: use accessor functions for summary info words
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 663b8db7b0256b81152b2f786e45ecf12bdf265f
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:51:16 2023 -0700

    xfs: use accessor functions for summary info words

    Create get and set functions for rtsummary words so that we can redefine
    the ondisk format with a specific endianness.  Note that this requires
    the definition of a distinct type for ondisk summary info words so that
    the compiler can perform proper typechecking.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:40 -06:00
Bill O'Donnell 6378f5954e xfs: create helpers for rtsummary block/wordcount computations
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit bd85af280de66a946022775a876edf0c553e3f35
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:50:34 2023 -0700

    xfs: create helpers for rtsummary block/wordcount computations

    Create helper functions that compute the number of blocks or words
    necessary to store the rt summary file.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:40 -06:00
Bill O'Donnell fb6a0a72ef xfs: use accessor functions for bitmap words
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 97e993830a1cdd86ad7d207308b9f55a00660edd
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:49:01 2023 -0700

    xfs: use accessor functions for bitmap words

    Create get and set functions for rtbitmap words so that we can redefine
    the ondisk format with a specific endianness.  Note that this requires
    the definition of a distinct type for ondisk rtbitmap words so that the
    compiler can perform proper typechecking as we go back and forth.

    In the upcoming rtgroups feature, we're going to fix the problem that
    rtwords are written in host endian order, which means we'll need the
    distinct rtword/rtword_raw types.

    Suggested-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:40 -06:00
Bill O'Donnell dbfe236491 xfs: create helpers for rtbitmap block/wordcount computations
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit d0448fe76ac1a9ccbce574577a4c82246d17eec4
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:48:20 2023 -0700

    xfs: create helpers for rtbitmap block/wordcount computations

    Create helper functions that compute the number of blocks or words
    necessary to store the rt bitmap.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:39 -06:00
Bill O'Donnell adaab1dbc9 xfs: convert rt summary macros to helpers
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 097b4b7b64ef67a4703b89fd4064480b61557fd5
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:47:34 2023 -0700

    xfs: convert rt summary macros to helpers

    Convert the realtime summary file macros to helper functions so that we
    can improve type checking.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:39 -06:00
Bill O'Donnell ca1b050d2b xfs: convert open-coded xfs_rtword_t pointer accesses to helper
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit a9948626849c2c65dfd201b5e9d855e62937de61
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:46:53 2023 -0700

    xfs: convert open-coded xfs_rtword_t pointer accesses to helper

    There are a bunch of places where we use open-coded logic to find a
    pointer to an xfs_rtword_t within a rt bitmap buffer.  Convert all that
    to helper functions for better type safety.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:38 -06:00
Bill O'Donnell 86e3c7e849 xfs: remove XFS_BLOCKWSIZE and XFS_BLOCKWMASK macros
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit add3cddaea509071d01bf1d34df0d05db1a93a07
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:46:08 2023 -0700

    xfs: remove XFS_BLOCKWSIZE and XFS_BLOCKWMASK macros

    Remove these trivial macros since they're not even part of the ondisk
    format.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:38 -06:00
Bill O'Donnell d404436167 xfs: convert the rtbitmap block and bit macros to static inline functions
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 90d98a6ada1da0f8797ff3f5adafd175dd8c0a81
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:44:13 2023 -0700

    xfs: convert the rtbitmap block and bit macros to static inline functions

    Replace these macros with typechecked helper functions.  Eventually
    we're going to add more logic to the helpers and it'll be easier if we
    don't have to macro it up.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:38 -06:00
Bill O'Donnell 2863940279 xfs: use shifting and masking when converting rt extents, if possible
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit ef5a83b7e597038d1c734ddb4bc00638082c2bf1
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:40:11 2023 -0700

    xfs: use shifting and masking when converting rt extents, if possible

    Avoid the costs of integer division (32-bit and 64-bit) if the realtime
    extent size is a power of two.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:38 -06:00
Bill O'Donnell 0c25cef455 xfs: create rt extent rounding helpers for realtime extent blocks
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 5f57f7309d9ab9d24d50c5707472b1ed8af4eabc
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:38:28 2023 -0700

    xfs: create rt extent rounding helpers for realtime extent blocks

    Create a pair of functions to round rtblock numbers up or down to the
    nearest rt extent.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:37 -06:00
Bill O'Donnell d97dd3291d xfs: convert do_div calls to xfs_rtb_to_rtx helper calls
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 055641248f649b52620a5fe8774bea253690e057
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:37:47 2023 -0700

    xfs: convert do_div calls to xfs_rtb_to_rtx helper calls

    Convert these calls to use the helpers, and clean up all these places
    where the same variable can have different units depending on where it
    is in the function.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:37 -06:00
Bill O'Donnell 747c7f6fdf xfs: create helpers to convert rt block numbers to rt extent numbers
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 5dc3a80d46a450481df7f7e9fe673ba3eb4514c3
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:37:07 2023 -0700

    xfs: create helpers to convert rt block numbers to rt extent numbers

    Create helpers to do unit conversions of rt block numbers to rt extent
    numbers.  There are three variations -- one to compute the rt extent
    number from an rt block number; one to compute the offset of an rt block
    within an rt extent; and one to extract both.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:37 -06:00
Bill O'Donnell 520fae453c xfs: create a helper to convert extlen to rtextlen
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 2c2b981b737a519907429f62148bbd9e40e01132
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:35:23 2023 -0700

    xfs: create a helper to convert extlen to rtextlen

    Create a helper to compute the realtime extent (xfs_rtxlen_t) from an
    extent length (xfs_extlen_t) value.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:36 -06:00
Bill O'Donnell 0a4322cf76 xfs: create a helper to compute leftovers of realtime extents
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 68db60bf01c131c09bbe35adf43bd957a4c124bc
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:34:39 2023 -0700

    xfs: create a helper to compute leftovers of realtime extents

    Create a helper to compute the misalignment between a file extent
    (xfs_extlen_t) and a realtime extent.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:36 -06:00
Bill O'Donnell 3ec04f5ca0 xfs: create a helper to convert rtextents to rtblocks
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit fa5a387230861116c2434c20d29fc4b3fd077d24
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:32:54 2023 -0700

    xfs: create a helper to convert rtextents to rtblocks

    Create a helper to convert a realtime extent to a realtime block.  Later
    on we'll change the helper to use bit shifts when possible.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:36 -06:00
Bill O'Donnell bf3789f89b xfs: convert rt extent numbers to xfs_rtxnum_t
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 2d5f216b77e33f9b503bd42998271da35d4b7055
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:32:45 2023 -0700

    xfs: convert rt extent numbers to xfs_rtxnum_t

    Further disambiguate the xfs_rtblock_t uses by creating a new type,
    xfs_rtxnum_t, to store the position of an extent within the realtime
    section, in units of rtextents.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:35 -06:00
Bill O'Donnell a460d683fe xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit f29c3e745dc253bf9d9d06ddc36af1a534ba1dd0
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:31:12 2023 -0700

    xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t

    XFS uses xfs_rtblock_t for many different uses, which makes it much more
    difficult to perform a unit analysis on the codebase.  One of these
    (ab)uses is when we need to store the length of a free space extent as
    stored in the realtime bitmap.  Because there can be up to 2^64 realtime
    extents in a filesystem, we need a new type that is larger than
    xfs_rtxlen_t for callers that are querying the bitmap directly.  This
    means scrub and growfs.

    Create this type as "xfs_rtbxlen_t" and use it to store 64-bit rtx
    lengths.  'b' stands for 'bitmap' or 'big'; reader's choice.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:35 -06:00
Bill O'Donnell 87521d5f25 xfs: convert rt bitmap/summary block numbers to xfs_fileoff_t
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 03f4de332e2e79db36ed2156fb2350480f142bec
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:31:11 2023 -0700

    xfs: convert rt bitmap/summary block numbers to xfs_fileoff_t

    We should use xfs_fileoff_t to store the file block offset of any
    location within the realtime bitmap or summary files.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:35 -06:00
Bill O'Donnell c65cfa90d7 xfs: convert xfs_extlen_t to xfs_rtxlen_t in the rt allocator
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit a684c538bc14410565e8939393089670fa1e19dd
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:31:11 2023 -0700

    xfs: convert xfs_extlen_t to xfs_rtxlen_t in the rt allocator

    In most of the filesystem, we use xfs_extlen_t to store the length of a
    file (or AG) space mapping in units of fs blocks.  Unfortunately, the
    realtime allocator also uses it to store the length of a rt space
    mapping in units of rt extents.  This is confusing, since one rt extent
    can consist of many fs blocks.

    Separate the two by introducing a new type (xfs_rtxlen_t) to store the
    length of a space mapping (in units of realtime extents) that would be
    found in a file.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:34 -06:00
Bill O'Donnell 1aef19b26a xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h
JIRA: https://issues.redhat.com/browse/RHEL-62760

commit 13928113fc5b5e79c91796290a99ed991ac0efe2
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 16 09:21:47 2023 -0700

    xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h

    Move all the declarations for functionality in xfs_rtbitmap.c into a
    separate xfs_rtbitmap.h header file.

    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>

Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>
2024-11-09 10:06:34 -06:00