]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: use new extent lookup helpers in xfs_bmapi_write
authorChristoph Hellwig <hch@lst.de>
Tue, 10 Jan 2017 02:18:47 +0000 (20:18 -0600)
committerEric Sandeen <sandeen@redhat.com>
Tue, 10 Jan 2017 02:18:47 +0000 (20:18 -0600)
Source kernel commit: 2d58f6ef79db10257d77ae8cd8e9e8432816c9ac

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_bmap.c

index 0f26d9e5c2e347fd98dbe68553968a4e0c38afbc..263f64089edb2b285d82516d05413e6469adb0d3 100644 (file)
@@ -4553,7 +4553,7 @@ xfs_bmapi_write(
        struct xfs_ifork        *ifp;
        struct xfs_bmalloca     bma = { NULL }; /* args for xfs_bmap_alloc */
        xfs_fileoff_t           end;            /* end of mapped file region */
-       int                     eof;            /* after the end of extents */
+       bool                    eof = false;    /* after the end of extents */
        int                     error;          /* error return */
        int                     n;              /* current extent index */
        xfs_fileoff_t           obno;           /* old block number (offset) */
@@ -4631,12 +4631,14 @@ xfs_bmapi_write(
                        goto error0;
        }
 
-       xfs_bmap_search_extents(ip, bno, whichfork, &eof, &bma.idx, &bma.got,
-                               &bma.prev);
        n = 0;
        end = bno + len;
        obno = bno;
 
+       if (!xfs_iext_lookup_extent(ip, ifp, bno, &bma.idx, &bma.got))
+               eof = true;
+       if (!xfs_iext_get_extent(ifp, bma.idx - 1, &bma.prev))
+               bma.prev.br_startoff = NULLFILEOFF;
        bma.tp = tp;
        bma.ip = ip;
        bma.total = total;
@@ -4723,11 +4725,8 @@ xfs_bmapi_write(
 
                /* Else go on to the next record. */
                bma.prev = bma.got;
-               if (++bma.idx < xfs_iext_count(ifp)) {
-                       xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma.idx),
-                                        &bma.got);
-               } else
-                       eof = 1;
+               if (!xfs_iext_get_extent(ifp, ++bma.idx, &bma.got))
+                       eof = true;
        }
        *nmap = n;