Commit 2d5f216b authored by Darrick J. Wong's avatar Darrick J. Wong

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: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 3d2b6d03
...@@ -95,9 +95,9 @@ int ...@@ -95,9 +95,9 @@ int
xfs_rtfind_back( xfs_rtfind_back(
xfs_mount_t *mp, /* file system mount point */ xfs_mount_t *mp, /* file system mount point */
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t start, /* starting block to look at */ xfs_rtxnum_t start, /* starting rtext to look at */
xfs_rtblock_t limit, /* last block to look at */ xfs_rtxnum_t limit, /* last rtext to look at */
xfs_rtblock_t *rtblock) /* out: start block found */ xfs_rtxnum_t *rtx) /* out: start rtext found */
{ {
xfs_rtword_t *b; /* current word in buffer */ xfs_rtword_t *b; /* current word in buffer */
int bit; /* bit number in the word */ int bit; /* bit number in the word */
...@@ -105,9 +105,9 @@ xfs_rtfind_back( ...@@ -105,9 +105,9 @@ xfs_rtfind_back(
struct xfs_buf *bp; /* buf for the block */ struct xfs_buf *bp; /* buf for the block */
xfs_rtword_t *bufp; /* starting word in buffer */ xfs_rtword_t *bufp; /* starting word in buffer */
int error; /* error value */ int error; /* error value */
xfs_rtblock_t firstbit; /* first useful bit in the word */ xfs_rtxnum_t firstbit; /* first useful bit in the word */
xfs_rtblock_t i; /* current bit number rel. to start */ xfs_rtxnum_t i; /* current bit number rel. to start */
xfs_rtblock_t len; /* length of inspected area */ xfs_rtxnum_t len; /* length of inspected area */
xfs_rtword_t mask; /* mask of relevant bits for value */ xfs_rtword_t mask; /* mask of relevant bits for value */
xfs_rtword_t want; /* mask for "good" values */ xfs_rtword_t want; /* mask for "good" values */
xfs_rtword_t wdiff; /* difference from wanted value */ xfs_rtword_t wdiff; /* difference from wanted value */
...@@ -156,7 +156,7 @@ xfs_rtfind_back( ...@@ -156,7 +156,7 @@ xfs_rtfind_back(
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
i = bit - XFS_RTHIBIT(wdiff); i = bit - XFS_RTHIBIT(wdiff);
*rtblock = start - i + 1; *rtx = start - i + 1;
return 0; return 0;
} }
i = bit - firstbit + 1; i = bit - firstbit + 1;
...@@ -202,7 +202,7 @@ xfs_rtfind_back( ...@@ -202,7 +202,7 @@ xfs_rtfind_back(
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff); i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
*rtblock = start - i + 1; *rtx = start - i + 1;
return 0; return 0;
} }
i += XFS_NBWORD; i += XFS_NBWORD;
...@@ -249,7 +249,7 @@ xfs_rtfind_back( ...@@ -249,7 +249,7 @@ xfs_rtfind_back(
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff); i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
*rtblock = start - i + 1; *rtx = start - i + 1;
return 0; return 0;
} else } else
i = len; i = len;
...@@ -258,7 +258,7 @@ xfs_rtfind_back( ...@@ -258,7 +258,7 @@ xfs_rtfind_back(
* No match, return that we scanned the whole area. * No match, return that we scanned the whole area.
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
*rtblock = start - i + 1; *rtx = start - i + 1;
return 0; return 0;
} }
...@@ -270,9 +270,9 @@ int ...@@ -270,9 +270,9 @@ int
xfs_rtfind_forw( xfs_rtfind_forw(
xfs_mount_t *mp, /* file system mount point */ xfs_mount_t *mp, /* file system mount point */
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t start, /* starting block to look at */ xfs_rtxnum_t start, /* starting rtext to look at */
xfs_rtblock_t limit, /* last block to look at */ xfs_rtxnum_t limit, /* last rtext to look at */
xfs_rtblock_t *rtblock) /* out: start block found */ xfs_rtxnum_t *rtx) /* out: start rtext found */
{ {
xfs_rtword_t *b; /* current word in buffer */ xfs_rtword_t *b; /* current word in buffer */
int bit; /* bit number in the word */ int bit; /* bit number in the word */
...@@ -280,9 +280,9 @@ xfs_rtfind_forw( ...@@ -280,9 +280,9 @@ xfs_rtfind_forw(
struct xfs_buf *bp; /* buf for the block */ struct xfs_buf *bp; /* buf for the block */
xfs_rtword_t *bufp; /* starting word in buffer */ xfs_rtword_t *bufp; /* starting word in buffer */
int error; /* error value */ int error; /* error value */
xfs_rtblock_t i; /* current bit number rel. to start */ xfs_rtxnum_t i; /* current bit number rel. to start */
xfs_rtblock_t lastbit; /* last useful bit in the word */ xfs_rtxnum_t lastbit; /* last useful bit in the word */
xfs_rtblock_t len; /* length of inspected area */ xfs_rtxnum_t len; /* length of inspected area */
xfs_rtword_t mask; /* mask of relevant bits for value */ xfs_rtword_t mask; /* mask of relevant bits for value */
xfs_rtword_t want; /* mask for "good" values */ xfs_rtword_t want; /* mask for "good" values */
xfs_rtword_t wdiff; /* difference from wanted value */ xfs_rtword_t wdiff; /* difference from wanted value */
...@@ -330,7 +330,7 @@ xfs_rtfind_forw( ...@@ -330,7 +330,7 @@ xfs_rtfind_forw(
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
i = XFS_RTLOBIT(wdiff) - bit; i = XFS_RTLOBIT(wdiff) - bit;
*rtblock = start + i - 1; *rtx = start + i - 1;
return 0; return 0;
} }
i = lastbit - bit; i = lastbit - bit;
...@@ -375,7 +375,7 @@ xfs_rtfind_forw( ...@@ -375,7 +375,7 @@ xfs_rtfind_forw(
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
i += XFS_RTLOBIT(wdiff); i += XFS_RTLOBIT(wdiff);
*rtblock = start + i - 1; *rtx = start + i - 1;
return 0; return 0;
} }
i += XFS_NBWORD; i += XFS_NBWORD;
...@@ -419,7 +419,7 @@ xfs_rtfind_forw( ...@@ -419,7 +419,7 @@ xfs_rtfind_forw(
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
i += XFS_RTLOBIT(wdiff); i += XFS_RTLOBIT(wdiff);
*rtblock = start + i - 1; *rtx = start + i - 1;
return 0; return 0;
} else } else
i = len; i = len;
...@@ -428,7 +428,7 @@ xfs_rtfind_forw( ...@@ -428,7 +428,7 @@ xfs_rtfind_forw(
* No match, return that we scanned the whole area. * No match, return that we scanned the whole area.
*/ */
xfs_trans_brelse(tp, bp); xfs_trans_brelse(tp, bp);
*rtblock = start + i - 1; *rtx = start + i - 1;
return 0; return 0;
} }
...@@ -533,7 +533,7 @@ int ...@@ -533,7 +533,7 @@ int
xfs_rtmodify_range( xfs_rtmodify_range(
xfs_mount_t *mp, /* file system mount point */ xfs_mount_t *mp, /* file system mount point */
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t start, /* starting block to modify */ xfs_rtxnum_t start, /* starting rtext to modify */
xfs_rtxlen_t len, /* length of extent to modify */ xfs_rtxlen_t len, /* length of extent to modify */
int val) /* 1 for free, 0 for allocated */ int val) /* 1 for free, 0 for allocated */
{ {
...@@ -689,15 +689,15 @@ int ...@@ -689,15 +689,15 @@ int
xfs_rtfree_range( xfs_rtfree_range(
xfs_mount_t *mp, /* file system mount point */ xfs_mount_t *mp, /* file system mount point */
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t start, /* starting block to free */ xfs_rtxnum_t start, /* starting rtext to free */
xfs_rtxlen_t len, /* length to free */ xfs_rtxlen_t len, /* length to free */
struct xfs_buf **rbpp, /* in/out: summary block buffer */ struct xfs_buf **rbpp, /* in/out: summary block buffer */
xfs_fileoff_t *rsb) /* in/out: summary block number */ xfs_fileoff_t *rsb) /* in/out: summary block number */
{ {
xfs_rtblock_t end; /* end of the freed extent */ xfs_rtxnum_t end; /* end of the freed extent */
int error; /* error value */ int error; /* error value */
xfs_rtblock_t postblock; /* first block freed > end */ xfs_rtxnum_t postblock; /* first rtext freed > end */
xfs_rtblock_t preblock; /* first block freed < start */ xfs_rtxnum_t preblock; /* first rtext freed < start */
end = start + len - 1; end = start + len - 1;
/* /*
...@@ -765,10 +765,10 @@ int ...@@ -765,10 +765,10 @@ int
xfs_rtcheck_range( xfs_rtcheck_range(
xfs_mount_t *mp, /* file system mount point */ xfs_mount_t *mp, /* file system mount point */
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t start, /* starting block number of extent */ xfs_rtxnum_t start, /* starting rtext number of extent */
xfs_rtxlen_t len, /* length of extent */ xfs_rtxlen_t len, /* length of extent */
int val, /* 1 for free, 0 for allocated */ int val, /* 1 for free, 0 for allocated */
xfs_rtblock_t *new, /* out: first block not matching */ xfs_rtxnum_t *new, /* out: first rtext not matching */
int *stat) /* out: 1 for matches, 0 for not */ int *stat) /* out: 1 for matches, 0 for not */
{ {
xfs_rtword_t *b; /* current word in buffer */ xfs_rtword_t *b; /* current word in buffer */
...@@ -777,8 +777,8 @@ xfs_rtcheck_range( ...@@ -777,8 +777,8 @@ xfs_rtcheck_range(
struct xfs_buf *bp; /* buf for the block */ struct xfs_buf *bp; /* buf for the block */
xfs_rtword_t *bufp; /* starting word in buffer */ xfs_rtword_t *bufp; /* starting word in buffer */
int error; /* error value */ int error; /* error value */
xfs_rtblock_t i; /* current bit number rel. to start */ xfs_rtxnum_t i; /* current bit number rel. to start */
xfs_rtblock_t lastbit; /* last useful bit in word */ xfs_rtxnum_t lastbit; /* last useful bit in word */
xfs_rtword_t mask; /* mask of relevant bits for value */ xfs_rtword_t mask; /* mask of relevant bits for value */
xfs_rtword_t wdiff; /* difference from wanted value */ xfs_rtword_t wdiff; /* difference from wanted value */
int word; /* word number in the buffer */ int word; /* word number in the buffer */
...@@ -941,14 +941,14 @@ STATIC int /* error */ ...@@ -941,14 +941,14 @@ STATIC int /* error */
xfs_rtcheck_alloc_range( xfs_rtcheck_alloc_range(
xfs_mount_t *mp, /* file system mount point */ xfs_mount_t *mp, /* file system mount point */
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t bno, /* starting block number of extent */ xfs_rtxnum_t start, /* starting rtext number of extent */
xfs_rtxlen_t len) /* length of extent */ xfs_rtxlen_t len) /* length of extent */
{ {
xfs_rtblock_t new; /* dummy for xfs_rtcheck_range */ xfs_rtxnum_t new; /* dummy for xfs_rtcheck_range */
int stat; int stat;
int error; int error;
error = xfs_rtcheck_range(mp, tp, bno, len, 0, &new, &stat); error = xfs_rtcheck_range(mp, tp, start, len, 0, &new, &stat);
if (error) if (error)
return error; return error;
ASSERT(stat); ASSERT(stat);
...@@ -964,7 +964,7 @@ xfs_rtcheck_alloc_range( ...@@ -964,7 +964,7 @@ xfs_rtcheck_alloc_range(
int /* error */ int /* error */
xfs_rtfree_extent( xfs_rtfree_extent(
xfs_trans_t *tp, /* transaction pointer */ xfs_trans_t *tp, /* transaction pointer */
xfs_rtblock_t bno, /* starting block number to free */ xfs_rtxnum_t start, /* starting rtext number to free */
xfs_rtxlen_t len) /* length of extent freed */ xfs_rtxlen_t len) /* length of extent freed */
{ {
int error; /* error value */ int error; /* error value */
...@@ -977,14 +977,14 @@ xfs_rtfree_extent( ...@@ -977,14 +977,14 @@ xfs_rtfree_extent(
ASSERT(mp->m_rbmip->i_itemp != NULL); ASSERT(mp->m_rbmip->i_itemp != NULL);
ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL)); ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL));
error = xfs_rtcheck_alloc_range(mp, tp, bno, len); error = xfs_rtcheck_alloc_range(mp, tp, start, len);
if (error) if (error)
return error; return error;
/* /*
* Free the range of realtime blocks. * Free the range of realtime blocks.
*/ */
error = xfs_rtfree_range(mp, tp, bno, len, &sumbp, &sb); error = xfs_rtfree_range(mp, tp, start, len, &sumbp, &sb);
if (error) { if (error) {
return error; return error;
} }
...@@ -1018,7 +1018,7 @@ xfs_rtfree_blocks( ...@@ -1018,7 +1018,7 @@ xfs_rtfree_blocks(
xfs_filblks_t rtlen) xfs_filblks_t rtlen)
{ {
struct xfs_mount *mp = tp->t_mountp; struct xfs_mount *mp = tp->t_mountp;
xfs_rtblock_t bno; xfs_rtxnum_t start;
xfs_filblks_t len; xfs_filblks_t len;
xfs_extlen_t mod; xfs_extlen_t mod;
...@@ -1030,13 +1030,13 @@ xfs_rtfree_blocks( ...@@ -1030,13 +1030,13 @@ xfs_rtfree_blocks(
return -EIO; return -EIO;
} }
bno = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod); start = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
if (mod) { if (mod) {
ASSERT(mod == 0); ASSERT(mod == 0);
return -EIO; return -EIO;
} }
return xfs_rtfree_extent(tp, bno, len); return xfs_rtfree_extent(tp, start, len);
} }
/* Find all the free records within a given range. */ /* Find all the free records within a given range. */
...@@ -1050,9 +1050,9 @@ xfs_rtalloc_query_range( ...@@ -1050,9 +1050,9 @@ xfs_rtalloc_query_range(
void *priv) void *priv)
{ {
struct xfs_rtalloc_rec rec; struct xfs_rtalloc_rec rec;
xfs_rtblock_t rtstart; xfs_rtxnum_t rtstart;
xfs_rtblock_t rtend; xfs_rtxnum_t rtend;
xfs_rtblock_t high_key; xfs_rtxnum_t high_key;
int is_free; int is_free;
int error = 0; int error = 0;
...@@ -1115,11 +1115,11 @@ int ...@@ -1115,11 +1115,11 @@ int
xfs_rtalloc_extent_is_free( xfs_rtalloc_extent_is_free(
struct xfs_mount *mp, struct xfs_mount *mp,
struct xfs_trans *tp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtxnum_t start,
xfs_rtxlen_t len, xfs_rtxlen_t len,
bool *is_free) bool *is_free)
{ {
xfs_rtblock_t end; xfs_rtxnum_t end;
int matches; int matches;
int error; int error;
......
...@@ -7,12 +7,10 @@ ...@@ -7,12 +7,10 @@
#define __XFS_RTBITMAP_H__ #define __XFS_RTBITMAP_H__
/* /*
* XXX: Most of the realtime allocation functions deal in units of realtime * Functions for walking free space rtextents in the realtime bitmap.
* extents, not realtime blocks. This looks funny when paired with the type
* name and screams for a larger cleanup.
*/ */
struct xfs_rtalloc_rec { struct xfs_rtalloc_rec {
xfs_rtblock_t ar_startext; xfs_rtxnum_t ar_startext;
xfs_rtbxlen_t ar_extcount; xfs_rtbxlen_t ar_extcount;
}; };
...@@ -26,16 +24,16 @@ typedef int (*xfs_rtalloc_query_range_fn)( ...@@ -26,16 +24,16 @@ typedef int (*xfs_rtalloc_query_range_fn)(
int xfs_rtbuf_get(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtbuf_get(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_fileoff_t block, int issum, struct xfs_buf **bpp); xfs_fileoff_t block, int issum, struct xfs_buf **bpp);
int xfs_rtcheck_range(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtcheck_range(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtxlen_t len, int val, xfs_rtxnum_t start, xfs_rtxlen_t len, int val,
xfs_rtblock_t *new, int *stat); xfs_rtxnum_t *new, int *stat);
int xfs_rtfind_back(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtfind_back(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtblock_t limit, xfs_rtxnum_t start, xfs_rtxnum_t limit,
xfs_rtblock_t *rtblock); xfs_rtxnum_t *rtblock);
int xfs_rtfind_forw(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtfind_forw(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtblock_t limit, xfs_rtxnum_t start, xfs_rtxnum_t limit,
xfs_rtblock_t *rtblock); xfs_rtxnum_t *rtblock);
int xfs_rtmodify_range(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtmodify_range(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtxlen_t len, int val); xfs_rtxnum_t start, xfs_rtxlen_t len, int val);
int xfs_rtmodify_summary_int(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtmodify_summary_int(struct xfs_mount *mp, struct xfs_trans *tp,
int log, xfs_fileoff_t bbno, int delta, int log, xfs_fileoff_t bbno, int delta,
struct xfs_buf **rbpp, xfs_fileoff_t *rsb, 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, ...@@ -44,7 +42,7 @@ int xfs_rtmodify_summary(struct xfs_mount *mp, struct xfs_trans *tp, int log,
xfs_fileoff_t bbno, int delta, struct xfs_buf **rbpp, xfs_fileoff_t bbno, int delta, struct xfs_buf **rbpp,
xfs_fileoff_t *rsb); xfs_fileoff_t *rsb);
int xfs_rtfree_range(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtfree_range(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtxlen_t len, xfs_rtxnum_t start, xfs_rtxlen_t len,
struct xfs_buf **rbpp, xfs_fileoff_t *rsb); struct xfs_buf **rbpp, xfs_fileoff_t *rsb);
int xfs_rtalloc_query_range(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtalloc_query_range(struct xfs_mount *mp, struct xfs_trans *tp,
const struct xfs_rtalloc_rec *low_rec, const struct xfs_rtalloc_rec *low_rec,
...@@ -54,7 +52,7 @@ int xfs_rtalloc_query_all(struct xfs_mount *mp, struct xfs_trans *tp, ...@@ -54,7 +52,7 @@ int xfs_rtalloc_query_all(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtalloc_query_range_fn fn, xfs_rtalloc_query_range_fn fn,
void *priv); void *priv);
int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp,
xfs_rtblock_t start, xfs_rtxlen_t len, xfs_rtxnum_t start, xfs_rtxlen_t len,
bool *is_free); bool *is_free);
/* /*
* Free an extent in the realtime subvolume. Length is expressed in * 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, ...@@ -63,7 +61,7 @@ int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp,
int /* error */ int /* error */
xfs_rtfree_extent( xfs_rtfree_extent(
struct xfs_trans *tp, /* transaction pointer */ struct xfs_trans *tp, /* transaction pointer */
xfs_rtblock_t bno, /* starting block number to free */ xfs_rtxnum_t start, /* starting rtext number to free */
xfs_rtxlen_t len); /* length of extent freed */ xfs_rtxlen_t len); /* length of extent freed */
/* Same as above, but in units of rt blocks. */ /* Same as above, but in units of rt blocks. */
......
...@@ -32,6 +32,7 @@ typedef uint64_t xfs_rfsblock_t; /* blockno in filesystem (raw) */ ...@@ -32,6 +32,7 @@ typedef uint64_t xfs_rfsblock_t; /* blockno in filesystem (raw) */
typedef uint64_t xfs_rtblock_t; /* extent (block) in realtime area */ typedef uint64_t xfs_rtblock_t; /* extent (block) in realtime area */
typedef uint64_t xfs_fileoff_t; /* block number in a file */ typedef uint64_t xfs_fileoff_t; /* block number in a file */
typedef uint64_t xfs_filblks_t; /* number of blocks in a file */ typedef uint64_t xfs_filblks_t; /* number of blocks in a file */
typedef uint64_t xfs_rtxnum_t; /* rtextent number */
typedef uint64_t xfs_rtbxlen_t; /* rtbitmap extent length in rtextents */ typedef uint64_t xfs_rtbxlen_t; /* rtbitmap extent length in rtextents */
typedef int64_t xfs_srtblock_t; /* signed version of xfs_rtblock_t */ typedef int64_t xfs_srtblock_t; /* signed version of xfs_rtblock_t */
...@@ -49,6 +50,7 @@ typedef void * xfs_failaddr_t; ...@@ -49,6 +50,7 @@ typedef void * xfs_failaddr_t;
#define NULLRFSBLOCK ((xfs_rfsblock_t)-1) #define NULLRFSBLOCK ((xfs_rfsblock_t)-1)
#define NULLRTBLOCK ((xfs_rtblock_t)-1) #define NULLRTBLOCK ((xfs_rtblock_t)-1)
#define NULLFILEOFF ((xfs_fileoff_t)-1) #define NULLFILEOFF ((xfs_fileoff_t)-1)
#define NULLRTEXTNO ((xfs_rtxnum_t)-1)
#define NULLAGBLOCK ((xfs_agblock_t)-1) #define NULLAGBLOCK ((xfs_agblock_t)-1)
#define NULLAGNUMBER ((xfs_agnumber_t)-1) #define NULLAGNUMBER ((xfs_agnumber_t)-1)
......
...@@ -131,8 +131,8 @@ xchk_xref_is_used_rt_space( ...@@ -131,8 +131,8 @@ xchk_xref_is_used_rt_space(
xfs_rtblock_t fsbno, xfs_rtblock_t fsbno,
xfs_extlen_t len) xfs_extlen_t len)
{ {
xfs_rtblock_t startext; xfs_rtxnum_t startext;
xfs_rtblock_t endext; xfs_rtxnum_t endext;
xfs_rtxlen_t extcount; xfs_rtxlen_t extcount;
bool is_free; bool is_free;
int error; int error;
......
...@@ -1036,14 +1036,14 @@ TRACE_EVENT(xfarray_sort_stats, ...@@ -1036,14 +1036,14 @@ TRACE_EVENT(xfarray_sort_stats,
#ifdef CONFIG_XFS_RT #ifdef CONFIG_XFS_RT
TRACE_EVENT(xchk_rtsum_record_free, TRACE_EVENT(xchk_rtsum_record_free,
TP_PROTO(struct xfs_mount *mp, xfs_rtblock_t start, TP_PROTO(struct xfs_mount *mp, xfs_rtxnum_t start,
xfs_rtbxlen_t len, unsigned int log, loff_t pos, xfs_rtbxlen_t len, unsigned int log, loff_t pos,
xfs_suminfo_t v), xfs_suminfo_t v),
TP_ARGS(mp, start, len, log, pos, v), TP_ARGS(mp, start, len, log, pos, v),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(dev_t, rtdev) __field(dev_t, rtdev)
__field(xfs_rtblock_t, start) __field(xfs_rtxnum_t, start)
__field(unsigned long long, len) __field(unsigned long long, len)
__field(unsigned int, log) __field(unsigned int, log)
__field(loff_t, pos) __field(loff_t, pos)
......
...@@ -75,7 +75,7 @@ xfs_bmap_rtalloc( ...@@ -75,7 +75,7 @@ xfs_bmap_rtalloc(
{ {
struct xfs_mount *mp = ap->ip->i_mount; struct xfs_mount *mp = ap->ip->i_mount;
xfs_fileoff_t orig_offset = ap->offset; xfs_fileoff_t orig_offset = ap->offset;
xfs_rtblock_t rtb; xfs_rtxnum_t rtx;
xfs_rtxlen_t prod = 0; /* product factor for allocators */ xfs_rtxlen_t prod = 0; /* product factor for allocators */
xfs_extlen_t mod = 0; /* product factor for allocators */ xfs_extlen_t mod = 0; /* product factor for allocators */
xfs_rtxlen_t ralen = 0; /* realtime allocation length */ xfs_rtxlen_t ralen = 0; /* realtime allocation length */
...@@ -144,8 +144,6 @@ xfs_bmap_rtalloc( ...@@ -144,8 +144,6 @@ xfs_bmap_rtalloc(
* pick an extent that will space things out in the rt area. * pick an extent that will space things out in the rt area.
*/ */
if (ap->eof && ap->offset == 0) { if (ap->eof && ap->offset == 0) {
xfs_rtblock_t rtx; /* realtime extent no */
error = xfs_rtpick_extent(mp, ap->tp, ralen, &rtx); error = xfs_rtpick_extent(mp, ap->tp, ralen, &rtx);
if (error) if (error)
return error; return error;
...@@ -163,16 +161,16 @@ xfs_bmap_rtalloc( ...@@ -163,16 +161,16 @@ xfs_bmap_rtalloc(
ap->blkno = 0; ap->blkno = 0;
else else
do_div(ap->blkno, mp->m_sb.sb_rextsize); do_div(ap->blkno, mp->m_sb.sb_rextsize);
rtb = ap->blkno; rtx = ap->blkno;
ap->length = ralen; ap->length = ralen;
raminlen = max_t(xfs_extlen_t, 1, minlen / mp->m_sb.sb_rextsize); raminlen = max_t(xfs_extlen_t, 1, minlen / mp->m_sb.sb_rextsize);
error = xfs_rtallocate_extent(ap->tp, ap->blkno, raminlen, ap->length, error = xfs_rtallocate_extent(ap->tp, ap->blkno, raminlen, ap->length,
&ralen, ap->wasdel, prod, &rtb); &ralen, ap->wasdel, prod, &rtx);
if (error) if (error)
return error; return error;
if (rtb != NULLRTBLOCK) { if (rtx != NULLRTEXTNO) {
ap->blkno = rtb * mp->m_sb.sb_rextsize; ap->blkno = rtx * mp->m_sb.sb_rextsize;
ap->length = ralen * mp->m_sb.sb_rextsize; ap->length = ralen * mp->m_sb.sb_rextsize;
ap->ip->i_nblocks += ap->length; ap->ip->i_nblocks += ap->length;
xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE); xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE);
......
This diff is collapsed.
...@@ -24,13 +24,13 @@ struct xfs_trans; ...@@ -24,13 +24,13 @@ struct xfs_trans;
int /* error */ int /* error */
xfs_rtallocate_extent( xfs_rtallocate_extent(
struct xfs_trans *tp, /* transaction pointer */ struct xfs_trans *tp, /* transaction pointer */
xfs_rtblock_t bno, /* starting block number to allocate */ xfs_rtxnum_t start, /* starting rtext number to allocate */
xfs_rtxlen_t minlen, /* minimum length to allocate */ xfs_rtxlen_t minlen, /* minimum length to allocate */
xfs_rtxlen_t maxlen, /* maximum length to allocate */ xfs_rtxlen_t maxlen, /* maximum length to allocate */
xfs_rtxlen_t *len, /* out: actual length allocated */ xfs_rtxlen_t *len, /* out: actual length allocated */
int wasdel, /* was a delayed allocation extent */ int wasdel, /* was a delayed allocation extent */
xfs_rtxlen_t prod, /* extent product factor */ xfs_rtxlen_t prod, /* extent product factor */
xfs_rtblock_t *rtblock); /* out: start block allocated */ xfs_rtxnum_t *rtblock); /* out: start rtext allocated */
/* /*
...@@ -63,7 +63,7 @@ xfs_rtpick_extent( ...@@ -63,7 +63,7 @@ xfs_rtpick_extent(
struct xfs_mount *mp, /* file system mount point */ struct xfs_mount *mp, /* file system mount point */
struct xfs_trans *tp, /* transaction pointer */ struct xfs_trans *tp, /* transaction pointer */
xfs_rtxlen_t len, /* allocation length (rtextents) */ xfs_rtxlen_t len, /* allocation length (rtextents) */
xfs_rtblock_t *pick); /* result rt extent */ xfs_rtxnum_t *pick); /* result rt extent */
/* /*
* Grow the realtime area of the filesystem. * Grow the realtime area of the filesystem.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment