xfs: introduce directory geometry structure
The directory code has a dependency on the struct xfs_mount to supply the directory block geometry. Block size, block log size, and other parameters are pre-caclulated in the struct xfs_mount or access directly from the superblock embedded in the struct xfs_mount. Extract all of this geometry information out of the struct xfs_mount and superblock and place it into a new struct xfs_da_geometry defined by the directory code. Allocate and initialise it at mount time, and attach it to the struct xfs_mount so it canbe passed back into the directory code appropriately rather than using the struct xfs_mount. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
2d6dcc6d7e
commit
0650b55497
8 changed files with 99 additions and 23 deletions
|
@ -774,12 +774,11 @@ xfs_mountfs(
|
|||
|
||||
mp->m_dmevmask = 0; /* not persistent; set after each mount */
|
||||
|
||||
xfs_dir_mount(mp);
|
||||
|
||||
/*
|
||||
* Initialize the attribute manager's entries.
|
||||
*/
|
||||
mp->m_attr_magicpct = (mp->m_sb.sb_blocksize * 37) / 100;
|
||||
error = xfs_da_mount(mp);
|
||||
if (error) {
|
||||
xfs_warn(mp, "Failed dir/attr init: %d", error);
|
||||
goto out_remove_uuid;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the precomputed transaction reservations values.
|
||||
|
@ -794,7 +793,7 @@ xfs_mountfs(
|
|||
error = xfs_initialize_perag(mp, sbp->sb_agcount, &mp->m_maxagi);
|
||||
if (error) {
|
||||
xfs_warn(mp, "Failed per-ag init: %d", error);
|
||||
goto out_remove_uuid;
|
||||
goto out_free_dir;
|
||||
}
|
||||
|
||||
if (!sbp->sb_logblocks) {
|
||||
|
@ -969,6 +968,8 @@ xfs_mountfs(
|
|||
xfs_wait_buftarg(mp->m_ddev_targp);
|
||||
out_free_perag:
|
||||
xfs_free_perag(mp);
|
||||
out_free_dir:
|
||||
xfs_da_unmount(mp);
|
||||
out_remove_uuid:
|
||||
xfs_uuid_unmount(mp);
|
||||
out:
|
||||
|
@ -1046,6 +1047,7 @@ xfs_unmountfs(
|
|||
"Freespace may not be correct on next mount.");
|
||||
|
||||
xfs_log_unmount(mp);
|
||||
xfs_da_unmount(mp);
|
||||
xfs_uuid_unmount(mp);
|
||||
|
||||
#if defined(DEBUG)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue