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
next prev parent 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