All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 01/34] xfs: move incore structures out of xfs_da_format.h
Date: Mon, 4 Nov 2019 10:21:27 -0800	[thread overview]
Message-ID: <20191104182127.GB4153244@magnolia> (raw)
In-Reply-To: <20191101220719.29100-2-hch@lst.de>

On Fri, Nov 01, 2019 at 03:06:46PM -0700, Christoph Hellwig wrote:
> Move the abstract in-memory version of various btree block headers
> out of xfs_da_format.h as they aren't on-disk formats.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Looks ok,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

--D

> ---
>  fs/xfs/libxfs/xfs_attr_leaf.h | 23 ++++++++++++++
>  fs/xfs/libxfs/xfs_da_btree.h  | 13 ++++++++
>  fs/xfs/libxfs/xfs_da_format.c |  1 +
>  fs/xfs/libxfs/xfs_da_format.h | 57 -----------------------------------
>  fs/xfs/libxfs/xfs_dir2.h      |  2 ++
>  fs/xfs/libxfs/xfs_dir2_priv.h | 20 ++++++++++++
>  6 files changed, 59 insertions(+), 57 deletions(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_attr_leaf.h b/fs/xfs/libxfs/xfs_attr_leaf.h
> index bb0880057ee3..16208a7743df 100644
> --- a/fs/xfs/libxfs/xfs_attr_leaf.h
> +++ b/fs/xfs/libxfs/xfs_attr_leaf.h
> @@ -16,6 +16,29 @@ struct xfs_da_state_blk;
>  struct xfs_inode;
>  struct xfs_trans;
>  
> +/*
> + * Incore version of the attribute leaf header.
> + */
> +struct xfs_attr3_icleaf_hdr {
> +	uint32_t	forw;
> +	uint32_t	back;
> +	uint16_t	magic;
> +	uint16_t	count;
> +	uint16_t	usedbytes;
> +	/*
> +	 * Firstused is 32-bit here instead of 16-bit like the on-disk variant
> +	 * to support maximum fsb size of 64k without overflow issues throughout
> +	 * the attr code. Instead, the overflow condition is handled on
> +	 * conversion to/from disk.
> +	 */
> +	uint32_t	firstused;
> +	__u8		holes;
> +	struct {
> +		uint16_t	base;
> +		uint16_t	size;
> +	} freemap[XFS_ATTR_LEAF_MAPSIZE];
> +};
> +
>  /*
>   * Used to keep a list of "remote value" extents when unlinking an inode.
>   */
> diff --git a/fs/xfs/libxfs/xfs_da_btree.h b/fs/xfs/libxfs/xfs_da_btree.h
> index ae0bbd20d9ca..02f7a21ab3a5 100644
> --- a/fs/xfs/libxfs/xfs_da_btree.h
> +++ b/fs/xfs/libxfs/xfs_da_btree.h
> @@ -124,6 +124,19 @@ typedef struct xfs_da_state {
>  						/* for dirv2 extrablk is data */
>  } xfs_da_state_t;
>  
> +/*
> + * In-core version of the node header to abstract the differences in the v2 and
> + * v3 disk format of the headers. Callers need to convert to/from disk format as
> + * appropriate.
> + */
> +struct xfs_da3_icnode_hdr {
> +	uint32_t		forw;
> +	uint32_t		back;
> +	uint16_t		magic;
> +	uint16_t		count;
> +	uint16_t		level;
> +};
> +
>  /*
>   * Utility macros to aid in logging changed structure fields.
>   */
> diff --git a/fs/xfs/libxfs/xfs_da_format.c b/fs/xfs/libxfs/xfs_da_format.c
> index b1ae572496b6..31bb250c1899 100644
> --- a/fs/xfs/libxfs/xfs_da_format.c
> +++ b/fs/xfs/libxfs/xfs_da_format.c
> @@ -13,6 +13,7 @@
>  #include "xfs_mount.h"
>  #include "xfs_inode.h"
>  #include "xfs_dir2.h"
> +#include "xfs_dir2_priv.h"
>  
>  /*
>   * Shortform directory ops
> diff --git a/fs/xfs/libxfs/xfs_da_format.h b/fs/xfs/libxfs/xfs_da_format.h
> index ae654e06b2fb..548806060f45 100644
> --- a/fs/xfs/libxfs/xfs_da_format.h
> +++ b/fs/xfs/libxfs/xfs_da_format.h
> @@ -93,19 +93,6 @@ struct xfs_da3_intnode {
>  	struct xfs_da_node_entry __btree[];
>  };
>  
> -/*
> - * In-core version of the node header to abstract the differences in the v2 and
> - * v3 disk format of the headers. Callers need to convert to/from disk format as
> - * appropriate.
> - */
> -struct xfs_da3_icnode_hdr {
> -	uint32_t	forw;
> -	uint32_t	back;
> -	uint16_t	magic;
> -	uint16_t	count;
> -	uint16_t	level;
> -};
> -
>  /*
>   * Directory version 2.
>   *
> @@ -434,14 +421,6 @@ struct xfs_dir3_leaf_hdr {
>  	__be32			pad;		/* 64 bit alignment */
>  };
>  
> -struct xfs_dir3_icleaf_hdr {
> -	uint32_t		forw;
> -	uint32_t		back;
> -	uint16_t		magic;
> -	uint16_t		count;
> -	uint16_t		stale;
> -};
> -
>  /*
>   * Leaf block entry.
>   */
> @@ -520,19 +499,6 @@ struct xfs_dir3_free {
>  
>  #define XFS_DIR3_FREE_CRC_OFF  offsetof(struct xfs_dir3_free, hdr.hdr.crc)
>  
> -/*
> - * In core version of the free block header, abstracted away from on-disk format
> - * differences. Use this in the code, and convert to/from the disk version using
> - * xfs_dir3_free_hdr_from_disk/xfs_dir3_free_hdr_to_disk.
> - */
> -struct xfs_dir3_icfree_hdr {
> -	uint32_t	magic;
> -	uint32_t	firstdb;
> -	uint32_t	nvalid;
> -	uint32_t	nused;
> -
> -};
> -
>  /*
>   * Single block format.
>   *
> @@ -709,29 +675,6 @@ struct xfs_attr3_leafblock {
>  	 */
>  };
>  
> -/*
> - * incore, neutral version of the attribute leaf header
> - */
> -struct xfs_attr3_icleaf_hdr {
> -	uint32_t	forw;
> -	uint32_t	back;
> -	uint16_t	magic;
> -	uint16_t	count;
> -	uint16_t	usedbytes;
> -	/*
> -	 * firstused is 32-bit here instead of 16-bit like the on-disk variant
> -	 * to support maximum fsb size of 64k without overflow issues throughout
> -	 * the attr code. Instead, the overflow condition is handled on
> -	 * conversion to/from disk.
> -	 */
> -	uint32_t	firstused;
> -	__u8		holes;
> -	struct {
> -		uint16_t	base;
> -		uint16_t	size;
> -	} freemap[XFS_ATTR_LEAF_MAPSIZE];
> -};
> -
>  /*
>   * Special value to represent fs block size in the leaf header firstused field.
>   * Only used when block size overflows the 2-bytes available on disk.
> diff --git a/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h
> index f54244779492..e170792c0acc 100644
> --- a/fs/xfs/libxfs/xfs_dir2.h
> +++ b/fs/xfs/libxfs/xfs_dir2.h
> @@ -18,6 +18,8 @@ struct xfs_dir2_sf_entry;
>  struct xfs_dir2_data_hdr;
>  struct xfs_dir2_data_entry;
>  struct xfs_dir2_data_unused;
> +struct xfs_dir3_icfree_hdr;
> +struct xfs_dir3_icleaf_hdr;
>  
>  extern struct xfs_name	xfs_name_dotdot;
>  
> diff --git a/fs/xfs/libxfs/xfs_dir2_priv.h b/fs/xfs/libxfs/xfs_dir2_priv.h
> index 59f9fb2241a5..973b1527b7ba 100644
> --- a/fs/xfs/libxfs/xfs_dir2_priv.h
> +++ b/fs/xfs/libxfs/xfs_dir2_priv.h
> @@ -8,6 +8,26 @@
>  
>  struct dir_context;
>  
> +/*
> + * In-core version of the leaf and free block headers to abstract the
> + * differences in the v2 and v3 disk format of the headers.
> + */
> +struct xfs_dir3_icleaf_hdr {
> +	uint32_t		forw;
> +	uint32_t		back;
> +	uint16_t		magic;
> +	uint16_t		count;
> +	uint16_t		stale;
> +};
> +
> +struct xfs_dir3_icfree_hdr {
> +	uint32_t		magic;
> +	uint32_t		firstdb;
> +	uint32_t		nvalid;
> +	uint32_t		nused;
> +
> +};
> +
>  /* xfs_dir2.c */
>  extern int xfs_dir2_grow_inode(struct xfs_da_args *args, int space,
>  				xfs_dir2_db_t *dbp);
> -- 
> 2.20.1
> 

  reply	other threads:[~2019-11-04 18:21 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-01 22:06 remove m_dirops Christoph Hellwig
2019-11-01 22:06 ` [PATCH 01/34] xfs: move incore structures out of xfs_da_format.h Christoph Hellwig
2019-11-04 18:21   ` Darrick J. Wong [this message]
2019-11-01 22:06 ` [PATCH 02/34] xfs: refactor btree node scrubbing Christoph Hellwig
2019-11-04 18:36   ` Darrick J. Wong
2019-11-05  1:35     ` Christoph Hellwig
2019-11-01 22:06 ` [PATCH 03/34] xfs: devirtualize ->node_hdr_from_disk Christoph Hellwig
2019-11-04 18:37   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 04/34] xfs: devirtualize ->node_hdr_to_disk Christoph Hellwig
2019-11-04 18:39   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 05/34] xfs: add a btree entries pointer to struct xfs_da3_icnode_hdr Christoph Hellwig
2019-11-04 19:52   ` Darrick J. Wong
2019-11-05  1:38     ` Christoph Hellwig
2019-11-05  1:58       ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 06/34] xfs: move the node header size to struct xfs_da_geometry Christoph Hellwig
2019-11-04 19:58   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 07/34] xfs: devirtualize ->leaf_hdr_from_disk Christoph Hellwig
2019-11-04 19:59   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 08/34] xfs: devirtualize ->leaf_hdr_to_disk Christoph Hellwig
2019-11-04 20:00   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 09/34] xfs: add a entries pointer to struct xfs_dir3_icleaf_hdr Christoph Hellwig
2019-11-04 20:04   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 10/34] xfs: move the dir2 leaf header size to struct xfs_da_geometry Christoph Hellwig
2019-11-04 20:05   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 11/34] xfs: move the max dir2 leaf entries count " Christoph Hellwig
2019-11-04 20:07   ` Darrick J. Wong
2019-11-05  1:42     ` Christoph Hellwig
2019-11-05  1:58       ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 12/34] xfs: devirtualize ->free_hdr_from_disk Christoph Hellwig
2019-11-04 20:08   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 13/34] xfs: devirtualize ->free_hdr_to_disk Christoph Hellwig
2019-11-04 20:08   ` Darrick J. Wong
2019-11-01 22:06 ` [PATCH 14/34] xfs: make the xfs_dir3_icfree_hdr available to xfs_dir2_node_addname_int Christoph Hellwig
2019-11-04 20:25   ` Darrick J. Wong
2019-11-05  1:52     ` Christoph Hellwig
2019-11-05  1:59       ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 15/34] xfs: add a bests pointer to struct xfs_dir3_icfree_hdr Christoph Hellwig
2019-11-04 20:21   ` Darrick J. Wong
2019-11-05  1:44     ` Christoph Hellwig
2019-11-05  2:05       ` Darrick J. Wong
2019-11-05 16:44         ` Christoph Hellwig
2019-11-01 22:07 ` [PATCH 16/34] xfs: move the dir2 free header size to struct xfs_da_geometry Christoph Hellwig
2019-11-04 20:22   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 17/34] xfs: move the max dir2 free bests count " Christoph Hellwig
2019-11-04 20:23   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 18/34] xfs: devirtualize ->db_to_fdb and ->db_to_fdindex Christoph Hellwig
2019-11-04 20:26   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 19/34] xfs: devirtualize ->sf_get_parent_ino and ->sf_put_parent_ino Christoph Hellwig
2019-11-04 20:26   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 20/34] xfs: devirtualize ->sf_entsize and ->sf_nextentry Christoph Hellwig
2019-11-04 20:28   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 21/34] xfs: devirtualize ->sf_get_ino and ->sf_put_ino Christoph Hellwig
2019-11-04 20:33   ` Darrick J. Wong
2019-11-07  1:05     ` Darrick J. Wong
2019-11-07  8:29       ` Christoph Hellwig
2019-11-01 22:07 ` [PATCH 22/34] xfs: devirtualize ->sf_get_ftype and ->sf_put_ftype Christoph Hellwig
2019-11-04 20:34   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 23/34] xfs: remove the ->data_dot_entry_p and ->data_dotdot_entry_p methods Christoph Hellwig
2019-11-04 20:37   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 24/34] xfs: remove the unused ->data_first_entry_p method Christoph Hellwig
2019-11-04 20:38   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 25/34] xfs: remove the ->data_entry_entry_p method Christoph Hellwig
2019-11-04 20:41   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 26/34] xfs: devirtualize ->data_entsize Christoph Hellwig
2019-11-04 20:45   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 27/34] xfs: devirtualize ->data_entry_tag_p Christoph Hellwig
2019-11-04 20:45   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 28/34] xfs: move the dir2 data block fixed offsets to struct xfs_da_geometry Christoph Hellwig
2019-11-04 20:46   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 29/34] xfs: cleanup xfs_dir2_data_entsize Christoph Hellwig
2019-11-04 20:48   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 30/34] xfs: devirtualize ->data_bestfree_p Christoph Hellwig
2019-11-04 20:49   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 31/34] xfs: devirtualize ->data_get_ftype and ->data_put_ftype Christoph Hellwig
2019-11-04 20:50   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 32/34] xfs: remove the now unused dir ops infrastructure Christoph Hellwig
2019-11-04 20:50   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 33/34] xfs: merge xfs_dir2_data_freescan and xfs_dir2_data_freescan_int Christoph Hellwig
2019-11-04 20:51   ` Darrick J. Wong
2019-11-01 22:07 ` [PATCH 34/34] xfs: always pass a valid hdr to xfs_dir3_leaf_check_int Christoph Hellwig
2019-11-04 20:53   ` Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191104182127.GB4153244@magnolia \
    --to=darrick.wong@oracle.com \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.