xfs: convert m_dirblkfsbs to xfs_da_geometry
[deliverable/linux.git] / fs / xfs / xfs_dir2.c
index 08dfcd1e5e00011a8c7e4f3937fd9131de21d432..3fbf0110eeb37054b157eaf2681ccae392f6ed29 100644 (file)
@@ -117,9 +117,14 @@ xfs_da_mount(
        dageo->fsblog = mp->m_sb.sb_blocklog;
        dageo->blksize = 1 << dageo->blklog;
        dageo->fsbcount = 1 << mp->m_sb.sb_dirblklog;
-       dageo->datablk = xfs_dir2_byte_to_da(mp, XFS_DIR2_DATA_OFFSET);
-       dageo->leafblk = xfs_dir2_byte_to_da(mp, XFS_DIR2_LEAF_OFFSET);
-       dageo->freeblk = xfs_dir2_byte_to_da(mp, XFS_DIR2_FREE_OFFSET);
+
+       /*
+        * Now we've set up the block conversion variables, we can calculate the
+        * segment block constants using the geometry structure.
+        */
+       dageo->datablk = xfs_dir2_byte_to_da(dageo, XFS_DIR2_DATA_OFFSET);
+       dageo->leafblk = xfs_dir2_byte_to_da(dageo, XFS_DIR2_LEAF_OFFSET);
+       dageo->freeblk = xfs_dir2_byte_to_da(dageo, XFS_DIR2_FREE_OFFSET);
        dageo->node_ents = (dageo->blksize - nodehdr_size) /
                                (uint)sizeof(xfs_da_node_entry_t);
        dageo->magicpct = (dageo->blksize * 37) / 100;
@@ -141,10 +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_dirdatablk = mp->m_dir_geo->datablk;
-       mp->m_dirleafblk = mp->m_dir_geo->leafblk;
-       mp->m_dirfreeblk = mp->m_dir_geo->freeblk;
        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;
@@ -626,13 +627,13 @@ 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)
                return error;
 
-       *dbp = xfs_dir2_da_to_db(mp, (xfs_dablk_t)bno);
+       *dbp = xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)bno);
 
        /*
         * Update file's size if this is the data space and it grew.
@@ -685,7 +686,7 @@ xfs_dir2_isleaf(
        mp = dp->i_mount;
        if ((rval = xfs_bmap_last_offset(dp, &last, XFS_DATA_FORK)))
                return rval;
-       *vp = last == mp->m_dirleafblk + (1 << mp->m_sb.sb_dirblklog);
+       *vp = last == mp->m_dir_geo->leafblk + (1 << mp->m_sb.sb_dirblklog);
        return 0;
 }
 
@@ -713,11 +714,11 @@ xfs_dir2_shrink_inode(
        dp = args->dp;
        mp = dp->i_mount;
        tp = args->trans;
-       da = xfs_dir2_db_to_da(mp, db);
+       da = xfs_dir2_db_to_da(args->geo, db);
        /*
         * 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))) {
                /*
@@ -744,12 +745,12 @@ xfs_dir2_shrink_inode(
        /*
         * If it's not a data block, we're done.
         */
-       if (db >= xfs_dir2_byte_to_db(mp, XFS_DIR2_LEAF_OFFSET))
+       if (db >= xfs_dir2_byte_to_db(args->geo, XFS_DIR2_LEAF_OFFSET))
                return 0;
        /*
         * If the block isn't the last one in the directory, we're done.
         */
-       if (dp->i_d.di_size > xfs_dir2_db_off_to_byte(mp, db + 1, 0))
+       if (dp->i_d.di_size > xfs_dir2_db_off_to_byte(args->geo, db + 1, 0))
                return 0;
        bno = da;
        if ((error = xfs_bmap_last_before(tp, dp, &bno, XFS_DATA_FORK))) {
@@ -758,7 +759,7 @@ xfs_dir2_shrink_inode(
                 */
                return error;
        }
-       if (db == mp->m_dirdatablk)
+       if (db == args->geo->datablk)
                ASSERT(bno == 0);
        else
                ASSERT(bno > 0);
This page took 0.02895 seconds and 5 git commands to generate.