16
16
#include "xfs_trans.h"
17
17
#include "xfs_rtalloc.h"
18
18
#include "xfs_error.h"
19
+ #include "xfs_rtbitmap.h"
19
20
20
21
/*
21
22
* Realtime allocator bitmap functions shared with userspace.
54
55
xfs_rtbuf_get (
55
56
xfs_mount_t * mp , /* file system mount structure */
56
57
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 */
58
59
int issum , /* is summary not bitmap */
59
60
struct xfs_buf * * bpp ) /* output: buffer for the block */
60
61
{
94
95
xfs_rtfind_back (
95
96
xfs_mount_t * mp , /* file system mount point */
96
97
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 */
100
101
{
101
102
xfs_rtword_t * b ; /* current word in buffer */
102
103
int bit ; /* bit number in the word */
103
- xfs_rtblock_t block ; /* bitmap block number */
104
+ xfs_fileoff_t block ; /* bitmap block number */
104
105
struct xfs_buf * bp ; /* buf for the block */
105
106
xfs_rtword_t * bufp ; /* starting word in buffer */
106
107
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 */
110
111
xfs_rtword_t mask ; /* mask of relevant bits for value */
111
112
xfs_rtword_t want ; /* mask for "good" values */
112
113
xfs_rtword_t wdiff ; /* difference from wanted value */
@@ -155,7 +156,7 @@ xfs_rtfind_back(
155
156
*/
156
157
xfs_trans_brelse (tp , bp );
157
158
i = bit - XFS_RTHIBIT (wdiff );
158
- * rtblock = start - i + 1 ;
159
+ * rtx = start - i + 1 ;
159
160
return 0 ;
160
161
}
161
162
i = bit - firstbit + 1 ;
@@ -201,7 +202,7 @@ xfs_rtfind_back(
201
202
*/
202
203
xfs_trans_brelse (tp , bp );
203
204
i += XFS_NBWORD - 1 - XFS_RTHIBIT (wdiff );
204
- * rtblock = start - i + 1 ;
205
+ * rtx = start - i + 1 ;
205
206
return 0 ;
206
207
}
207
208
i += XFS_NBWORD ;
@@ -248,7 +249,7 @@ xfs_rtfind_back(
248
249
*/
249
250
xfs_trans_brelse (tp , bp );
250
251
i += XFS_NBWORD - 1 - XFS_RTHIBIT (wdiff );
251
- * rtblock = start - i + 1 ;
252
+ * rtx = start - i + 1 ;
252
253
return 0 ;
253
254
} else
254
255
i = len ;
@@ -257,7 +258,7 @@ xfs_rtfind_back(
257
258
* No match, return that we scanned the whole area.
258
259
*/
259
260
xfs_trans_brelse (tp , bp );
260
- * rtblock = start - i + 1 ;
261
+ * rtx = start - i + 1 ;
261
262
return 0 ;
262
263
}
263
264
@@ -269,19 +270,19 @@ int
269
270
xfs_rtfind_forw (
270
271
xfs_mount_t * mp , /* file system mount point */
271
272
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 */
275
276
{
276
277
xfs_rtword_t * b ; /* current word in buffer */
277
278
int bit ; /* bit number in the word */
278
- xfs_rtblock_t block ; /* bitmap block number */
279
+ xfs_fileoff_t block ; /* bitmap block number */
279
280
struct xfs_buf * bp ; /* buf for the block */
280
281
xfs_rtword_t * bufp ; /* starting word in buffer */
281
282
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 */
285
286
xfs_rtword_t mask ; /* mask of relevant bits for value */
286
287
xfs_rtword_t want ; /* mask for "good" values */
287
288
xfs_rtword_t wdiff ; /* difference from wanted value */
@@ -329,7 +330,7 @@ xfs_rtfind_forw(
329
330
*/
330
331
xfs_trans_brelse (tp , bp );
331
332
i = XFS_RTLOBIT (wdiff ) - bit ;
332
- * rtblock = start + i - 1 ;
333
+ * rtx = start + i - 1 ;
333
334
return 0 ;
334
335
}
335
336
i = lastbit - bit ;
@@ -374,7 +375,7 @@ xfs_rtfind_forw(
374
375
*/
375
376
xfs_trans_brelse (tp , bp );
376
377
i += XFS_RTLOBIT (wdiff );
377
- * rtblock = start + i - 1 ;
378
+ * rtx = start + i - 1 ;
378
379
return 0 ;
379
380
}
380
381
i += XFS_NBWORD ;
@@ -418,7 +419,7 @@ xfs_rtfind_forw(
418
419
*/
419
420
xfs_trans_brelse (tp , bp );
420
421
i += XFS_RTLOBIT (wdiff );
421
- * rtblock = start + i - 1 ;
422
+ * rtx = start + i - 1 ;
422
423
return 0 ;
423
424
} else
424
425
i = len ;
@@ -427,7 +428,7 @@ xfs_rtfind_forw(
427
428
* No match, return that we scanned the whole area.
428
429
*/
429
430
xfs_trans_brelse (tp , bp );
430
- * rtblock = start + i - 1 ;
431
+ * rtx = start + i - 1 ;
431
432
return 0 ;
432
433
}
433
434
@@ -445,15 +446,15 @@ xfs_rtmodify_summary_int(
445
446
xfs_mount_t * mp , /* file system mount structure */
446
447
xfs_trans_t * tp , /* transaction pointer */
447
448
int log , /* log2 of extent size */
448
- xfs_rtblock_t bbno , /* bitmap block number */
449
+ xfs_fileoff_t bbno , /* bitmap block number */
449
450
int delta , /* change to make to summary info */
450
451
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 */
452
453
xfs_suminfo_t * sum ) /* out: summary info for this block */
453
454
{
454
455
struct xfs_buf * bp ; /* buffer for the summary block */
455
456
int error ; /* error value */
456
- xfs_fsblock_t sb ; /* summary fsblock */
457
+ xfs_fileoff_t sb ; /* summary fsblock */
457
458
int so ; /* index into the summary file */
458
459
xfs_suminfo_t * sp ; /* pointer to returned data */
459
460
@@ -515,10 +516,10 @@ xfs_rtmodify_summary(
515
516
xfs_mount_t * mp , /* file system mount structure */
516
517
xfs_trans_t * tp , /* transaction pointer */
517
518
int log , /* log2 of extent size */
518
- xfs_rtblock_t bbno , /* bitmap block number */
519
+ xfs_fileoff_t bbno , /* bitmap block number */
519
520
int delta , /* change to make to summary info */
520
521
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 */
522
523
{
523
524
return xfs_rtmodify_summary_int (mp , tp , log , bbno ,
524
525
delta , rbpp , rsb , NULL );
@@ -532,13 +533,13 @@ int
532
533
xfs_rtmodify_range (
533
534
xfs_mount_t * mp , /* file system mount point */
534
535
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 */
537
538
int val ) /* 1 for free, 0 for allocated */
538
539
{
539
540
xfs_rtword_t * b ; /* current word in buffer */
540
541
int bit ; /* bit number in the word */
541
- xfs_rtblock_t block ; /* bitmap block number */
542
+ xfs_fileoff_t block ; /* bitmap block number */
542
543
struct xfs_buf * bp ; /* buf for the block */
543
544
xfs_rtword_t * bufp ; /* starting word in buffer */
544
545
int error ; /* error value */
@@ -688,15 +689,15 @@ int
688
689
xfs_rtfree_range (
689
690
xfs_mount_t * mp , /* file system mount point */
690
691
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 */
693
694
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 */
695
696
{
696
- xfs_rtblock_t end ; /* end of the freed extent */
697
+ xfs_rtxnum_t end ; /* end of the freed extent */
697
698
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 */
700
701
701
702
end = start + len - 1 ;
702
703
/*
@@ -764,20 +765,20 @@ int
764
765
xfs_rtcheck_range (
765
766
xfs_mount_t * mp , /* file system mount point */
766
767
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 */
769
770
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 */
771
772
int * stat ) /* out: 1 for matches, 0 for not */
772
773
{
773
774
xfs_rtword_t * b ; /* current word in buffer */
774
775
int bit ; /* bit number in the word */
775
- xfs_rtblock_t block ; /* bitmap block number */
776
+ xfs_fileoff_t block ; /* bitmap block number */
776
777
struct xfs_buf * bp ; /* buf for the block */
777
778
xfs_rtword_t * bufp ; /* starting word in buffer */
778
779
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 */
781
782
xfs_rtword_t mask ; /* mask of relevant bits for value */
782
783
xfs_rtword_t wdiff ; /* difference from wanted value */
783
784
int word ; /* word number in the buffer */
@@ -940,14 +941,14 @@ STATIC int /* error */
940
941
xfs_rtcheck_alloc_range (
941
942
xfs_mount_t * mp , /* file system mount point */
942
943
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 */
945
946
{
946
- xfs_rtblock_t new ; /* dummy for xfs_rtcheck_range */
947
+ xfs_rtxnum_t new ; /* dummy for xfs_rtcheck_range */
947
948
int stat ;
948
949
int error ;
949
950
950
- error = xfs_rtcheck_range (mp , tp , bno , len , 0 , & new , & stat );
951
+ error = xfs_rtcheck_range (mp , tp , start , len , 0 , & new , & stat );
951
952
if (error )
952
953
return error ;
953
954
ASSERT (stat );
@@ -963,8 +964,8 @@ xfs_rtcheck_alloc_range(
963
964
int /* error */
964
965
xfs_rtfree_extent (
965
966
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 */
968
969
{
969
970
int error ; /* error value */
970
971
xfs_mount_t * mp ; /* file system mount structure */
@@ -976,14 +977,14 @@ xfs_rtfree_extent(
976
977
ASSERT (mp -> m_rbmip -> i_itemp != NULL );
977
978
ASSERT (xfs_isilocked (mp -> m_rbmip , XFS_ILOCK_EXCL ));
978
979
979
- error = xfs_rtcheck_alloc_range (mp , tp , bno , len );
980
+ error = xfs_rtcheck_alloc_range (mp , tp , start , len );
980
981
if (error )
981
982
return error ;
982
983
983
984
/*
984
985
* Free the range of realtime blocks.
985
986
*/
986
- error = xfs_rtfree_range (mp , tp , bno , len , & sumbp , & sb );
987
+ error = xfs_rtfree_range (mp , tp , start , len , & sumbp , & sb );
987
988
if (error ) {
988
989
return error ;
989
990
}
@@ -1017,7 +1018,7 @@ xfs_rtfree_blocks(
1017
1018
xfs_filblks_t rtlen )
1018
1019
{
1019
1020
struct xfs_mount * mp = tp -> t_mountp ;
1020
- xfs_rtblock_t bno ;
1021
+ xfs_rtxnum_t start ;
1021
1022
xfs_filblks_t len ;
1022
1023
xfs_extlen_t mod ;
1023
1024
@@ -1029,13 +1030,13 @@ xfs_rtfree_blocks(
1029
1030
return - EIO ;
1030
1031
}
1031
1032
1032
- bno = div_u64_rem (rtbno , mp -> m_sb .sb_rextsize , & mod );
1033
+ start = div_u64_rem (rtbno , mp -> m_sb .sb_rextsize , & mod );
1033
1034
if (mod ) {
1034
1035
ASSERT (mod == 0 );
1035
1036
return - EIO ;
1036
1037
}
1037
1038
1038
- return xfs_rtfree_extent (tp , bno , len );
1039
+ return xfs_rtfree_extent (tp , start , len );
1039
1040
}
1040
1041
1041
1042
/* Find all the free records within a given range. */
@@ -1049,9 +1050,9 @@ xfs_rtalloc_query_range(
1049
1050
void * priv )
1050
1051
{
1051
1052
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 ;
1055
1056
int is_free ;
1056
1057
int error = 0 ;
1057
1058
@@ -1114,11 +1115,11 @@ int
1114
1115
xfs_rtalloc_extent_is_free (
1115
1116
struct xfs_mount * mp ,
1116
1117
struct xfs_trans * tp ,
1117
- xfs_rtblock_t start ,
1118
- xfs_extlen_t len ,
1118
+ xfs_rtxnum_t start ,
1119
+ xfs_rtxlen_t len ,
1119
1120
bool * is_free )
1120
1121
{
1121
- xfs_rtblock_t end ;
1122
+ xfs_rtxnum_t end ;
1122
1123
int matches ;
1123
1124
int error ;
1124
1125
0 commit comments