Skip to content

Commit 2d5f216

Browse files
author
Darrick J. Wong
committed
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>
1 parent 3d2b6d0 commit 2d5f216

File tree

8 files changed

+137
-139
lines changed

8 files changed

+137
-139
lines changed

fs/xfs/libxfs/xfs_rtbitmap.c

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -95,19 +95,19 @@ int
9595
xfs_rtfind_back(
9696
xfs_mount_t *mp, /* file system mount point */
9797
xfs_trans_t *tp, /* transaction pointer */
98-
xfs_rtblock_t start, /* starting block to look at */
99-
xfs_rtblock_t limit, /* last block to look at */
100-
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 */
101101
{
102102
xfs_rtword_t *b; /* current word in buffer */
103103
int bit; /* bit number in the word */
104104
xfs_fileoff_t block; /* bitmap block number */
105105
struct xfs_buf *bp; /* buf for the block */
106106
xfs_rtword_t *bufp; /* starting word in buffer */
107107
int error; /* error value */
108-
xfs_rtblock_t firstbit; /* first useful bit in the word */
109-
xfs_rtblock_t i; /* current bit number rel. to start */
110-
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 */
111111
xfs_rtword_t mask; /* mask of relevant bits for value */
112112
xfs_rtword_t want; /* mask for "good" values */
113113
xfs_rtword_t wdiff; /* difference from wanted value */
@@ -156,7 +156,7 @@ xfs_rtfind_back(
156156
*/
157157
xfs_trans_brelse(tp, bp);
158158
i = bit - XFS_RTHIBIT(wdiff);
159-
*rtblock = start - i + 1;
159+
*rtx = start - i + 1;
160160
return 0;
161161
}
162162
i = bit - firstbit + 1;
@@ -202,7 +202,7 @@ xfs_rtfind_back(
202202
*/
203203
xfs_trans_brelse(tp, bp);
204204
i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
205-
*rtblock = start - i + 1;
205+
*rtx = start - i + 1;
206206
return 0;
207207
}
208208
i += XFS_NBWORD;
@@ -249,7 +249,7 @@ xfs_rtfind_back(
249249
*/
250250
xfs_trans_brelse(tp, bp);
251251
i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
252-
*rtblock = start - i + 1;
252+
*rtx = start - i + 1;
253253
return 0;
254254
} else
255255
i = len;
@@ -258,7 +258,7 @@ xfs_rtfind_back(
258258
* No match, return that we scanned the whole area.
259259
*/
260260
xfs_trans_brelse(tp, bp);
261-
*rtblock = start - i + 1;
261+
*rtx = start - i + 1;
262262
return 0;
263263
}
264264

@@ -270,19 +270,19 @@ int
270270
xfs_rtfind_forw(
271271
xfs_mount_t *mp, /* file system mount point */
272272
xfs_trans_t *tp, /* transaction pointer */
273-
xfs_rtblock_t start, /* starting block to look at */
274-
xfs_rtblock_t limit, /* last block to look at */
275-
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 */
276276
{
277277
xfs_rtword_t *b; /* current word in buffer */
278278
int bit; /* bit number in the word */
279279
xfs_fileoff_t block; /* bitmap block number */
280280
struct xfs_buf *bp; /* buf for the block */
281281
xfs_rtword_t *bufp; /* starting word in buffer */
282282
int error; /* error value */
283-
xfs_rtblock_t i; /* current bit number rel. to start */
284-
xfs_rtblock_t lastbit; /* last useful bit in the word */
285-
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 */
286286
xfs_rtword_t mask; /* mask of relevant bits for value */
287287
xfs_rtword_t want; /* mask for "good" values */
288288
xfs_rtword_t wdiff; /* difference from wanted value */
@@ -330,7 +330,7 @@ xfs_rtfind_forw(
330330
*/
331331
xfs_trans_brelse(tp, bp);
332332
i = XFS_RTLOBIT(wdiff) - bit;
333-
*rtblock = start + i - 1;
333+
*rtx = start + i - 1;
334334
return 0;
335335
}
336336
i = lastbit - bit;
@@ -375,7 +375,7 @@ xfs_rtfind_forw(
375375
*/
376376
xfs_trans_brelse(tp, bp);
377377
i += XFS_RTLOBIT(wdiff);
378-
*rtblock = start + i - 1;
378+
*rtx = start + i - 1;
379379
return 0;
380380
}
381381
i += XFS_NBWORD;
@@ -419,7 +419,7 @@ xfs_rtfind_forw(
419419
*/
420420
xfs_trans_brelse(tp, bp);
421421
i += XFS_RTLOBIT(wdiff);
422-
*rtblock = start + i - 1;
422+
*rtx = start + i - 1;
423423
return 0;
424424
} else
425425
i = len;
@@ -428,7 +428,7 @@ xfs_rtfind_forw(
428428
* No match, return that we scanned the whole area.
429429
*/
430430
xfs_trans_brelse(tp, bp);
431-
*rtblock = start + i - 1;
431+
*rtx = start + i - 1;
432432
return 0;
433433
}
434434

@@ -533,7 +533,7 @@ int
533533
xfs_rtmodify_range(
534534
xfs_mount_t *mp, /* file system mount point */
535535
xfs_trans_t *tp, /* transaction pointer */
536-
xfs_rtblock_t start, /* starting block to modify */
536+
xfs_rtxnum_t start, /* starting rtext to modify */
537537
xfs_rtxlen_t len, /* length of extent to modify */
538538
int val) /* 1 for free, 0 for allocated */
539539
{
@@ -689,15 +689,15 @@ int
689689
xfs_rtfree_range(
690690
xfs_mount_t *mp, /* file system mount point */
691691
xfs_trans_t *tp, /* transaction pointer */
692-
xfs_rtblock_t start, /* starting block to free */
692+
xfs_rtxnum_t start, /* starting rtext to free */
693693
xfs_rtxlen_t len, /* length to free */
694694
struct xfs_buf **rbpp, /* in/out: summary block buffer */
695695
xfs_fileoff_t *rsb) /* in/out: summary block number */
696696
{
697-
xfs_rtblock_t end; /* end of the freed extent */
697+
xfs_rtxnum_t end; /* end of the freed extent */
698698
int error; /* error value */
699-
xfs_rtblock_t postblock; /* first block freed > end */
700-
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 */
701701

702702
end = start + len - 1;
703703
/*
@@ -765,10 +765,10 @@ int
765765
xfs_rtcheck_range(
766766
xfs_mount_t *mp, /* file system mount point */
767767
xfs_trans_t *tp, /* transaction pointer */
768-
xfs_rtblock_t start, /* starting block number of extent */
768+
xfs_rtxnum_t start, /* starting rtext number of extent */
769769
xfs_rtxlen_t len, /* length of extent */
770770
int val, /* 1 for free, 0 for allocated */
771-
xfs_rtblock_t *new, /* out: first block not matching */
771+
xfs_rtxnum_t *new, /* out: first rtext not matching */
772772
int *stat) /* out: 1 for matches, 0 for not */
773773
{
774774
xfs_rtword_t *b; /* current word in buffer */
@@ -777,8 +777,8 @@ xfs_rtcheck_range(
777777
struct xfs_buf *bp; /* buf for the block */
778778
xfs_rtword_t *bufp; /* starting word in buffer */
779779
int error; /* error value */
780-
xfs_rtblock_t i; /* current bit number rel. to start */
781-
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 */
782782
xfs_rtword_t mask; /* mask of relevant bits for value */
783783
xfs_rtword_t wdiff; /* difference from wanted value */
784784
int word; /* word number in the buffer */
@@ -941,14 +941,14 @@ STATIC int /* error */
941941
xfs_rtcheck_alloc_range(
942942
xfs_mount_t *mp, /* file system mount point */
943943
xfs_trans_t *tp, /* transaction pointer */
944-
xfs_rtblock_t bno, /* starting block number of extent */
944+
xfs_rtxnum_t start, /* starting rtext number of extent */
945945
xfs_rtxlen_t len) /* length of extent */
946946
{
947-
xfs_rtblock_t new; /* dummy for xfs_rtcheck_range */
947+
xfs_rtxnum_t new; /* dummy for xfs_rtcheck_range */
948948
int stat;
949949
int error;
950950

951-
error = xfs_rtcheck_range(mp, tp, bno, len, 0, &new, &stat);
951+
error = xfs_rtcheck_range(mp, tp, start, len, 0, &new, &stat);
952952
if (error)
953953
return error;
954954
ASSERT(stat);
@@ -964,7 +964,7 @@ xfs_rtcheck_alloc_range(
964964
int /* error */
965965
xfs_rtfree_extent(
966966
xfs_trans_t *tp, /* transaction pointer */
967-
xfs_rtblock_t bno, /* starting block number to free */
967+
xfs_rtxnum_t start, /* starting rtext number to free */
968968
xfs_rtxlen_t len) /* length of extent freed */
969969
{
970970
int error; /* error value */
@@ -977,14 +977,14 @@ xfs_rtfree_extent(
977977
ASSERT(mp->m_rbmip->i_itemp != NULL);
978978
ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL));
979979

980-
error = xfs_rtcheck_alloc_range(mp, tp, bno, len);
980+
error = xfs_rtcheck_alloc_range(mp, tp, start, len);
981981
if (error)
982982
return error;
983983

984984
/*
985985
* Free the range of realtime blocks.
986986
*/
987-
error = xfs_rtfree_range(mp, tp, bno, len, &sumbp, &sb);
987+
error = xfs_rtfree_range(mp, tp, start, len, &sumbp, &sb);
988988
if (error) {
989989
return error;
990990
}
@@ -1018,7 +1018,7 @@ xfs_rtfree_blocks(
10181018
xfs_filblks_t rtlen)
10191019
{
10201020
struct xfs_mount *mp = tp->t_mountp;
1021-
xfs_rtblock_t bno;
1021+
xfs_rtxnum_t start;
10221022
xfs_filblks_t len;
10231023
xfs_extlen_t mod;
10241024

@@ -1030,13 +1030,13 @@ xfs_rtfree_blocks(
10301030
return -EIO;
10311031
}
10321032

1033-
bno = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
1033+
start = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
10341034
if (mod) {
10351035
ASSERT(mod == 0);
10361036
return -EIO;
10371037
}
10381038

1039-
return xfs_rtfree_extent(tp, bno, len);
1039+
return xfs_rtfree_extent(tp, start, len);
10401040
}
10411041

10421042
/* Find all the free records within a given range. */
@@ -1050,9 +1050,9 @@ xfs_rtalloc_query_range(
10501050
void *priv)
10511051
{
10521052
struct xfs_rtalloc_rec rec;
1053-
xfs_rtblock_t rtstart;
1054-
xfs_rtblock_t rtend;
1055-
xfs_rtblock_t high_key;
1053+
xfs_rtxnum_t rtstart;
1054+
xfs_rtxnum_t rtend;
1055+
xfs_rtxnum_t high_key;
10561056
int is_free;
10571057
int error = 0;
10581058

@@ -1115,11 +1115,11 @@ int
11151115
xfs_rtalloc_extent_is_free(
11161116
struct xfs_mount *mp,
11171117
struct xfs_trans *tp,
1118-
xfs_rtblock_t start,
1118+
xfs_rtxnum_t start,
11191119
xfs_rtxlen_t len,
11201120
bool *is_free)
11211121
{
1122-
xfs_rtblock_t end;
1122+
xfs_rtxnum_t end;
11231123
int matches;
11241124
int error;
11251125

fs/xfs/libxfs/xfs_rtbitmap.h

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@
77
#define __XFS_RTBITMAP_H__
88

99
/*
10-
* XXX: Most of the realtime allocation functions deal in units of realtime
11-
* extents, not realtime blocks. This looks funny when paired with the type
12-
* name and screams for a larger cleanup.
10+
* Functions for walking free space rtextents in the realtime bitmap.
1311
*/
1412
struct xfs_rtalloc_rec {
15-
xfs_rtblock_t ar_startext;
13+
xfs_rtxnum_t ar_startext;
1614
xfs_rtbxlen_t ar_extcount;
1715
};
1816

@@ -26,16 +24,16 @@ typedef int (*xfs_rtalloc_query_range_fn)(
2624
int xfs_rtbuf_get(struct xfs_mount *mp, struct xfs_trans *tp,
2725
xfs_fileoff_t block, int issum, struct xfs_buf **bpp);
2826
int xfs_rtcheck_range(struct xfs_mount *mp, struct xfs_trans *tp,
29-
xfs_rtblock_t start, xfs_rtxlen_t len, int val,
30-
xfs_rtblock_t *new, int *stat);
27+
xfs_rtxnum_t start, xfs_rtxlen_t len, int val,
28+
xfs_rtxnum_t *new, int *stat);
3129
int xfs_rtfind_back(struct xfs_mount *mp, struct xfs_trans *tp,
32-
xfs_rtblock_t start, xfs_rtblock_t limit,
33-
xfs_rtblock_t *rtblock);
30+
xfs_rtxnum_t start, xfs_rtxnum_t limit,
31+
xfs_rtxnum_t *rtblock);
3432
int xfs_rtfind_forw(struct xfs_mount *mp, struct xfs_trans *tp,
35-
xfs_rtblock_t start, xfs_rtblock_t limit,
36-
xfs_rtblock_t *rtblock);
33+
xfs_rtxnum_t start, xfs_rtxnum_t limit,
34+
xfs_rtxnum_t *rtblock);
3735
int xfs_rtmodify_range(struct xfs_mount *mp, struct xfs_trans *tp,
38-
xfs_rtblock_t start, xfs_rtxlen_t len, int val);
36+
xfs_rtxnum_t start, xfs_rtxlen_t len, int val);
3937
int xfs_rtmodify_summary_int(struct xfs_mount *mp, struct xfs_trans *tp,
4038
int log, xfs_fileoff_t bbno, int delta,
4139
struct xfs_buf **rbpp, xfs_fileoff_t *rsb,
@@ -44,7 +42,7 @@ int xfs_rtmodify_summary(struct xfs_mount *mp, struct xfs_trans *tp, int log,
4442
xfs_fileoff_t bbno, int delta, struct xfs_buf **rbpp,
4543
xfs_fileoff_t *rsb);
4644
int xfs_rtfree_range(struct xfs_mount *mp, struct xfs_trans *tp,
47-
xfs_rtblock_t start, xfs_rtxlen_t len,
45+
xfs_rtxnum_t start, xfs_rtxlen_t len,
4846
struct xfs_buf **rbpp, xfs_fileoff_t *rsb);
4947
int xfs_rtalloc_query_range(struct xfs_mount *mp, struct xfs_trans *tp,
5048
const struct xfs_rtalloc_rec *low_rec,
@@ -54,7 +52,7 @@ int xfs_rtalloc_query_all(struct xfs_mount *mp, struct xfs_trans *tp,
5452
xfs_rtalloc_query_range_fn fn,
5553
void *priv);
5654
int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp,
57-
xfs_rtblock_t start, xfs_rtxlen_t len,
55+
xfs_rtxnum_t start, xfs_rtxlen_t len,
5856
bool *is_free);
5957
/*
6058
* Free an extent in the realtime subvolume. Length is expressed in
@@ -63,7 +61,7 @@ int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp,
6361
int /* error */
6462
xfs_rtfree_extent(
6563
struct xfs_trans *tp, /* transaction pointer */
66-
xfs_rtblock_t bno, /* starting block number to free */
64+
xfs_rtxnum_t start, /* starting rtext number to free */
6765
xfs_rtxlen_t len); /* length of extent freed */
6866

6967
/* Same as above, but in units of rt blocks. */

fs/xfs/libxfs/xfs_types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ typedef uint64_t xfs_rfsblock_t; /* blockno in filesystem (raw) */
3232
typedef uint64_t xfs_rtblock_t; /* extent (block) in realtime area */
3333
typedef uint64_t xfs_fileoff_t; /* block number in a file */
3434
typedef uint64_t xfs_filblks_t; /* number of blocks in a file */
35+
typedef uint64_t xfs_rtxnum_t; /* rtextent number */
3536
typedef uint64_t xfs_rtbxlen_t; /* rtbitmap extent length in rtextents */
3637

3738
typedef int64_t xfs_srtblock_t; /* signed version of xfs_rtblock_t */
@@ -49,6 +50,7 @@ typedef void * xfs_failaddr_t;
4950
#define NULLRFSBLOCK ((xfs_rfsblock_t)-1)
5051
#define NULLRTBLOCK ((xfs_rtblock_t)-1)
5152
#define NULLFILEOFF ((xfs_fileoff_t)-1)
53+
#define NULLRTEXTNO ((xfs_rtxnum_t)-1)
5254

5355
#define NULLAGBLOCK ((xfs_agblock_t)-1)
5456
#define NULLAGNUMBER ((xfs_agnumber_t)-1)

fs/xfs/scrub/rtbitmap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ xchk_xref_is_used_rt_space(
131131
xfs_rtblock_t fsbno,
132132
xfs_extlen_t len)
133133
{
134-
xfs_rtblock_t startext;
135-
xfs_rtblock_t endext;
134+
xfs_rtxnum_t startext;
135+
xfs_rtxnum_t endext;
136136
xfs_rtxlen_t extcount;
137137
bool is_free;
138138
int error;

fs/xfs/scrub/trace.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,14 +1036,14 @@ TRACE_EVENT(xfarray_sort_stats,
10361036

10371037
#ifdef CONFIG_XFS_RT
10381038
TRACE_EVENT(xchk_rtsum_record_free,
1039-
TP_PROTO(struct xfs_mount *mp, xfs_rtblock_t start,
1039+
TP_PROTO(struct xfs_mount *mp, xfs_rtxnum_t start,
10401040
xfs_rtbxlen_t len, unsigned int log, loff_t pos,
10411041
xfs_suminfo_t v),
10421042
TP_ARGS(mp, start, len, log, pos, v),
10431043
TP_STRUCT__entry(
10441044
__field(dev_t, dev)
10451045
__field(dev_t, rtdev)
1046-
__field(xfs_rtblock_t, start)
1046+
__field(xfs_rtxnum_t, start)
10471047
__field(unsigned long long, len)
10481048
__field(unsigned int, log)
10491049
__field(loff_t, pos)

0 commit comments

Comments
 (0)