mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-25 08:02:56 +00:00
[XFS] split ondisk vs incore versions of xfs_bmbt_rec_t
currently xfs_bmbt_rec_t is used both for ondisk extents as well as host-endian ones. This patch adds a new xfs_bmbt_rec_host_t for the native endian ones and cleans up the fallout. There have been various endianess issues in the tracing / debug printf code that are fixed by this patch. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29318a Signed-off-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
d580ef6eaa
commit
a6f64d4aea
7 changed files with 95 additions and 127 deletions
|
@ -248,7 +248,7 @@ xfs_bmap_local_to_extents(
|
|||
* Else, *lastxp will be set to the index of the found
|
||||
* entry; *gotp will contain the entry.
|
||||
*/
|
||||
STATIC xfs_bmbt_rec_t * /* pointer to found extent entry */
|
||||
STATIC xfs_bmbt_rec_host_t * /* pointer to found extent entry */
|
||||
xfs_bmap_search_extents(
|
||||
xfs_inode_t *ip, /* incore inode pointer */
|
||||
xfs_fileoff_t bno, /* block number searched for */
|
||||
|
@ -272,21 +272,6 @@ xfs_bmap_isaeof(
|
|||
char *aeof); /* return value */
|
||||
|
||||
#ifdef XFS_BMAP_TRACE
|
||||
/*
|
||||
* Add a bmap trace buffer entry. Base routine for the others.
|
||||
*/
|
||||
STATIC void
|
||||
xfs_bmap_trace_addentry(
|
||||
int opcode, /* operation */
|
||||
const char *fname, /* function name */
|
||||
char *desc, /* operation description */
|
||||
xfs_inode_t *ip, /* incore inode pointer */
|
||||
xfs_extnum_t idx, /* index of entry(ies) */
|
||||
xfs_extnum_t cnt, /* count of entries, 1 or 2 */
|
||||
xfs_bmbt_rec_t *r1, /* first record */
|
||||
xfs_bmbt_rec_t *r2, /* second record or null */
|
||||
int whichfork); /* data or attr fork */
|
||||
|
||||
/*
|
||||
* Add bmap trace entry prior to a call to xfs_iext_remove.
|
||||
*/
|
||||
|
@ -714,7 +699,7 @@ xfs_bmap_add_extent_delay_real(
|
|||
{
|
||||
xfs_btree_cur_t *cur; /* btree cursor */
|
||||
int diff; /* temp value */
|
||||
xfs_bmbt_rec_t *ep; /* extent entry for idx */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent entry for idx */
|
||||
int error; /* error return value */
|
||||
int i; /* temp state */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -1270,7 +1255,7 @@ xfs_bmap_add_extent_unwritten_real(
|
|||
xfs_extdelta_t *delta) /* Change made to incore extents */
|
||||
{
|
||||
xfs_btree_cur_t *cur; /* btree cursor */
|
||||
xfs_bmbt_rec_t *ep; /* extent entry for idx */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent entry for idx */
|
||||
int error; /* error return value */
|
||||
int i; /* temp state */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -1823,7 +1808,7 @@ xfs_bmap_add_extent_hole_delay(
|
|||
xfs_extdelta_t *delta, /* Change made to incore extents */
|
||||
int rsvd) /* OK to allocate reserved blocks */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* extent record for idx */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent record for idx */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
xfs_bmbt_irec_t left; /* left neighbor extent entry */
|
||||
xfs_filblks_t newlen=0; /* new indirect size */
|
||||
|
@ -2012,7 +1997,7 @@ xfs_bmap_add_extent_hole_real(
|
|||
xfs_extdelta_t *delta, /* Change made to incore extents */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* pointer to extent entry ins. point */
|
||||
xfs_bmbt_rec_host_t *ep; /* pointer to extent entry ins. point */
|
||||
int error; /* error return value */
|
||||
int i; /* temp state */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -3070,7 +3055,7 @@ xfs_bmap_del_extent(
|
|||
xfs_fileoff_t del_endoff; /* first offset past del */
|
||||
int delay; /* current block is delayed allocated */
|
||||
int do_fx; /* free extent at end of routine */
|
||||
xfs_bmbt_rec_t *ep; /* current extent entry pointer */
|
||||
xfs_bmbt_rec_host_t *ep; /* current extent entry pointer */
|
||||
int error; /* error return value */
|
||||
int flags; /* inode logging flags */
|
||||
xfs_bmbt_irec_t got; /* current extent entry */
|
||||
|
@ -3418,7 +3403,7 @@ xfs_bmap_extents_to_btree(
|
|||
xfs_bmbt_rec_t *arp; /* child record pointer */
|
||||
xfs_bmbt_block_t *block; /* btree root block */
|
||||
xfs_btree_cur_t *cur; /* bmap btree cursor */
|
||||
xfs_bmbt_rec_t *ep; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent record pointer */
|
||||
int error; /* error return value */
|
||||
xfs_extnum_t i, cnt; /* extent record index */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -3590,7 +3575,7 @@ xfs_bmap_local_to_extents(
|
|||
if (ifp->if_bytes) {
|
||||
xfs_alloc_arg_t args; /* allocation arguments */
|
||||
xfs_buf_t *bp; /* buffer for extent block */
|
||||
xfs_bmbt_rec_t *ep; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *ep;/* extent record pointer */
|
||||
|
||||
args.tp = tp;
|
||||
args.mp = ip->i_mount;
|
||||
|
@ -3655,7 +3640,7 @@ done:
|
|||
* entry (null if none). Else, *lastxp will be set to the index
|
||||
* of the found entry; *gotp will contain the entry.
|
||||
*/
|
||||
xfs_bmbt_rec_t * /* pointer to found extent entry */
|
||||
xfs_bmbt_rec_host_t * /* pointer to found extent entry */
|
||||
xfs_bmap_search_multi_extents(
|
||||
xfs_ifork_t *ifp, /* inode fork pointer */
|
||||
xfs_fileoff_t bno, /* block number searched for */
|
||||
|
@ -3664,7 +3649,7 @@ xfs_bmap_search_multi_extents(
|
|||
xfs_bmbt_irec_t *gotp, /* out: extent entry found */
|
||||
xfs_bmbt_irec_t *prevp) /* out: previous extent entry found */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent record pointer */
|
||||
xfs_extnum_t lastx; /* last extent index */
|
||||
|
||||
/*
|
||||
|
@ -3706,7 +3691,7 @@ xfs_bmap_search_multi_extents(
|
|||
* Else, *lastxp will be set to the index of the found
|
||||
* entry; *gotp will contain the entry.
|
||||
*/
|
||||
STATIC xfs_bmbt_rec_t * /* pointer to found extent entry */
|
||||
STATIC xfs_bmbt_rec_host_t * /* pointer to found extent entry */
|
||||
xfs_bmap_search_extents(
|
||||
xfs_inode_t *ip, /* incore inode pointer */
|
||||
xfs_fileoff_t bno, /* block number searched for */
|
||||
|
@ -3717,7 +3702,7 @@ xfs_bmap_search_extents(
|
|||
xfs_bmbt_irec_t *prevp) /* out: previous extent entry found */
|
||||
{
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
xfs_bmbt_rec_t *ep; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent record pointer */
|
||||
|
||||
XFS_STATS_INC(xs_look_exlist);
|
||||
ifp = XFS_IFORK_PTR(ip, fork);
|
||||
|
@ -3757,11 +3742,11 @@ xfs_bmap_trace_addentry(
|
|||
xfs_inode_t *ip, /* incore inode pointer */
|
||||
xfs_extnum_t idx, /* index of entry(ies) */
|
||||
xfs_extnum_t cnt, /* count of entries, 1 or 2 */
|
||||
xfs_bmbt_rec_t *r1, /* first record */
|
||||
xfs_bmbt_rec_t *r2, /* second record or null */
|
||||
xfs_bmbt_rec_host_t *r1, /* first record */
|
||||
xfs_bmbt_rec_host_t *r2, /* second record or null */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t tr2;
|
||||
xfs_bmbt_rec_host_t tr2;
|
||||
|
||||
ASSERT(cnt == 1 || cnt == 2);
|
||||
ASSERT(r1 != NULL);
|
||||
|
@ -3842,8 +3827,8 @@ xfs_bmap_trace_insert(
|
|||
xfs_bmbt_irec_t *r2, /* inserted record 2 or null */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t tr1; /* compressed record 1 */
|
||||
xfs_bmbt_rec_t tr2; /* compressed record 2 if needed */
|
||||
xfs_bmbt_rec_host_t tr1; /* compressed record 1 */
|
||||
xfs_bmbt_rec_host_t tr2; /* compressed record 2 if needed */
|
||||
|
||||
xfs_bmbt_set_all(&tr1, r1);
|
||||
if (cnt == 2) {
|
||||
|
@ -4316,7 +4301,6 @@ xfs_bmap_first_unused(
|
|||
xfs_fileoff_t *first_unused, /* unused block */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* pointer to an extent entry */
|
||||
int error; /* error return value */
|
||||
int idx; /* extent record index */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -4340,7 +4324,7 @@ xfs_bmap_first_unused(
|
|||
lowest = *first_unused;
|
||||
nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t);
|
||||
for (idx = 0, lastaddr = 0, max = lowest; idx < nextents; idx++) {
|
||||
ep = xfs_iext_get_ext(ifp, idx);
|
||||
xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, idx);
|
||||
off = xfs_bmbt_get_startoff(ep);
|
||||
/*
|
||||
* See if the hole before this extent will work.
|
||||
|
@ -4371,7 +4355,7 @@ xfs_bmap_last_before(
|
|||
{
|
||||
xfs_fileoff_t bno; /* input file offset */
|
||||
int eof; /* hit end of file */
|
||||
xfs_bmbt_rec_t *ep; /* pointer to last extent */
|
||||
xfs_bmbt_rec_host_t *ep; /* pointer to last extent */
|
||||
int error; /* error return value */
|
||||
xfs_bmbt_irec_t got; /* current extent value */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -4417,7 +4401,7 @@ xfs_bmap_last_offset(
|
|||
xfs_fileoff_t *last_block, /* last block */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* pointer to last extent */
|
||||
xfs_bmbt_rec_host_t *ep; /* pointer to last extent */
|
||||
int error; /* error return value */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
xfs_extnum_t nextents; /* number of extent entries */
|
||||
|
@ -4454,7 +4438,7 @@ xfs_bmap_one_block(
|
|||
xfs_inode_t *ip, /* incore inode */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* ptr to fork's extent */
|
||||
xfs_bmbt_rec_host_t *ep; /* ptr to fork's extent */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
int rval; /* return value */
|
||||
xfs_bmbt_irec_t s; /* internal version of extent */
|
||||
|
@ -4549,7 +4533,7 @@ xfs_bmap_read_extents(
|
|||
* Loop over all leaf nodes. Copy information to the extent records.
|
||||
*/
|
||||
for (;;) {
|
||||
xfs_bmbt_rec_t *frp, *trp;
|
||||
xfs_bmbt_rec_t *frp;
|
||||
xfs_fsblock_t nextbno;
|
||||
xfs_extnum_t num_recs;
|
||||
xfs_extnum_t start;
|
||||
|
@ -4581,7 +4565,7 @@ xfs_bmap_read_extents(
|
|||
frp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, 1);
|
||||
start = i;
|
||||
for (j = 0; j < num_recs; j++, i++, frp++) {
|
||||
trp = xfs_iext_get_ext(ifp, i);
|
||||
xfs_bmbt_rec_host_t *trp = xfs_iext_get_ext(ifp, i);
|
||||
trp->l0 = INT_GET(frp->l0, ARCH_CONVERT);
|
||||
trp->l1 = INT_GET(frp->l1, ARCH_CONVERT);
|
||||
}
|
||||
|
@ -4631,7 +4615,7 @@ xfs_bmap_trace_exlist(
|
|||
xfs_extnum_t cnt, /* count of entries in the list */
|
||||
int whichfork) /* data or attr fork */
|
||||
{
|
||||
xfs_bmbt_rec_t *ep; /* current extent record */
|
||||
xfs_bmbt_rec_host_t *ep; /* current extent record */
|
||||
xfs_extnum_t idx; /* extent record index */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
xfs_bmbt_irec_t s; /* file extent record */
|
||||
|
@ -4727,7 +4711,7 @@ xfs_bmapi(
|
|||
xfs_btree_cur_t *cur; /* bmap btree cursor */
|
||||
xfs_fileoff_t end; /* end of mapped file region */
|
||||
int eof; /* we've hit the end of extents */
|
||||
xfs_bmbt_rec_t *ep; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent record pointer */
|
||||
int error; /* error return */
|
||||
xfs_bmbt_irec_t got; /* current file extent record */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
|
@ -5378,7 +5362,7 @@ xfs_bunmapi(
|
|||
xfs_btree_cur_t *cur; /* bmap btree cursor */
|
||||
xfs_bmbt_irec_t del; /* extent being deleted */
|
||||
int eof; /* is deleting at eof */
|
||||
xfs_bmbt_rec_t *ep; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *ep; /* extent record pointer */
|
||||
int error; /* error return value */
|
||||
xfs_extnum_t extno; /* extent number in list */
|
||||
xfs_bmbt_irec_t got; /* current extent record */
|
||||
|
@ -6004,7 +5988,7 @@ xfs_bmap_isaeof(
|
|||
{
|
||||
int error; /* error return value */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
xfs_bmbt_rec_t *lastrec; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *lastrec; /* extent record pointer */
|
||||
xfs_extnum_t nextents; /* number of file extents */
|
||||
xfs_bmbt_irec_t s; /* expanded extent record */
|
||||
|
||||
|
@ -6048,7 +6032,7 @@ xfs_bmap_eof(
|
|||
xfs_fsblock_t blockcount; /* extent block count */
|
||||
int error; /* error return value */
|
||||
xfs_ifork_t *ifp; /* inode fork pointer */
|
||||
xfs_bmbt_rec_t *lastrec; /* extent record pointer */
|
||||
xfs_bmbt_rec_host_t *lastrec; /* extent record pointer */
|
||||
xfs_extnum_t nextents; /* number of file extents */
|
||||
xfs_fileoff_t startoff; /* extent starting file offset */
|
||||
|
||||
|
@ -6495,10 +6479,9 @@ xfs_bmap_count_leaves(
|
|||
int *count)
|
||||
{
|
||||
int b;
|
||||
xfs_bmbt_rec_t *frp;
|
||||
|
||||
for (b = 0; b < numrecs; b++) {
|
||||
frp = xfs_iext_get_ext(ifp, idx + b);
|
||||
xfs_bmbt_rec_host_t *frp = xfs_iext_get_ext(ifp, idx + b);
|
||||
*count += xfs_bmbt_get_blockcount(frp);
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue