]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
xfs: convert m_dirblkfsbs to xfs_da_geometry
authorDave Chinner <dchinner@redhat.com>
Fri, 6 Jun 2014 05:14:11 +0000 (15:14 +1000)
committerDave Chinner <david@fromorbit.com>
Fri, 6 Jun 2014 05:14:11 +0000 (15:14 +1000)
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_bmap.c
fs/xfs/xfs_da_btree.c
fs/xfs/xfs_dir2.c
fs/xfs/xfs_dir2_leaf.c
fs/xfs/xfs_dir2_readdir.c
fs/xfs/xfs_mount.h
fs/xfs/xfs_symlink.c
fs/xfs/xfs_trans_resv.c
fs/xfs/xfs_trans_space.h

index 1ff0da6e2bf901159c29c6c23ba6f0b1baa0e331..96175df211b1955f98843d7d251f6e204fa4c2e2 100644 (file)
@@ -1098,10 +1098,11 @@ xfs_bmap_add_attrfork_local(
 
        if (S_ISDIR(ip->i_d.di_mode)) {
                memset(&dargs, 0, sizeof(dargs));
+               dargs.geo = ip->i_mount->m_dir_geo;
                dargs.dp = ip;
                dargs.firstblock = firstblock;
                dargs.flist = flist;
-               dargs.total = ip->i_mount->m_dirblkfsbs;
+               dargs.total = dargs.geo->fsbcount;
                dargs.whichfork = XFS_DATA_FORK;
                dargs.trans = tp;
                return xfs_dir2_sf_to_block(&dargs);
index 1009a319a786ffd675d180a3557930693b916a0e..70b934392f7369990b19ff4396475703839503ce 100644 (file)
@@ -2090,20 +2090,12 @@ xfs_da_grow_inode(
        xfs_dablk_t             *new_blkno)
 {
        xfs_fileoff_t           bno;
-       int                     count;
        int                     error;
 
        trace_xfs_da_grow_inode(args);
 
-       if (args->whichfork == XFS_DATA_FORK) {
-               bno = args->geo->leafblk;
-               count = args->dp->i_mount->m_dirblkfsbs;
-       } else {
-               bno = 0;
-               count = 1;
-       }
-
-       error = xfs_da_grow_inode_int(args, &bno, count);
+       bno = args->geo->leafblk;
+       error = xfs_da_grow_inode_int(args, &bno, args->geo->fsbcount);
        if (!error)
                *new_blkno = (xfs_dablk_t)bno;
        return error;
@@ -2170,7 +2162,7 @@ xfs_da3_swap_lastblock(
        /*
         * Read the last block in the btree space.
         */
-       last_blkno = (xfs_dablk_t)lastoff - mp->m_dirblkfsbs;
+       last_blkno = (xfs_dablk_t)lastoff - args->geo->fsbcount;
        error = xfs_da3_node_read(tp, dp, last_blkno, -1, &last_buf, w);
        if (error)
                return error;
@@ -2357,10 +2349,7 @@ xfs_da_shrink_inode(
        w = args->whichfork;
        tp = args->trans;
        mp = dp->i_mount;
-       if (w == XFS_DATA_FORK)
-               count = mp->m_dirblkfsbs;
-       else
-               count = 1;
+       count = args->geo->fsbcount;
        for (;;) {
                /*
                 * Remove extents.  If we get ENOSPC for a dir we have to move
@@ -2479,7 +2468,10 @@ xfs_dabuf_map(
        ASSERT(map && *map);
        ASSERT(*nmaps == 1);
 
-       nfsb = (whichfork == XFS_DATA_FORK) ? mp->m_dirblkfsbs : 1;
+       if (whichfork == XFS_DATA_FORK)
+               nfsb = mp->m_dir_geo->fsbcount;
+       else
+               nfsb = mp->m_attr_geo->fsbcount;
 
        /*
         * Caller doesn't have a mapping.  -2 means don't complain
index 77d6882c46b05e80ccc76801e0b9ed891ebfc5a7..3fbf0110eeb37054b157eaf2681ccae392f6ed29 100644 (file)
@@ -146,7 +146,6 @@ xfs_da_mount(
 
        /* XXX: these are to be removed as code is converted to use geo */
        mp->m_dirblksize = mp->m_dir_geo->blksize;
-       mp->m_dirblkfsbs = mp->m_dir_geo->fsbcount;
        mp->m_dir_node_ents = mp->m_dir_geo->node_ents;
        mp->m_dir_magicpct = mp->m_dir_geo->magicpct;
        mp->m_attr_node_ents = mp->m_attr_geo->node_ents;
@@ -628,7 +627,7 @@ xfs_dir2_grow_inode(
         * Set lowest possible block in the space requested.
         */
        bno = XFS_B_TO_FSBT(mp, space * XFS_DIR2_SPACE_SIZE);
-       count = mp->m_dirblkfsbs;
+       count = args->geo->fsbcount;
 
        error = xfs_da_grow_inode_int(args, &bno, count);
        if (error)
@@ -719,7 +718,7 @@ xfs_dir2_shrink_inode(
        /*
         * Unmap the fsblock(s).
         */
-       if ((error = xfs_bunmapi(tp, dp, da, mp->m_dirblkfsbs,
+       if ((error = xfs_bunmapi(tp, dp, da, args->geo->fsbcount,
                        XFS_BMAPI_METADATA, 0, args->firstblock, args->flist,
                        &done))) {
                /*
index 3eb8b240d018deb986fd1f4ef941c5b3a7e72a12..a1f13103a16eaebe0a61d0f1be3dc00362f99537 100644 (file)
@@ -1715,7 +1715,7 @@ xfs_dir2_node_to_leaf(
        if ((error = xfs_bmap_last_offset(dp, &fo, XFS_DATA_FORK))) {
                return error;
        }
-       fo -= mp->m_dirblkfsbs;
+       fo -= args->geo->fsbcount;
        /*
         * If there are freespace blocks other than the first one,
         * take this opportunity to remove trailing empty freespace blocks
@@ -1727,7 +1727,7 @@ xfs_dir2_node_to_leaf(
                        return error;
                }
                if (rval)
-                       fo -= mp->m_dirblkfsbs;
+                       fo -= args->geo->fsbcount;
                else
                        return 0;
        }
index 0c8c09cf313f5e8411223c6c513adfe408e213fa..8cb5340071e8582b713ccac2e718518c72fc56b9 100644 (file)
@@ -314,12 +314,12 @@ xfs_dir2_leaf_readbuf(
        if (bp) {
                xfs_trans_brelse(NULL, bp);
                bp = NULL;
-               mip->map_blocks -= mp->m_dirblkfsbs;
+               mip->map_blocks -= geo->fsbcount;
                /*
                 * Loop to get rid of the extents for the
                 * directory block.
                 */
-               for (i = mp->m_dirblkfsbs; i > 0; ) {
+               for (i = geo->fsbcount; i > 0; ) {
                        j = min_t(int, map->br_blockcount, i);
                        map->br_blockcount -= j;
                        map->br_startblock += j;
@@ -410,7 +410,7 @@ xfs_dir2_leaf_readbuf(
         */
        mip->curdb = xfs_dir2_da_to_db(geo, map->br_startoff);
        error = xfs_dir3_data_read(NULL, dp, map->br_startoff,
-                       map->br_blockcount >= mp->m_dirblkfsbs ?
+                       map->br_blockcount >= geo->fsbcount ?
                            XFS_FSB_TO_DADDR(mp, map->br_startblock) : -1, &bp);
 
        /*
@@ -424,7 +424,7 @@ xfs_dir2_leaf_readbuf(
         * was previously ra.
         */
        if (mip->ra_current)
-               mip->ra_current -= mp->m_dirblkfsbs;
+               mip->ra_current -= geo->fsbcount;
 
        /*
         * Do we need more readahead?
@@ -432,13 +432,13 @@ xfs_dir2_leaf_readbuf(
        blk_start_plug(&plug);
        for (mip->ra_index = mip->ra_offset = i = 0;
             mip->ra_want > mip->ra_current && i < mip->map_blocks;
-            i += mp->m_dirblkfsbs) {
+            i += geo->fsbcount) {
                ASSERT(mip->ra_index < mip->map_valid);
                /*
                 * Read-ahead a contiguous directory block.
                 */
                if (i > mip->ra_current &&
-                   map[mip->ra_index].br_blockcount >= mp->m_dirblkfsbs) {
+                   map[mip->ra_index].br_blockcount >= geo->fsbcount) {
                        xfs_dir3_data_readahead(dp,
                                map[mip->ra_index].br_startoff + mip->ra_offset,
                                XFS_FSB_TO_DADDR(mp,
@@ -461,12 +461,12 @@ xfs_dir2_leaf_readbuf(
                /*
                 * Advance offset through the mapping table.
                 */
-               for (j = 0; j < mp->m_dirblkfsbs; j += length ) {
+               for (j = 0; j < geo->fsbcount; j += length ) {
                        /*
                         * The rest of this extent but not more than a dir
                         * block.
                         */
-                       length = min_t(int, mp->m_dirblkfsbs,
+                       length = min_t(int, geo->fsbcount,
                                        map[mip->ra_index].br_blockcount -
                                                        mip->ra_offset);
                        mip->ra_offset += length;
index 0a32de0b94da8c2932fefe0c253b2e1a56d650ef..a23e7b63d420264a8ad06fa653092abaf11e0dfe 100644 (file)
@@ -155,7 +155,6 @@ typedef struct xfs_mount {
        const struct xfs_dir_ops *m_dir_inode_ops; /* vector of dir inode ops */
        const struct xfs_dir_ops *m_nondir_inode_ops; /* !dir inode ops */
        int                     m_dirblksize;   /* directory block sz--bytes */
-       int                     m_dirblkfsbs;   /* directory block sz--fsbs */
        uint                    m_chsize;       /* size of next field */
        atomic_t                m_active_trans; /* number trans frozen */
 #ifdef HAVE_PERCPU_SB
index 0816b4018dfcd73ae5fdabafe5f9dc4bfaef44f3..d69363c833e1bae24b56d17ee22748fc2cf01244 100644 (file)
@@ -27,6 +27,7 @@
 #include "xfs_ag.h"
 #include "xfs_mount.h"
 #include "xfs_da_format.h"
+#include "xfs_da_btree.h"
 #include "xfs_dir2.h"
 #include "xfs_inode.h"
 #include "xfs_ialloc.h"
index 52b6c3e3203e167200750e7766870692dbb7d2bc..63a42a180a6748d9869c53ca46fdf91aea19db85 100644 (file)
@@ -26,6 +26,7 @@
 #include "xfs_ag.h"
 #include "xfs_mount.h"
 #include "xfs_da_format.h"
+#include "xfs_da_btree.h"
 #include "xfs_inode.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_ialloc.h"
index df4c1f81884cbd4583598c450942feaf414bdd2d..bf9c4579334d500fea6c917d2a149ba05dead7fb 100644 (file)
@@ -28,7 +28,8 @@
        (((b + XFS_MAX_CONTIG_EXTENTS_PER_BLOCK(mp) - 1) / \
          XFS_MAX_CONTIG_EXTENTS_PER_BLOCK(mp)) * \
          XFS_EXTENTADD_SPACE_RES(mp,w))
-#define        XFS_DAENTER_1B(mp,w)    ((w) == XFS_DATA_FORK ? (mp)->m_dirblkfsbs : 1)
+#define        XFS_DAENTER_1B(mp,w)    \
+       ((w) == XFS_DATA_FORK ? (mp)->m_dir_geo->fsbcount : 1)
 #define        XFS_DAENTER_DBS(mp,w)   \
        (XFS_DA_NODE_MAXDEPTH + (((w) == XFS_DATA_FORK) ? 2 : 0))
 #define        XFS_DAENTER_BLOCKS(mp,w)        \
@@ -55,7 +56,7 @@
  * Space reservation values for various transactions.
  */
 #define        XFS_ADDAFORK_SPACE_RES(mp)      \
-       ((mp)->m_dirblkfsbs + XFS_DAENTER_BMAP1B(mp, XFS_DATA_FORK))
+       ((mp)->m_dir_geo->fsbcount + XFS_DAENTER_BMAP1B(mp, XFS_DATA_FORK))
 #define        XFS_ATTRRM_SPACE_RES(mp)        \
        XFS_DAREMOVE_SPACE_RES(mp, XFS_ATTR_FORK)
 /* This macro is not used - see inline code in xfs_attr_set */