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.
5455xfs_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{
9495xfs_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
269270xfs_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
532533xfs_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
688689xfs_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
764765xfs_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 */
940941xfs_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(
963964int /* error */
964965xfs_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
11141115xfs_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