xfs
[Top] [All Lists]

[PATCH 21/27] xfs: move lastx and nallocs into bmalloca

To: xfs@xxxxxxxxxxx
Subject: [PATCH 21/27] xfs: move lastx and nallocs into bmalloca
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Sun, 18 Sep 2011 16:41:01 -0400
Cc: Dave Chinner <dchinner@xxxxxxxxxx>
References: <20110918204040.266805129@xxxxxxxxxxxxxxxxxxxxxx>
User-agent: quilt/0.48-1
From: Dave Chinner <dchinner@xxxxxxxxxx>

Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>

Index: xfs/fs/xfs/xfs_bmap.c
===================================================================
--- xfs.orig/fs/xfs/xfs_bmap.c  2011-09-11 08:45:35.173122340 -0400
+++ xfs/fs/xfs/xfs_bmap.c       2011-09-11 08:45:59.659788862 -0400
@@ -4607,9 +4607,7 @@ xfs_bmapi_delay(
 STATIC int
 xfs_bmapi_allocate(
        struct xfs_bmalloca     *bma,
-       xfs_extnum_t            *lastx,
        int                     flags,
-       int                     *nallocs,
        int                     *logflags)
 {
        struct xfs_mount        *mp = bma->ip->i_mount;
@@ -4628,8 +4626,8 @@ xfs_bmapi_allocate(
        if (bma->wasdel) {
                bma->length = (xfs_extlen_t)bma->got.br_blockcount;
                bma->offset = bma->got.br_startoff;
-               if (*lastx != NULLEXTNUM && *lastx) {
-                       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, *lastx - 1),
+               if (bma->idx != NULLEXTNUM && bma->idx) {
+                       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1),
                                         &bma->prev);
                }
        } else {
@@ -4680,7 +4678,7 @@ xfs_bmapi_allocate(
         * Bump the number of extents we've allocated
         * in this call.
         */
-       (*nallocs)++;
+       bma->nallocs++;
 
        if (bma->cur)
                bma->cur->bc_private.b.flags =
@@ -4700,13 +4698,14 @@ xfs_bmapi_allocate(
                bma->got.br_state = XFS_EXT_UNWRITTEN;
 
        if (bma->wasdel) {
-               error = xfs_bmap_add_extent_delay_real(bma->tp, bma->ip, lastx,
-                               &bma->cur, &bma->got, bma->firstblock,
-                               bma->flist, logflags);
+               error = xfs_bmap_add_extent_delay_real(bma->tp, bma->ip,
+                               &bma->idx, &bma->cur, &bma->got,
+                               bma->firstblock, bma->flist, logflags);
        } else {
-               error = xfs_bmap_add_extent_hole_real(bma->tp, bma->ip, lastx,
-                               &bma->cur, &bma->got, bma->firstblock,
-                               bma->flist, logflags, whichfork);
+               error = xfs_bmap_add_extent_hole_real(bma->tp, bma->ip,
+                               &bma->idx, &bma->cur, &bma->got,
+                               bma->firstblock, bma->flist, logflags,
+                               whichfork);
        }
 
        if (error)
@@ -4717,7 +4716,7 @@ xfs_bmapi_allocate(
         * or xfs_bmap_add_extent_hole_real might have merged it into one of
         * the neighbouring ones.
         */
-       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, *lastx), &bma->got);
+       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &bma->got);
 
        ASSERT(bma->got.br_startoff <= bma->offset);
        ASSERT(bma->got.br_startoff + bma->got.br_blockcount >=
@@ -4732,7 +4731,6 @@ xfs_bmapi_convert_unwritten(
        struct xfs_bmalloca     *bma,
        struct xfs_bmbt_irec    *mval,
        xfs_filblks_t           len,
-       xfs_extnum_t            *lastx,
        int                     flags,
        int                     *logflags)
 {
@@ -4767,7 +4765,7 @@ xfs_bmapi_convert_unwritten(
        mval->br_state = (mval->br_state == XFS_EXT_UNWRITTEN)
                                ? XFS_EXT_NORM : XFS_EXT_UNWRITTEN;
 
-       error = xfs_bmap_add_extent_unwritten_real(bma->tp, bma->ip, lastx,
+       error = xfs_bmap_add_extent_unwritten_real(bma->tp, bma->ip, &bma->idx,
                        &bma->cur, mval, bma->firstblock, bma->flist, logflags);
        if (error)
                return error;
@@ -4777,7 +4775,7 @@ xfs_bmapi_convert_unwritten(
         * xfs_bmap_add_extent_unwritten_real might have merged it into one
         * of the neighbouring ones.
         */
-       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, *lastx), &bma->got);
+       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &bma->got);
 
        /*
         * We may have combined previously unwritten space with written space,
@@ -4820,10 +4818,8 @@ xfs_bmapi_write(
        xfs_fileoff_t           end;            /* end of mapped file region */
        int                     eof;            /* after the end of extents */
        int                     error;          /* error return */
-       xfs_extnum_t            lastx;          /* last useful extent number */
        int                     logflags;       /* flags for transaction 
logging */
        int                     n;              /* current extent index */
-       int                     nallocs;        /* number of extents alloc'd */
        xfs_fileoff_t           obno;           /* old block number (offset) */
        int                     tmp_logflags;   /* temp flags holder */
        int                     whichfork;      /* data or attr fork */
@@ -4871,7 +4867,6 @@ xfs_bmapi_write(
        XFS_STATS_INC(xs_blk_mapw);
 
        logflags = 0;
-       nallocs = 0;
 
        if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
                error = xfs_bmap_local_to_extents(tp, ip, firstblock, total,
@@ -4895,7 +4890,7 @@ xfs_bmapi_write(
                        goto error0;
        }
 
-       xfs_bmap_search_extents(ip, bno, whichfork, &eof, &lastx, &bma.got,
+       xfs_bmap_search_extents(ip, bno, whichfork, &eof, &bma.idx, &bma.got,
                                &bma.prev);
        n = 0;
        end = bno + len;
@@ -4923,8 +4918,7 @@ xfs_bmapi_write(
                        bma.length = len;
                        bma.offset = bno;
 
-                       error = xfs_bmapi_allocate(&bma, &lastx, flags,
-                                       &nallocs, &tmp_logflags);
+                       error = xfs_bmapi_allocate(&bma, flags, &tmp_logflags);
                        logflags |= tmp_logflags;
                        if (error)
                                goto error0;
@@ -4937,7 +4931,7 @@ xfs_bmapi_write(
                                                        end, n, flags);
 
                /* Execute unwritten extent conversion if necessary */
-               error = xfs_bmapi_convert_unwritten(&bma, mval, len, &lastx,
+               error = xfs_bmapi_convert_unwritten(&bma, mval, len,
                                                    flags, &tmp_logflags);
                logflags |= tmp_logflags;
                if (error == EAGAIN)
@@ -4953,14 +4947,15 @@ xfs_bmapi_write(
                 * XFS_BMAP_MAX_NMAP extents no matter what.  Otherwise
                 * the transaction may get too big.
                 */
-               if (bno >= end || n >= *nmap || nallocs >= *nmap)
+               if (bno >= end || n >= *nmap || bma.nallocs >= *nmap)
                        break;
 
                /* Else go on to the next record. */
                bma.prev = bma.got;
-               if (++lastx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t))
-                       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, lastx), 
&bma.got);
-               else
+               if (++bma.idx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)) {
+                       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma.idx),
+                                        &bma.got);
+               } else
                        eof = 1;
        }
        *nmap = n;
Index: xfs/fs/xfs/xfs_bmap.h
===================================================================
--- xfs.orig/fs/xfs/xfs_bmap.h  2011-09-11 08:45:35.000000000 -0400
+++ xfs/fs/xfs/xfs_bmap.h       2011-09-11 08:45:42.006455635 -0400
@@ -121,6 +121,8 @@ typedef struct xfs_bmalloca {
        xfs_fsblock_t           blkno;  /* starting block of new extent */
 
        struct xfs_btree_cur    *cur;   /* btree cursor */
+       xfs_extnum_t            idx;    /* current extent index */
+       int                     nallocs;/* number of extents alloc'd */
 
        xfs_extlen_t            total;  /* total blocks needed for xaction */
        xfs_extlen_t            minlen; /* minimum allocation size (blocks) */

<Prev in Thread] Current Thread [Next in Thread>