On Fri, Nov 01, 2019 at 03:07:01PM -0700, Christoph Hellwig wrote: > Move the free header size towards our structure for dir/attr geometry > parameters. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > fs/xfs/libxfs/xfs_da_btree.h | 1 + > fs/xfs/libxfs/xfs_da_format.c | 3 --- > fs/xfs/libxfs/xfs_dir2.c | 2 ++ > fs/xfs/libxfs/xfs_dir2.h | 1 - > fs/xfs/libxfs/xfs_dir2_node.c | 2 +- > 5 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_da_btree.h b/fs/xfs/libxfs/xfs_da_btree.h > index c8b137685ca7..3d0b1e97bf43 100644 > --- a/fs/xfs/libxfs/xfs_da_btree.h > +++ b/fs/xfs/libxfs/xfs_da_btree.h > @@ -29,6 +29,7 @@ struct xfs_da_geometry { > int leaf_hdr_size; /* dir2 leaf header size */ > unsigned int leaf_max_ents; /* # of entries in dir2 leaf */ > xfs_dablk_t leafblk; /* blockno of leaf data v2 */ > + int free_hdr_size; /* dir2 free header size */ Shouldn't this be unsigned? Even if the original code wasn't this way? Looks fine otherwise, --D > xfs_dablk_t freeblk; /* blockno of free data v2 */ > }; > > diff --git a/fs/xfs/libxfs/xfs_da_format.c b/fs/xfs/libxfs/xfs_da_format.c > index 7263b6d6a135..1fc8982c830f 100644 > --- a/fs/xfs/libxfs/xfs_da_format.c > +++ b/fs/xfs/libxfs/xfs_da_format.c > @@ -486,7 +486,6 @@ static const struct xfs_dir_ops xfs_dir2_ops = { > .data_entry_p = xfs_dir2_data_entry_p, > .data_unused_p = xfs_dir2_data_unused_p, > > - .free_hdr_size = sizeof(struct xfs_dir2_free_hdr), > .free_max_bests = xfs_dir2_free_max_bests, > .db_to_fdb = xfs_dir2_db_to_fdb, > .db_to_fdindex = xfs_dir2_db_to_fdindex, > @@ -522,7 +521,6 @@ static const struct xfs_dir_ops xfs_dir2_ftype_ops = { > .data_entry_p = xfs_dir2_data_entry_p, > .data_unused_p = xfs_dir2_data_unused_p, > > - .free_hdr_size = sizeof(struct xfs_dir2_free_hdr), > .free_max_bests = xfs_dir2_free_max_bests, > .db_to_fdb = xfs_dir2_db_to_fdb, > .db_to_fdindex = xfs_dir2_db_to_fdindex, > @@ -558,7 +556,6 @@ static const struct xfs_dir_ops xfs_dir3_ops = { > .data_entry_p = xfs_dir3_data_entry_p, > .data_unused_p = xfs_dir3_data_unused_p, > > - .free_hdr_size = sizeof(struct xfs_dir3_free_hdr), > .free_max_bests = xfs_dir3_free_max_bests, > .db_to_fdb = xfs_dir3_db_to_fdb, > .db_to_fdindex = xfs_dir3_db_to_fdindex, > diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c > index 9f88b9885747..13ac228bfc86 100644 > --- a/fs/xfs/libxfs/xfs_dir2.c > +++ b/fs/xfs/libxfs/xfs_dir2.c > @@ -125,9 +125,11 @@ xfs_da_mount( > if (xfs_sb_version_hascrc(&mp->m_sb)) { > dageo->node_hdr_size = sizeof(struct xfs_da3_node_hdr); > dageo->leaf_hdr_size = sizeof(struct xfs_dir3_leaf_hdr); > + dageo->free_hdr_size = sizeof(struct xfs_dir3_free_hdr); > } else { > dageo->node_hdr_size = sizeof(struct xfs_da_node_hdr); > dageo->leaf_hdr_size = sizeof(struct xfs_dir2_leaf_hdr); > + dageo->free_hdr_size = sizeof(struct xfs_dir2_free_hdr); > } > dageo->leaf_max_ents = (dageo->blksize - dageo->leaf_hdr_size) / > sizeof(struct xfs_dir2_leaf_entry); > diff --git a/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h > index 402f00326b64..d87cd71e3cf1 100644 > --- a/fs/xfs/libxfs/xfs_dir2.h > +++ b/fs/xfs/libxfs/xfs_dir2.h > @@ -72,7 +72,6 @@ struct xfs_dir_ops { > struct xfs_dir2_data_unused * > (*data_unused_p)(struct xfs_dir2_data_hdr *hdr); > > - int free_hdr_size; > int (*free_max_bests)(struct xfs_da_geometry *geo); > xfs_dir2_db_t (*db_to_fdb)(struct xfs_da_geometry *geo, > xfs_dir2_db_t db); > diff --git a/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c > index eff7cfeb19b9..7047d1e066f9 100644 > --- a/fs/xfs/libxfs/xfs_dir2_node.c > +++ b/fs/xfs/libxfs/xfs_dir2_node.c > @@ -372,7 +372,7 @@ xfs_dir2_free_log_header( > free->hdr.magic == cpu_to_be32(XFS_DIR3_FREE_MAGIC)); > #endif > xfs_trans_log_buf(args->trans, bp, 0, > - args->dp->d_ops->free_hdr_size - 1); > + args->geo->free_hdr_size - 1); > } > > /* > -- > 2.20.1 >