Skip to content

Commit 3ef52c0

Browse files
author
Chandan Babu R
committed
Merge tag 'clean-up-realtime-units-6.7_2023-10-19' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.7-mergeA
xfs: clean up realtime type usage [v1.1] The realtime code uses xfs_rtblock_t and xfs_fsblock_t in a lot of places, and it's very confusing. Clean up all the type usage so that an xfs_rtblock_t is always a block within the realtime volume, an xfs_fileoff_t is always a file offset within a realtime metadata file, and an xfs_rtxnumber_t is always a rt extent within the realtime volume. v1.1: various cleanups suggested by hch With a bit of luck, this should all go splendidly. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org> * tag 'clean-up-realtime-units-6.7_2023-10-19' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux: xfs: convert rt extent numbers to xfs_rtxnum_t xfs: rename xfs_verify_rtext to xfs_verify_rtbext xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t xfs: convert rt bitmap/summary block numbers to xfs_fileoff_t xfs: convert xfs_extlen_t to xfs_rtxlen_t in the rt allocator xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h xfs: make sure maxlen is still congruent with prod when rounding down xfs: fix units conversion error in xfs_bmap_del_extent_delay
2 parents d0e85e7 + 2d5f216 commit 3ef52c0

15 files changed

+319
-287
lines changed

fs/xfs/libxfs/xfs_bmap.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "xfs_bmap.h"
2222
#include "xfs_bmap_util.h"
2323
#include "xfs_bmap_btree.h"
24-
#include "xfs_rtalloc.h"
24+
#include "xfs_rtbitmap.h"
2525
#include "xfs_errortag.h"
2626
#include "xfs_error.h"
2727
#include "xfs_quota.h"
@@ -4827,7 +4827,7 @@ xfs_bmap_del_extent_delay(
48274827
ASSERT(got_endoff >= del_endoff);
48284828

48294829
if (isrt) {
4830-
uint64_t rtexts = XFS_FSB_TO_B(mp, del->br_blockcount);
4830+
uint64_t rtexts = del->br_blockcount;
48314831

48324832
do_div(rtexts, mp->m_sb.sb_rextsize);
48334833
xfs_mod_frextents(mp, rtexts);
@@ -6196,8 +6196,8 @@ xfs_bmap_validate_extent(
61966196
return __this_address;
61976197

61986198
if (XFS_IS_REALTIME_INODE(ip) && whichfork == XFS_DATA_FORK) {
6199-
if (!xfs_verify_rtext(mp, irec->br_startblock,
6200-
irec->br_blockcount))
6199+
if (!xfs_verify_rtbext(mp, irec->br_startblock,
6200+
irec->br_blockcount))
62016201
return __this_address;
62026202
} else {
62036203
if (!xfs_verify_fsbext(mp, irec->br_startblock,

fs/xfs/libxfs/xfs_format.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ typedef struct xfs_sb {
9898
uint32_t sb_blocksize; /* logical block size, bytes */
9999
xfs_rfsblock_t sb_dblocks; /* number of data blocks */
100100
xfs_rfsblock_t sb_rblocks; /* number of realtime blocks */
101-
xfs_rtblock_t sb_rextents; /* number of realtime extents */
101+
xfs_rtbxlen_t sb_rextents; /* number of realtime extents */
102102
uuid_t sb_uuid; /* user-visible file system unique id */
103103
xfs_fsblock_t sb_logstart; /* starting block of log if internal */
104104
xfs_ino_t sb_rootino; /* root inode number */

fs/xfs/libxfs/xfs_rtbitmap.c

Lines changed: 61 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "xfs_trans.h"
1717
#include "xfs_rtalloc.h"
1818
#include "xfs_error.h"
19+
#include "xfs_rtbitmap.h"
1920

2021
/*
2122
* Realtime allocator bitmap functions shared with userspace.
@@ -54,7 +55,7 @@ int
5455
xfs_rtbuf_get(
5556
xfs_mount_t *mp, /* file system mount structure */
5657
xfs_trans_t *tp, /* transaction pointer */
57-
xfs_rtblock_t block, /* block number in bitmap or summary */
58+
xfs_fileoff_t block, /* block number in bitmap or summary */
5859
int issum, /* is summary not bitmap */
5960
struct xfs_buf **bpp) /* output: buffer for the block */
6061
{
@@ -94,19 +95,19 @@ int
9495
xfs_rtfind_back(
9596
xfs_mount_t *mp, /* file system mount point */
9697
xfs_trans_t *tp, /* transaction pointer */
97-
xfs_rtblock_t start, /* starting block to look at */
98-
xfs_rtblock_t limit, /* last block to look at */
99-
xfs_rtblock_t *rtblock) /* out: start block found */
98+
xfs_rtxnum_t start, /* starting rtext to look at */
99+
xfs_rtxnum_t limit, /* last rtext to look at */
100+
xfs_rtxnum_t *rtx) /* out: start rtext found */
100101
{
101102
xfs_rtword_t *b; /* current word in buffer */
102103
int bit; /* bit number in the word */
103-
xfs_rtblock_t block; /* bitmap block number */
104+
xfs_fileoff_t block; /* bitmap block number */
104105
struct xfs_buf *bp; /* buf for the block */
105106
xfs_rtword_t *bufp; /* starting word in buffer */
106107
int error; /* error value */
107-
xfs_rtblock_t firstbit; /* first useful bit in the word */
108-
xfs_rtblock_t i; /* current bit number rel. to start */
109-
xfs_rtblock_t len; /* length of inspected area */
108+
xfs_rtxnum_t firstbit; /* first useful bit in the word */
109+
xfs_rtxnum_t i; /* current bit number rel. to start */
110+
xfs_rtxnum_t len; /* length of inspected area */
110111
xfs_rtword_t mask; /* mask of relevant bits for value */
111112
xfs_rtword_t want; /* mask for "good" values */
112113
xfs_rtword_t wdiff; /* difference from wanted value */
@@ -155,7 +156,7 @@ xfs_rtfind_back(
155156
*/
156157
xfs_trans_brelse(tp, bp);
157158
i = bit - XFS_RTHIBIT(wdiff);
158-
*rtblock = start - i + 1;
159+
*rtx = start - i + 1;
159160
return 0;
160161
}
161162
i = bit - firstbit + 1;
@@ -201,7 +202,7 @@ xfs_rtfind_back(
201202
*/
202203
xfs_trans_brelse(tp, bp);
203204
i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
204-
*rtblock = start - i + 1;
205+
*rtx = start - i + 1;
205206
return 0;
206207
}
207208
i += XFS_NBWORD;
@@ -248,7 +249,7 @@ xfs_rtfind_back(
248249
*/
249250
xfs_trans_brelse(tp, bp);
250251
i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
251-
*rtblock = start - i + 1;
252+
*rtx = start - i + 1;
252253
return 0;
253254
} else
254255
i = len;
@@ -257,7 +258,7 @@ xfs_rtfind_back(
257258
* No match, return that we scanned the whole area.
258259
*/
259260
xfs_trans_brelse(tp, bp);
260-
*rtblock = start - i + 1;
261+
*rtx = start - i + 1;
261262
return 0;
262263
}
263264

@@ -269,19 +270,19 @@ int
269270
xfs_rtfind_forw(
270271
xfs_mount_t *mp, /* file system mount point */
271272
xfs_trans_t *tp, /* transaction pointer */
272-
xfs_rtblock_t start, /* starting block to look at */
273-
xfs_rtblock_t limit, /* last block to look at */
274-
xfs_rtblock_t *rtblock) /* out: start block found */
273+
xfs_rtxnum_t start, /* starting rtext to look at */
274+
xfs_rtxnum_t limit, /* last rtext to look at */
275+
xfs_rtxnum_t *rtx) /* out: start rtext found */
275276
{
276277
xfs_rtword_t *b; /* current word in buffer */
277278
int bit; /* bit number in the word */
278-
xfs_rtblock_t block; /* bitmap block number */
279+
xfs_fileoff_t block; /* bitmap block number */
279280
struct xfs_buf *bp; /* buf for the block */
280281
xfs_rtword_t *bufp; /* starting word in buffer */
281282
int error; /* error value */
282-
xfs_rtblock_t i; /* current bit number rel. to start */
283-
xfs_rtblock_t lastbit; /* last useful bit in the word */
284-
xfs_rtblock_t len; /* length of inspected area */
283+
xfs_rtxnum_t i; /* current bit number rel. to start */
284+
xfs_rtxnum_t lastbit; /* last useful bit in the word */
285+
xfs_rtxnum_t len; /* length of inspected area */
285286
xfs_rtword_t mask; /* mask of relevant bits for value */
286287
xfs_rtword_t want; /* mask for "good" values */
287288
xfs_rtword_t wdiff; /* difference from wanted value */
@@ -329,7 +330,7 @@ xfs_rtfind_forw(
329330
*/
330331
xfs_trans_brelse(tp, bp);
331332
i = XFS_RTLOBIT(wdiff) - bit;
332-
*rtblock = start + i - 1;
333+
*rtx = start + i - 1;
333334
return 0;
334335
}
335336
i = lastbit - bit;
@@ -374,7 +375,7 @@ xfs_rtfind_forw(
374375
*/
375376
xfs_trans_brelse(tp, bp);
376377
i += XFS_RTLOBIT(wdiff);
377-
*rtblock = start + i - 1;
378+
*rtx = start + i - 1;
378379
return 0;
379380
}
380381
i += XFS_NBWORD;
@@ -418,7 +419,7 @@ xfs_rtfind_forw(
418419
*/
419420
xfs_trans_brelse(tp, bp);
420421
i += XFS_RTLOBIT(wdiff);
421-
*rtblock = start + i - 1;
422+
*rtx = start + i - 1;
422423
return 0;
423424
} else
424425
i = len;
@@ -427,7 +428,7 @@ xfs_rtfind_forw(
427428
* No match, return that we scanned the whole area.
428429
*/
429430
xfs_trans_brelse(tp, bp);
430-
*rtblock = start + i - 1;
431+
*rtx = start + i - 1;
431432
return 0;
432433
}
433434

@@ -445,15 +446,15 @@ xfs_rtmodify_summary_int(
445446
xfs_mount_t *mp, /* file system mount structure */
446447
xfs_trans_t *tp, /* transaction pointer */
447448
int log, /* log2 of extent size */
448-
xfs_rtblock_t bbno, /* bitmap block number */
449+
xfs_fileoff_t bbno, /* bitmap block number */
449450
int delta, /* change to make to summary info */
450451
struct xfs_buf **rbpp, /* in/out: summary block buffer */
451-
xfs_fsblock_t *rsb, /* in/out: summary block number */
452+
xfs_fileoff_t *rsb, /* in/out: summary block number */
452453
xfs_suminfo_t *sum) /* out: summary info for this block */
453454
{
454455
struct xfs_buf *bp; /* buffer for the summary block */
455456
int error; /* error value */
456-
xfs_fsblock_t sb; /* summary fsblock */
457+
xfs_fileoff_t sb; /* summary fsblock */
457458
int so; /* index into the summary file */
458459
xfs_suminfo_t *sp; /* pointer to returned data */
459460

@@ -515,10 +516,10 @@ xfs_rtmodify_summary(
515516
xfs_mount_t *mp, /* file system mount structure */
516517
xfs_trans_t *tp, /* transaction pointer */
517518
int log, /* log2 of extent size */
518-
xfs_rtblock_t bbno, /* bitmap block number */
519+
xfs_fileoff_t bbno, /* bitmap block number */
519520
int delta, /* change to make to summary info */
520521
struct xfs_buf **rbpp, /* in/out: summary block buffer */
521-
xfs_fsblock_t *rsb) /* in/out: summary block number */
522+
xfs_fileoff_t *rsb) /* in/out: summary block number */
522523
{
523524
return xfs_rtmodify_summary_int(mp, tp, log, bbno,
524525
delta, rbpp, rsb, NULL);
@@ -532,13 +533,13 @@ int
532533
xfs_rtmodify_range(
533534
xfs_mount_t *mp, /* file system mount point */
534535
xfs_trans_t *tp, /* transaction pointer */
535-
xfs_rtblock_t start, /* starting block to modify */
536-
xfs_extlen_t len, /* length of extent to modify */
536+
xfs_rtxnum_t start, /* starting rtext to modify */
537+
xfs_rtxlen_t len, /* length of extent to modify */
537538
int val) /* 1 for free, 0 for allocated */
538539
{
539540
xfs_rtword_t *b; /* current word in buffer */
540541
int bit; /* bit number in the word */
541-
xfs_rtblock_t block; /* bitmap block number */
542+
xfs_fileoff_t block; /* bitmap block number */
542543
struct xfs_buf *bp; /* buf for the block */
543544
xfs_rtword_t *bufp; /* starting word in buffer */
544545
int error; /* error value */
@@ -688,15 +689,15 @@ int
688689
xfs_rtfree_range(
689690
xfs_mount_t *mp, /* file system mount point */
690691
xfs_trans_t *tp, /* transaction pointer */
691-
xfs_rtblock_t start, /* starting block to free */
692-
xfs_extlen_t len, /* length to free */
692+
xfs_rtxnum_t start, /* starting rtext to free */
693+
xfs_rtxlen_t len, /* length to free */
693694
struct xfs_buf **rbpp, /* in/out: summary block buffer */
694-
xfs_fsblock_t *rsb) /* in/out: summary block number */
695+
xfs_fileoff_t *rsb) /* in/out: summary block number */
695696
{
696-
xfs_rtblock_t end; /* end of the freed extent */
697+
xfs_rtxnum_t end; /* end of the freed extent */
697698
int error; /* error value */
698-
xfs_rtblock_t postblock; /* first block freed > end */
699-
xfs_rtblock_t preblock; /* first block freed < start */
699+
xfs_rtxnum_t postblock; /* first rtext freed > end */
700+
xfs_rtxnum_t preblock; /* first rtext freed < start */
700701

701702
end = start + len - 1;
702703
/*
@@ -764,20 +765,20 @@ int
764765
xfs_rtcheck_range(
765766
xfs_mount_t *mp, /* file system mount point */
766767
xfs_trans_t *tp, /* transaction pointer */
767-
xfs_rtblock_t start, /* starting block number of extent */
768-
xfs_extlen_t len, /* length of extent */
768+
xfs_rtxnum_t start, /* starting rtext number of extent */
769+
xfs_rtxlen_t len, /* length of extent */
769770
int val, /* 1 for free, 0 for allocated */
770-
xfs_rtblock_t *new, /* out: first block not matching */
771+
xfs_rtxnum_t *new, /* out: first rtext not matching */
771772
int *stat) /* out: 1 for matches, 0 for not */
772773
{
773774
xfs_rtword_t *b; /* current word in buffer */
774775
int bit; /* bit number in the word */
775-
xfs_rtblock_t block; /* bitmap block number */
776+
xfs_fileoff_t block; /* bitmap block number */
776777
struct xfs_buf *bp; /* buf for the block */
777778
xfs_rtword_t *bufp; /* starting word in buffer */
778779
int error; /* error value */
779-
xfs_rtblock_t i; /* current bit number rel. to start */
780-
xfs_rtblock_t lastbit; /* last useful bit in word */
780+
xfs_rtxnum_t i; /* current bit number rel. to start */
781+
xfs_rtxnum_t lastbit; /* last useful bit in word */
781782
xfs_rtword_t mask; /* mask of relevant bits for value */
782783
xfs_rtword_t wdiff; /* difference from wanted value */
783784
int word; /* word number in the buffer */
@@ -940,14 +941,14 @@ STATIC int /* error */
940941
xfs_rtcheck_alloc_range(
941942
xfs_mount_t *mp, /* file system mount point */
942943
xfs_trans_t *tp, /* transaction pointer */
943-
xfs_rtblock_t bno, /* starting block number of extent */
944-
xfs_extlen_t len) /* length of extent */
944+
xfs_rtxnum_t start, /* starting rtext number of extent */
945+
xfs_rtxlen_t len) /* length of extent */
945946
{
946-
xfs_rtblock_t new; /* dummy for xfs_rtcheck_range */
947+
xfs_rtxnum_t new; /* dummy for xfs_rtcheck_range */
947948
int stat;
948949
int error;
949950

950-
error = xfs_rtcheck_range(mp, tp, bno, len, 0, &new, &stat);
951+
error = xfs_rtcheck_range(mp, tp, start, len, 0, &new, &stat);
951952
if (error)
952953
return error;
953954
ASSERT(stat);
@@ -963,8 +964,8 @@ xfs_rtcheck_alloc_range(
963964
int /* error */
964965
xfs_rtfree_extent(
965966
xfs_trans_t *tp, /* transaction pointer */
966-
xfs_rtblock_t bno, /* starting block number to free */
967-
xfs_extlen_t len) /* length of extent freed */
967+
xfs_rtxnum_t start, /* starting rtext number to free */
968+
xfs_rtxlen_t len) /* length of extent freed */
968969
{
969970
int error; /* error value */
970971
xfs_mount_t *mp; /* file system mount structure */
@@ -976,14 +977,14 @@ xfs_rtfree_extent(
976977
ASSERT(mp->m_rbmip->i_itemp != NULL);
977978
ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL));
978979

979-
error = xfs_rtcheck_alloc_range(mp, tp, bno, len);
980+
error = xfs_rtcheck_alloc_range(mp, tp, start, len);
980981
if (error)
981982
return error;
982983

983984
/*
984985
* Free the range of realtime blocks.
985986
*/
986-
error = xfs_rtfree_range(mp, tp, bno, len, &sumbp, &sb);
987+
error = xfs_rtfree_range(mp, tp, start, len, &sumbp, &sb);
987988
if (error) {
988989
return error;
989990
}
@@ -1017,7 +1018,7 @@ xfs_rtfree_blocks(
10171018
xfs_filblks_t rtlen)
10181019
{
10191020
struct xfs_mount *mp = tp->t_mountp;
1020-
xfs_rtblock_t bno;
1021+
xfs_rtxnum_t start;
10211022
xfs_filblks_t len;
10221023
xfs_extlen_t mod;
10231024

@@ -1029,13 +1030,13 @@ xfs_rtfree_blocks(
10291030
return -EIO;
10301031
}
10311032

1032-
bno = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
1033+
start = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
10331034
if (mod) {
10341035
ASSERT(mod == 0);
10351036
return -EIO;
10361037
}
10371038

1038-
return xfs_rtfree_extent(tp, bno, len);
1039+
return xfs_rtfree_extent(tp, start, len);
10391040
}
10401041

10411042
/* Find all the free records within a given range. */
@@ -1049,9 +1050,9 @@ xfs_rtalloc_query_range(
10491050
void *priv)
10501051
{
10511052
struct xfs_rtalloc_rec rec;
1052-
xfs_rtblock_t rtstart;
1053-
xfs_rtblock_t rtend;
1054-
xfs_rtblock_t high_key;
1053+
xfs_rtxnum_t rtstart;
1054+
xfs_rtxnum_t rtend;
1055+
xfs_rtxnum_t high_key;
10551056
int is_free;
10561057
int error = 0;
10571058

@@ -1114,11 +1115,11 @@ int
11141115
xfs_rtalloc_extent_is_free(
11151116
struct xfs_mount *mp,
11161117
struct xfs_trans *tp,
1117-
xfs_rtblock_t start,
1118-
xfs_extlen_t len,
1118+
xfs_rtxnum_t start,
1119+
xfs_rtxlen_t len,
11191120
bool *is_free)
11201121
{
1121-
xfs_rtblock_t end;
1122+
xfs_rtxnum_t end;
11221123
int matches;
11231124
int error;
11241125

0 commit comments

Comments
 (0)