public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <wqu@suse.com>
To: Josef Bacik <josef@toxicpanda.com>,
	linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH 04/17] btrfs: move btrfs on disk definitions out of ctree.h
Date: Thu, 15 Sep 2022 17:07:42 +0800	[thread overview]
Message-ID: <a67b963c-1f2a-bf68-c0b3-08dda678c629@suse.com> (raw)
In-Reply-To: <058e41f7732823196f030916c04134418688cbe9.1663167823.git.josef@toxicpanda.com>



On 2022/9/14 23:06, Josef Bacik wrote:
> The bulk of our on-disk definitions exist in btrfs_tree.h, which user
> space can use.

Previously I tried to move some members to btrfs_tree.h, but didn't get 
approved, mostly due to the fact that, we have those members exposed 
through uapi is for TREE_SEARCH ioctl.

But I'm not buying that reason at all.

To me, all on-disk format, no matter if it's exposed through tree-search 
should be in btrfs_tree.h.

Although I'd prefer to rename btrfs_tree.h to btrfs_ondisk_format.h.

Thus to David:

Can we make it clear that, btrfs_tree.h is not only for tree search 
ioctl, but also all the on-disk format thing?

Reject once that's fine, but reject twice from two different guys, I 
think it's not correct.

>  Keep things consistent and move the rest of the on disk
> definitions out of ctree.h into btrfs_tree.h.  Note I did have to update
> all u8's to __u8, but otherwise this is a strict copy and paste.
> 
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>

Thanks,
Qu


> ---
>   fs/btrfs/ctree.h                | 215 +-------------------------------
>   include/uapi/linux/btrfs_tree.h | 213 +++++++++++++++++++++++++++++++
>   2 files changed, 214 insertions(+), 214 deletions(-)
> 
> diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
> index 5cf18a120dff..c3a8440d3223 100644
> --- a/fs/btrfs/ctree.h
> +++ b/fs/btrfs/ctree.h
> @@ -50,8 +50,6 @@ struct btrfs_ref;
>   struct btrfs_bio;
>   struct btrfs_ioctl_encoded_io_args;
>   
> -#define BTRFS_MAGIC 0x4D5F53665248425FULL /* ascii _BHRfS_M, no null */
> -
>   /*
>    * Maximum number of mirrors that can be available for all profiles counting
>    * the target device of dev-replace as one. During an active device replace
> @@ -63,8 +61,6 @@ struct btrfs_ioctl_encoded_io_args;
>    */
>   #define BTRFS_MAX_MIRRORS (4 + 1)
>   
> -#define BTRFS_MAX_LEVEL 8
> -
>   #define BTRFS_OLDEST_GENERATION	0ULL
>   
>   /*
> @@ -133,81 +129,9 @@ enum {
>   	BTRFS_FS_STATE_COUNT
>   };
>   
> -#define BTRFS_BACKREF_REV_MAX		256
> -#define BTRFS_BACKREF_REV_SHIFT		56
> -#define BTRFS_BACKREF_REV_MASK		(((u64)BTRFS_BACKREF_REV_MAX - 1) << \
> -					 BTRFS_BACKREF_REV_SHIFT)
> -
> -#define BTRFS_OLD_BACKREF_REV		0
> -#define BTRFS_MIXED_BACKREF_REV		1
> -
> -/*
> - * every tree block (leaf or node) starts with this header.
> - */
> -struct btrfs_header {
> -	/* these first four must match the super block */
> -	u8 csum[BTRFS_CSUM_SIZE];
> -	u8 fsid[BTRFS_FSID_SIZE]; /* FS specific uuid */
> -	__le64 bytenr; /* which block this node is supposed to live in */
> -	__le64 flags;
> -
> -	/* allowed to be different from the super from here on down */
> -	u8 chunk_tree_uuid[BTRFS_UUID_SIZE];
> -	__le64 generation;
> -	__le64 owner;
> -	__le32 nritems;
> -	u8 level;
> -} __attribute__ ((__packed__));
> -
> -/*
> - * this is a very generous portion of the super block, giving us
> - * room to translate 14 chunks with 3 stripes each.
> - */
> -#define BTRFS_SYSTEM_CHUNK_ARRAY_SIZE 2048
> -
> -/*
> - * just in case we somehow lose the roots and are not able to mount,
> - * we store an array of the roots from previous transactions
> - * in the super.
> - */
> -#define BTRFS_NUM_BACKUP_ROOTS 4
> -struct btrfs_root_backup {
> -	__le64 tree_root;
> -	__le64 tree_root_gen;
> -
> -	__le64 chunk_root;
> -	__le64 chunk_root_gen;
> -
> -	__le64 extent_root;
> -	__le64 extent_root_gen;
> -
> -	__le64 fs_root;
> -	__le64 fs_root_gen;
> -
> -	__le64 dev_root;
> -	__le64 dev_root_gen;
> -
> -	__le64 csum_root;
> -	__le64 csum_root_gen;
> -
> -	__le64 total_bytes;
> -	__le64 bytes_used;
> -	__le64 num_devices;
> -	/* future */
> -	__le64 unused_64[4];
> -
> -	u8 tree_root_level;
> -	u8 chunk_root_level;
> -	u8 extent_root_level;
> -	u8 fs_root_level;
> -	u8 dev_root_level;
> -	u8 csum_root_level;
> -	/* future and to align */
> -	u8 unused_8[10];
> -} __attribute__ ((__packed__));
> -
>   #define BTRFS_SUPER_INFO_OFFSET			SZ_64K
>   #define BTRFS_SUPER_INFO_SIZE			4096
> +static_assert(sizeof(struct btrfs_super_block) == BTRFS_SUPER_INFO_SIZE);
>   
>   /*
>    * The reserved space at the beginning of each device.
> @@ -216,69 +140,6 @@ struct btrfs_root_backup {
>    */
>   #define BTRFS_DEVICE_RANGE_RESERVED			(SZ_1M)
>   
> -/*
> - * the super block basically lists the main trees of the FS
> - * it currently lacks any block count etc etc
> - */
> -struct btrfs_super_block {
> -	/* the first 4 fields must match struct btrfs_header */
> -	u8 csum[BTRFS_CSUM_SIZE];
> -	/* FS specific UUID, visible to user */
> -	u8 fsid[BTRFS_FSID_SIZE];
> -	__le64 bytenr; /* this block number */
> -	__le64 flags;
> -
> -	/* allowed to be different from the btrfs_header from here own down */
> -	__le64 magic;
> -	__le64 generation;
> -	__le64 root;
> -	__le64 chunk_root;
> -	__le64 log_root;
> -
> -	/*
> -	 * This member has never been utilized since the very beginning, thus
> -	 * it's always 0 regardless of kernel version.  We always use
> -	 * generation + 1 to read log tree root.  So here we mark it deprecated.
> -	 */
> -	__le64 __unused_log_root_transid;
> -	__le64 total_bytes;
> -	__le64 bytes_used;
> -	__le64 root_dir_objectid;
> -	__le64 num_devices;
> -	__le32 sectorsize;
> -	__le32 nodesize;
> -	__le32 __unused_leafsize;
> -	__le32 stripesize;
> -	__le32 sys_chunk_array_size;
> -	__le64 chunk_root_generation;
> -	__le64 compat_flags;
> -	__le64 compat_ro_flags;
> -	__le64 incompat_flags;
> -	__le16 csum_type;
> -	u8 root_level;
> -	u8 chunk_root_level;
> -	u8 log_root_level;
> -	struct btrfs_dev_item dev_item;
> -
> -	char label[BTRFS_LABEL_SIZE];
> -
> -	__le64 cache_generation;
> -	__le64 uuid_tree_generation;
> -
> -	/* the UUID written into btree blocks */
> -	u8 metadata_uuid[BTRFS_FSID_SIZE];
> -
> -	/* future expansion */
> -	u8 reserved8[8];
> -	__le64 reserved[27];
> -	u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE];
> -	struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS];
> -
> -	/* Padded to 4096 bytes */
> -	u8 padding[565];
> -} __attribute__ ((__packed__));
> -static_assert(sizeof(struct btrfs_super_block) == BTRFS_SUPER_INFO_SIZE);
> -
>   /*
>    * Compat flags that we support.  If any incompat flags are set other than the
>    * ones specified below then we will fail to mount
> @@ -336,43 +197,6 @@ static_assert(sizeof(struct btrfs_super_block) == BTRFS_SUPER_INFO_SIZE);
>   	(BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF)
>   #define BTRFS_FEATURE_INCOMPAT_SAFE_CLEAR		0ULL
>   
> -/*
> - * A leaf is full of items. offset and size tell us where to find
> - * the item in the leaf (relative to the start of the data area)
> - */
> -struct btrfs_item {
> -	struct btrfs_disk_key key;
> -	__le32 offset;
> -	__le32 size;
> -} __attribute__ ((__packed__));
> -
> -/*
> - * leaves have an item area and a data area:
> - * [item0, item1....itemN] [free space] [dataN...data1, data0]
> - *
> - * The data is separate from the items to get the keys closer together
> - * during searches.
> - */
> -struct btrfs_leaf {
> -	struct btrfs_header header;
> -	struct btrfs_item items[];
> -} __attribute__ ((__packed__));
> -
> -/*
> - * all non-leaf blocks are nodes, they hold only keys and pointers to
> - * other blocks
> - */
> -struct btrfs_key_ptr {
> -	struct btrfs_disk_key key;
> -	__le64 blockptr;
> -	__le64 generation;
> -} __attribute__ ((__packed__));
> -
> -struct btrfs_node {
> -	struct btrfs_header header;
> -	struct btrfs_key_ptr ptrs[];
> -} __attribute__ ((__packed__));
> -
>   /* Read ahead values for struct btrfs_path.reada */
>   enum {
>   	READA_NONE,
> @@ -1633,43 +1457,6 @@ do {									\
>   #define btrfs_clear_pending(info, opt)	\
>   	clear_bit(BTRFS_PENDING_##opt, &(info)->pending_changes)
>   
> -/*
> - * Inode flags
> - */
> -#define BTRFS_INODE_NODATASUM		(1U << 0)
> -#define BTRFS_INODE_NODATACOW		(1U << 1)
> -#define BTRFS_INODE_READONLY		(1U << 2)
> -#define BTRFS_INODE_NOCOMPRESS		(1U << 3)
> -#define BTRFS_INODE_PREALLOC		(1U << 4)
> -#define BTRFS_INODE_SYNC		(1U << 5)
> -#define BTRFS_INODE_IMMUTABLE		(1U << 6)
> -#define BTRFS_INODE_APPEND		(1U << 7)
> -#define BTRFS_INODE_NODUMP		(1U << 8)
> -#define BTRFS_INODE_NOATIME		(1U << 9)
> -#define BTRFS_INODE_DIRSYNC		(1U << 10)
> -#define BTRFS_INODE_COMPRESS		(1U << 11)
> -
> -#define BTRFS_INODE_ROOT_ITEM_INIT	(1U << 31)
> -
> -#define BTRFS_INODE_FLAG_MASK						\
> -	(BTRFS_INODE_NODATASUM |					\
> -	 BTRFS_INODE_NODATACOW |					\
> -	 BTRFS_INODE_READONLY |						\
> -	 BTRFS_INODE_NOCOMPRESS |					\
> -	 BTRFS_INODE_PREALLOC |						\
> -	 BTRFS_INODE_SYNC |						\
> -	 BTRFS_INODE_IMMUTABLE |					\
> -	 BTRFS_INODE_APPEND |						\
> -	 BTRFS_INODE_NODUMP |						\
> -	 BTRFS_INODE_NOATIME |						\
> -	 BTRFS_INODE_DIRSYNC |						\
> -	 BTRFS_INODE_COMPRESS |						\
> -	 BTRFS_INODE_ROOT_ITEM_INIT)
> -
> -#define BTRFS_INODE_RO_VERITY		(1U << 0)
> -
> -#define BTRFS_INODE_RO_FLAG_MASK	(BTRFS_INODE_RO_VERITY)
> -
>   struct btrfs_map_token {
>   	struct extent_buffer *eb;
>   	char *kaddr;
> diff --git a/include/uapi/linux/btrfs_tree.h b/include/uapi/linux/btrfs_tree.h
> index 1f7a38ec6ac3..e6bf902b9c92 100644
> --- a/include/uapi/linux/btrfs_tree.h
> +++ b/include/uapi/linux/btrfs_tree.h
> @@ -10,6 +10,10 @@
>   #include <stddef.h>
>   #endif
>   
> +#define BTRFS_MAGIC 0x4D5F53665248425FULL /* ascii _BHRfS_M, no null */
> +
> +#define BTRFS_MAX_LEVEL 8
> +
>   /*
>    * This header contains the structure definitions and constants used
>    * by file system objects that can be retrieved using
> @@ -360,6 +364,43 @@ enum btrfs_csum_type {
>   #define BTRFS_FT_XATTR		8
>   #define BTRFS_FT_MAX		9
>   
> +/*
> + * Inode flags
> + */
> +#define BTRFS_INODE_NODATASUM		(1U << 0)
> +#define BTRFS_INODE_NODATACOW		(1U << 1)
> +#define BTRFS_INODE_READONLY		(1U << 2)
> +#define BTRFS_INODE_NOCOMPRESS		(1U << 3)
> +#define BTRFS_INODE_PREALLOC		(1U << 4)
> +#define BTRFS_INODE_SYNC		(1U << 5)
> +#define BTRFS_INODE_IMMUTABLE		(1U << 6)
> +#define BTRFS_INODE_APPEND		(1U << 7)
> +#define BTRFS_INODE_NODUMP		(1U << 8)
> +#define BTRFS_INODE_NOATIME		(1U << 9)
> +#define BTRFS_INODE_DIRSYNC		(1U << 10)
> +#define BTRFS_INODE_COMPRESS		(1U << 11)
> +
> +#define BTRFS_INODE_ROOT_ITEM_INIT	(1U << 31)
> +
> +#define BTRFS_INODE_FLAG_MASK						\
> +	(BTRFS_INODE_NODATASUM |					\
> +	 BTRFS_INODE_NODATACOW |					\
> +	 BTRFS_INODE_READONLY |						\
> +	 BTRFS_INODE_NOCOMPRESS |					\
> +	 BTRFS_INODE_PREALLOC |						\
> +	 BTRFS_INODE_SYNC |						\
> +	 BTRFS_INODE_IMMUTABLE |					\
> +	 BTRFS_INODE_APPEND |						\
> +	 BTRFS_INODE_NODUMP |						\
> +	 BTRFS_INODE_NOATIME |						\
> +	 BTRFS_INODE_DIRSYNC |						\
> +	 BTRFS_INODE_COMPRESS |						\
> +	 BTRFS_INODE_ROOT_ITEM_INIT)
> +
> +#define BTRFS_INODE_RO_VERITY		(1U << 0)
> +
> +#define BTRFS_INODE_RO_FLAG_MASK	(BTRFS_INODE_RO_VERITY)
> +
>   /*
>    * The key defines the order in the tree, and so it also defines (optimal)
>    * block layout.
> @@ -389,6 +430,108 @@ struct btrfs_key {
>   	__u64 offset;
>   } __attribute__ ((__packed__));
>   
> +/*
> + * every tree block (leaf or node) starts with this header.
> + */
> +struct btrfs_header {
> +	/* these first four must match the super block */
> +	__u8 csum[BTRFS_CSUM_SIZE];
> +	__u8 fsid[BTRFS_FSID_SIZE]; /* FS specific uuid */
> +	__le64 bytenr; /* which block this node is supposed to live in */
> +	__le64 flags;
> +
> +	/* allowed to be different from the super from here on down */
> +	__u8 chunk_tree_uuid[BTRFS_UUID_SIZE];
> +	__le64 generation;
> +	__le64 owner;
> +	__le32 nritems;
> +	__u8 level;
> +} __attribute__ ((__packed__));
> +
> +/*
> + * this is a very generous portion of the super block, giving us
> + * room to translate 14 chunks with 3 stripes each.
> + */
> +#define BTRFS_SYSTEM_CHUNK_ARRAY_SIZE 2048
> +
> +/*
> + * just in case we somehow lose the roots and are not able to mount,
> + * we store an array of the roots from previous transactions
> + * in the super.
> + */
> +#define BTRFS_NUM_BACKUP_ROOTS 4
> +struct btrfs_root_backup {
> +	__le64 tree_root;
> +	__le64 tree_root_gen;
> +
> +	__le64 chunk_root;
> +	__le64 chunk_root_gen;
> +
> +	__le64 extent_root;
> +	__le64 extent_root_gen;
> +
> +	__le64 fs_root;
> +	__le64 fs_root_gen;
> +
> +	__le64 dev_root;
> +	__le64 dev_root_gen;
> +
> +	__le64 csum_root;
> +	__le64 csum_root_gen;
> +
> +	__le64 total_bytes;
> +	__le64 bytes_used;
> +	__le64 num_devices;
> +	/* future */
> +	__le64 unused_64[4];
> +
> +	__u8 tree_root_level;
> +	__u8 chunk_root_level;
> +	__u8 extent_root_level;
> +	__u8 fs_root_level;
> +	__u8 dev_root_level;
> +	__u8 csum_root_level;
> +	/* future and to align */
> +	__u8 unused_8[10];
> +} __attribute__ ((__packed__));
> +
> +/*
> + * A leaf is full of items. offset and size tell us where to find
> + * the item in the leaf (relative to the start of the data area)
> + */
> +struct btrfs_item {
> +	struct btrfs_disk_key key;
> +	__le32 offset;
> +	__le32 size;
> +} __attribute__ ((__packed__));
> +
> +/*
> + * leaves have an item area and a data area:
> + * [item0, item1....itemN] [free space] [dataN...data1, data0]
> + *
> + * The data is separate from the items to get the keys closer together
> + * during searches.
> + */
> +struct btrfs_leaf {
> +	struct btrfs_header header;
> +	struct btrfs_item items[];
> +} __attribute__ ((__packed__));
> +
> +/*
> + * all non-leaf blocks are nodes, they hold only keys and pointers to
> + * other blocks
> + */
> +struct btrfs_key_ptr {
> +	struct btrfs_disk_key key;
> +	__le64 blockptr;
> +	__le64 generation;
> +} __attribute__ ((__packed__));
> +
> +struct btrfs_node {
> +	struct btrfs_header header;
> +	struct btrfs_key_ptr ptrs[];
> +} __attribute__ ((__packed__));
> +
>   struct btrfs_dev_item {
>   	/* the internal btrfs device id */
>   	__le64 devid;
> @@ -472,6 +615,68 @@ struct btrfs_chunk {
>   	/* additional stripes go here */
>   } __attribute__ ((__packed__));
>   
> +/*
> + * the super block basically lists the main trees of the FS
> + * it currently lacks any block count etc etc
> + */
> +struct btrfs_super_block {
> +	/* the first 4 fields must match struct btrfs_header */
> +	__u8 csum[BTRFS_CSUM_SIZE];
> +	/* FS specific UUID, visible to user */
> +	__u8 fsid[BTRFS_FSID_SIZE];
> +	__le64 bytenr; /* this block number */
> +	__le64 flags;
> +
> +	/* allowed to be different from the btrfs_header from here own down */
> +	__le64 magic;
> +	__le64 generation;
> +	__le64 root;
> +	__le64 chunk_root;
> +	__le64 log_root;
> +
> +	/*
> +	 * This member has never been utilized since the very beginning, thus
> +	 * it's always 0 regardless of kernel version.  We always use
> +	 * generation + 1 to read log tree root.  So here we mark it deprecated.
> +	 */
> +	__le64 __unused_log_root_transid;
> +	__le64 total_bytes;
> +	__le64 bytes_used;
> +	__le64 root_dir_objectid;
> +	__le64 num_devices;
> +	__le32 sectorsize;
> +	__le32 nodesize;
> +	__le32 __unused_leafsize;
> +	__le32 stripesize;
> +	__le32 sys_chunk_array_size;
> +	__le64 chunk_root_generation;
> +	__le64 compat_flags;
> +	__le64 compat_ro_flags;
> +	__le64 incompat_flags;
> +	__le16 csum_type;
> +	__u8 root_level;
> +	__u8 chunk_root_level;
> +	__u8 log_root_level;
> +	struct btrfs_dev_item dev_item;
> +
> +	char label[BTRFS_LABEL_SIZE];
> +
> +	__le64 cache_generation;
> +	__le64 uuid_tree_generation;
> +
> +	/* the UUID written into btree blocks */
> +	__u8 metadata_uuid[BTRFS_FSID_SIZE];
> +
> +	/* future expansion */
> +	__u8 reserved8[8];
> +	__le64 reserved[27];
> +	__u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE];
> +	struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS];
> +
> +	/* Padded to 4096 bytes */
> +	__u8 padding[565];
> +} __attribute__ ((__packed__));
> +
>   #define BTRFS_FREE_SPACE_EXTENT	1
>   #define BTRFS_FREE_SPACE_BITMAP	2
>   
> @@ -526,6 +731,14 @@ struct btrfs_extent_item_v0 {
>   /* use full backrefs for extent pointers in the block */
>   #define BTRFS_BLOCK_FLAG_FULL_BACKREF	(1ULL << 8)
>   
> +#define BTRFS_BACKREF_REV_MAX		256
> +#define BTRFS_BACKREF_REV_SHIFT		56
> +#define BTRFS_BACKREF_REV_MASK		(((u64)BTRFS_BACKREF_REV_MAX - 1) << \
> +					 BTRFS_BACKREF_REV_SHIFT)
> +
> +#define BTRFS_OLD_BACKREF_REV		0
> +#define BTRFS_MIXED_BACKREF_REV		1
> +
>   /*
>    * this flag is only used internally by scrub and may be changed at any time
>    * it is only declared here to avoid collisions

  reply	other threads:[~2022-09-15  9:08 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-14 15:06 [PATCH 00/17] btrfs: initial ctree.h cleanups, simple stuff Josef Bacik
2022-09-14 15:06 ` [PATCH 01/17] btrfs: remove set/clear_pending_info helpers Josef Bacik
2022-09-15  9:03   ` Qu Wenruo
2022-09-15 14:11   ` Johannes Thumshirn
2022-10-07 16:51   ` David Sterba
2022-09-14 15:06 ` [PATCH 02/17] btrfs: remove BTRFS_TOTAL_BYTES_PINNED_BATCH Josef Bacik
2022-09-15  9:03   ` Qu Wenruo
2022-09-15 14:11   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 03/17] btrfs: remove BTRFS_IOPRIO_READA Josef Bacik
2022-09-15  9:03   ` Qu Wenruo
2022-09-15 14:12   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 04/17] btrfs: move btrfs on disk definitions out of ctree.h Josef Bacik
2022-09-15  9:07   ` Qu Wenruo [this message]
2022-10-07 17:07     ` David Sterba
2022-10-07 23:50       ` Qu Wenruo
2022-09-14 15:06 ` [PATCH 05/17] btrfs: move btrfs_get_block_group helper out of disk-io.h Josef Bacik
2022-09-15  9:10   ` Qu Wenruo
2022-09-15 14:14   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 06/17] btrfs: move maximum limits to btrfs_tree.h Josef Bacik
2022-09-15  9:10   ` Qu Wenruo
2022-09-15 14:15   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 07/17] btrfs: move BTRFS_MAX_MIRRORS into scrub.c Josef Bacik
2022-09-15  9:11   ` Qu Wenruo
2022-09-15 14:16   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 08/17] btrfs: move discard stat defs to free-space-cache.h Josef Bacik
2022-09-15  9:13   ` Qu Wenruo
2022-09-15 14:18   ` Johannes Thumshirn
2022-10-07 17:17     ` David Sterba
2022-10-07 17:16   ` David Sterba
2022-09-14 15:06 ` [PATCH 09/17] btrfs: move btrfs_chunk_item_size out of ctree.h Josef Bacik
2022-09-15  9:14   ` Qu Wenruo
2022-10-07 17:23     ` David Sterba
2022-09-15 14:19   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 10/17] btrfs: move btrfs_should_fragment_free_space into block-group.c Josef Bacik
2022-09-15  9:16   ` Qu Wenruo
2022-09-15 14:21   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 11/17] btrfs: move flush related definitions to space-info.h Josef Bacik
2022-09-15  9:21   ` Qu Wenruo
2022-10-07 17:28     ` David Sterba
2022-09-15 14:21   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 12/17] btrfs: move btrfs_print_data_csum_error into inode.c Josef Bacik
2022-09-15  9:22   ` Qu Wenruo
2022-10-07 17:31     ` David Sterba
2022-09-15 14:23   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 13/17] btrfs: move trans_handle_cachep out of ctree.h Josef Bacik
2022-09-15  9:23   ` Qu Wenruo
2022-09-15 14:24   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 14/17] btrfs: move btrfs_path_cachep " Josef Bacik
2022-09-15  9:27   ` Qu Wenruo
2022-09-15 14:27   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 15/17] btrfs: move free space cachep's " Josef Bacik
2022-09-15  9:27   ` Qu Wenruo
2022-09-15 14:27   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 16/17] btrfs: move btrfs_next_old_item into ctree.c Josef Bacik
2022-09-15  9:29   ` Qu Wenruo
2022-09-15 14:29   ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 17/17] btrfs: move the btrfs_verity_descriptor_item defs up in ctree.h Josef Bacik
2022-09-15  9:30   ` Qu Wenruo
2022-09-15 14:30   ` Johannes Thumshirn
2022-09-15  9:47 ` [PATCH 00/17] btrfs: initial ctree.h cleanups, simple stuff Qu Wenruo
2022-10-07 17:51   ` David Sterba

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=a67b963c-1f2a-bf68-c0b3-08dda678c629@suse.com \
    --to=wqu@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox