File tree Expand file tree Collapse file tree 3 files changed +37
-6
lines changed Expand file tree Collapse file tree 3 files changed +37
-6
lines changed Original file line number Diff line number Diff line change @@ -5276,7 +5276,6 @@ __xfs_bunmapi(
5276
5276
int tmp_logflags ; /* partial logging flags */
5277
5277
int wasdel ; /* was a delayed alloc extent */
5278
5278
int whichfork ; /* data or attribute fork */
5279
- xfs_fsblock_t sum ;
5280
5279
xfs_filblks_t len = * rlen ; /* length to unmap in file */
5281
5280
xfs_fileoff_t end ;
5282
5281
struct xfs_iext_cursor icur ;
@@ -5371,8 +5370,8 @@ __xfs_bunmapi(
5371
5370
if (!isrt )
5372
5371
goto delete ;
5373
5372
5374
- sum = del . br_startblock + del . br_blockcount ;
5375
- div_u64_rem ( sum , mp -> m_sb . sb_rextsize , & mod );
5373
+ mod = xfs_rtb_to_rtxoff ( mp ,
5374
+ del . br_startblock + del . br_blockcount );
5376
5375
if (mod ) {
5377
5376
/*
5378
5377
* Realtime extent not lined up at the end.
@@ -5419,7 +5418,8 @@ __xfs_bunmapi(
5419
5418
goto error0 ;
5420
5419
goto nodelete ;
5421
5420
}
5422
- div_u64_rem (del .br_startblock , mp -> m_sb .sb_rextsize , & mod );
5421
+
5422
+ mod = xfs_rtb_to_rtxoff (mp , del .br_startblock );
5423
5423
if (mod ) {
5424
5424
xfs_extlen_t off = mp -> m_sb .sb_rextsize - mod ;
5425
5425
Original file line number Diff line number Diff line change @@ -1024,13 +1024,13 @@ xfs_rtfree_blocks(
1024
1024
1025
1025
ASSERT (rtlen <= XFS_MAX_BMBT_EXTLEN );
1026
1026
1027
- len = div_u64_rem ( rtlen , mp -> m_sb . sb_rextsize , & mod );
1027
+ len = xfs_rtb_to_rtxrem ( mp , rtlen , & mod );
1028
1028
if (mod ) {
1029
1029
ASSERT (mod == 0 );
1030
1030
return - EIO ;
1031
1031
}
1032
1032
1033
- start = div_u64_rem ( rtbno , mp -> m_sb . sb_rextsize , & mod );
1033
+ start = xfs_rtb_to_rtxrem ( mp , rtbno , & mod );
1034
1034
if (mod ) {
1035
1035
ASSERT (mod == 0 );
1036
1036
return - EIO ;
Original file line number Diff line number Diff line change @@ -39,6 +39,37 @@ xfs_extlen_to_rtxlen(
39
39
return len / mp -> m_sb .sb_rextsize ;
40
40
}
41
41
42
+ /* Convert an rt block number into an rt extent number. */
43
+ static inline xfs_rtxnum_t
44
+ xfs_rtb_to_rtx (
45
+ struct xfs_mount * mp ,
46
+ xfs_rtblock_t rtbno )
47
+ {
48
+ return div_u64 (rtbno , mp -> m_sb .sb_rextsize );
49
+ }
50
+
51
+ /* Return the offset of an rt block number within an rt extent. */
52
+ static inline xfs_extlen_t
53
+ xfs_rtb_to_rtxoff (
54
+ struct xfs_mount * mp ,
55
+ xfs_rtblock_t rtbno )
56
+ {
57
+ return do_div (rtbno , mp -> m_sb .sb_rextsize );
58
+ }
59
+
60
+ /*
61
+ * Crack an rt block number into an rt extent number and an offset within that
62
+ * rt extent. Returns the rt extent number directly and the offset in @off.
63
+ */
64
+ static inline xfs_rtxnum_t
65
+ xfs_rtb_to_rtxrem (
66
+ struct xfs_mount * mp ,
67
+ xfs_rtblock_t rtbno ,
68
+ xfs_extlen_t * off )
69
+ {
70
+ return div_u64_rem (rtbno , mp -> m_sb .sb_rextsize , off );
71
+ }
72
+
42
73
/*
43
74
* Functions for walking free space rtextents in the realtime bitmap.
44
75
*/
You can’t perform that action at this time.
0 commit comments