diff mbox series

[v2] btrfs: split out CONFIG_BTRFS_EXPERIMENTAL from CONFIG_BTRFS_DEBUG

Message ID 97b513c38b3d6357b8e51b64c5e06a2a89015ab3.1726640060.git.wqu@suse.com (mailing list archive)
State New
Headers show
Series [v2] btrfs: split out CONFIG_BTRFS_EXPERIMENTAL from CONFIG_BTRFS_DEBUG | expand

Commit Message

Qu Wenruo Sept. 18, 2024, 6:14 a.m. UTC
Currently CONFIG_BTRFS_EXPERIMENTAL is not only for the extra debugging
output, but also for experimental features.

This is not ideal to distinguish planned but not yet stable features
from those purely designed for debug.

This patch will split the following features into
CONFIG_BTRFS_EXPERIMENTAL:

- Extent map shrinker
  This seems to be the first one to exit experimental.

- Extent tree v2
  This seems to be the last one to graduate from experimental.

- Raid stripe tree
- Csum offload mode
- Send stream v3

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
Changelog:
v2:
- Fix the "string" -> "stream" error in the commit message
- Move extent_tree_v2 and raid_stripe_tree sysfs interfaces to
  CONFIG_BTRFS_EXPERIMENTAL
- Add experimental string to mod info
---
 fs/btrfs/Kconfig   | 9 +++++++++
 fs/btrfs/bio.c     | 2 +-
 fs/btrfs/fs.h      | 4 ++--
 fs/btrfs/send.h    | 2 +-
 fs/btrfs/super.c   | 9 ++++++---
 fs/btrfs/sysfs.c   | 8 ++++----
 fs/btrfs/volumes.h | 4 ++--
 7 files changed, 25 insertions(+), 13 deletions(-)

Comments

Qu Wenruo Sept. 18, 2024, 6:42 a.m. UTC | #1
在 2024/9/18 15:44, Qu Wenruo 写道:
> Currently CONFIG_BTRFS_EXPERIMENTAL is not only for the extra debugging

s/EXPERIMENTAL/DEBUG/

Already done in my local branch.

Thanks,
Qu

> output, but also for experimental features.
> 
> This is not ideal to distinguish planned but not yet stable features
> from those purely designed for debug.
> 
> This patch will split the following features into
> CONFIG_BTRFS_EXPERIMENTAL:
> 
> - Extent map shrinker
>    This seems to be the first one to exit experimental.
> 
> - Extent tree v2
>    This seems to be the last one to graduate from experimental.
> 
> - Raid stripe tree
> - Csum offload mode
> - Send stream v3
> 
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Signed-off-by: Qu Wenruo <wqu@suse.com>
> ---
> Changelog:
> v2:
> - Fix the "string" -> "stream" error in the commit message
> - Move extent_tree_v2 and raid_stripe_tree sysfs interfaces to
>    CONFIG_BTRFS_EXPERIMENTAL
> - Add experimental string to mod info
> ---
>   fs/btrfs/Kconfig   | 9 +++++++++
>   fs/btrfs/bio.c     | 2 +-
>   fs/btrfs/fs.h      | 4 ++--
>   fs/btrfs/send.h    | 2 +-
>   fs/btrfs/super.c   | 9 ++++++---
>   fs/btrfs/sysfs.c   | 8 ++++----
>   fs/btrfs/volumes.h | 4 ++--
>   7 files changed, 25 insertions(+), 13 deletions(-)
> 
> diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
> index 4fb925e8c981..ead317f1eeb8 100644
> --- a/fs/btrfs/Kconfig
> +++ b/fs/btrfs/Kconfig
> @@ -78,6 +78,15 @@ config BTRFS_ASSERT
>   
>   	  If unsure, say N.
>   
> +config BTRFS_EXPERIMENTAL
> +	bool "Btrfs experimental features"
> +	depends on BTRFS_FS
> +	help
> +	  Enable experimental features.  These features may not be stable enough
> +	  for end users.  This is meant for btrfs developers only.
> +
> +	  If unsure, say N.
> +
>   config BTRFS_FS_REF_VERIFY
>   	bool "Btrfs with the ref verify tool compiled in"
>   	depends on BTRFS_FS
> diff --git a/fs/btrfs/bio.c b/fs/btrfs/bio.c
> index ce13416bc10f..056f8a171bba 100644
> --- a/fs/btrfs/bio.c
> +++ b/fs/btrfs/bio.c
> @@ -605,7 +605,7 @@ static bool should_async_write(struct btrfs_bio *bbio)
>   {
>   	bool auto_csum_mode = true;
>   
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   	struct btrfs_fs_devices *fs_devices = bbio->fs_info->fs_devices;
>   	enum btrfs_offload_csum_mode csum_mode = READ_ONCE(fs_devices->offload_csum_mode);
>   
> diff --git a/fs/btrfs/fs.h b/fs/btrfs/fs.h
> index cbfb225858a5..785ec15c1b84 100644
> --- a/fs/btrfs/fs.h
> +++ b/fs/btrfs/fs.h
> @@ -263,10 +263,10 @@ enum {
>   	 BTRFS_FEATURE_INCOMPAT_ZONED		|	\
>   	 BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA)
>   
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   	/*
>   	 * Features under developmen like Extent tree v2 support is enabled
> -	 * only under CONFIG_BTRFS_DEBUG.
> +	 * only under CONFIG_BTRFS_EXPERIMENTAL
>   	 */
>   #define BTRFS_FEATURE_INCOMPAT_SUPP		\
>   	(BTRFS_FEATURE_INCOMPAT_SUPP_STABLE |	\
> diff --git a/fs/btrfs/send.h b/fs/btrfs/send.h
> index b07f4aa66878..9309886c5ea1 100644
> --- a/fs/btrfs/send.h
> +++ b/fs/btrfs/send.h
> @@ -16,7 +16,7 @@ struct btrfs_ioctl_send_args;
>   
>   #define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
>   /* Conditional support for the upcoming protocol version. */
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   #define BTRFS_SEND_STREAM_VERSION 3
>   #else
>   #define BTRFS_SEND_STREAM_VERSION 2
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index 98fa0f382480..7f86fb54981f 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -2403,10 +2403,10 @@ static long btrfs_nr_cached_objects(struct super_block *sb, struct shrink_contro
>   	trace_btrfs_extent_map_shrinker_count(fs_info, nr);
>   
>   	/*
> -	 * Only report the real number for DEBUG builds, as there are reports of
> -	 * serious performance degradation caused by too frequent shrinks.
> +	 * Only report the real number for EXPERIMENTAL builds, as there are
> +	 * reports of serious performance degradation caused by too frequent shrinks.
>   	 */
> -	if (IS_ENABLED(CONFIG_BTRFS_DEBUG))
> +	if (IS_ENABLED(CONFIG_BTRFS_EXPERIMENTAL))
>   		return nr;
>   	return 0;
>   }
> @@ -2478,6 +2478,9 @@ static int __init btrfs_print_mod_info(void)
>   #ifdef CONFIG_BTRFS_DEBUG
>   			", debug=on"
>   #endif
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
> +			", experimental=on"
> +#endif
>   #ifdef CONFIG_BTRFS_ASSERT
>   			", assert=on"
>   #endif
> diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
> index 03926ad467c9..fdcbf650ac31 100644
> --- a/fs/btrfs/sysfs.c
> +++ b/fs/btrfs/sysfs.c
> @@ -295,7 +295,7 @@ BTRFS_FEAT_ATTR_INCOMPAT(simple_quota, SIMPLE_QUOTA);
>   #ifdef CONFIG_BLK_DEV_ZONED
>   BTRFS_FEAT_ATTR_INCOMPAT(zoned, ZONED);
>   #endif
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   /* Remove once support for extent tree v2 is feature complete */
>   BTRFS_FEAT_ATTR_INCOMPAT(extent_tree_v2, EXTENT_TREE_V2);
>   /* Remove once support for raid stripe tree is feature complete. */
> @@ -329,7 +329,7 @@ static struct attribute *btrfs_supported_feature_attrs[] = {
>   #ifdef CONFIG_BLK_DEV_ZONED
>   	BTRFS_FEAT_ATTR_PTR(zoned),
>   #endif
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   	BTRFS_FEAT_ATTR_PTR(extent_tree_v2),
>   	BTRFS_FEAT_ATTR_PTR(raid_stripe_tree),
>   #endif
> @@ -1390,7 +1390,7 @@ static ssize_t btrfs_bg_reclaim_threshold_store(struct kobject *kobj,
>   BTRFS_ATTR_RW(, bg_reclaim_threshold, btrfs_bg_reclaim_threshold_show,
>   	      btrfs_bg_reclaim_threshold_store);
>   
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   static ssize_t btrfs_offload_csum_show(struct kobject *kobj,
>   				       struct kobj_attribute *a, char *buf)
>   {
> @@ -1450,7 +1450,7 @@ static const struct attribute *btrfs_attrs[] = {
>   	BTRFS_ATTR_PTR(, bg_reclaim_threshold),
>   	BTRFS_ATTR_PTR(, commit_stats),
>   	BTRFS_ATTR_PTR(, temp_fsid),
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   	BTRFS_ATTR_PTR(, offload_csum),
>   #endif
>   	NULL,
> diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
> index 03d2d60afe0c..c207c94a4a5e 100644
> --- a/fs/btrfs/volumes.h
> +++ b/fs/btrfs/volumes.h
> @@ -300,7 +300,7 @@ enum btrfs_read_policy {
>   	BTRFS_NR_READ_POLICY,
>   };
>   
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   /*
>    * Checksum mode - offload it to workqueues or do it synchronously in
>    * btrfs_submit_chunk().
> @@ -424,7 +424,7 @@ struct btrfs_fs_devices {
>   	/* Policy used to read the mirrored stripes. */
>   	enum btrfs_read_policy read_policy;
>   
> -#ifdef CONFIG_BTRFS_DEBUG
> +#ifdef CONFIG_BTRFS_EXPERIMENTAL
>   	/* Checksum mode - offload it or do it synchronously. */
>   	enum btrfs_offload_csum_mode offload_csum_mode;
>   #endif
diff mbox series

Patch

diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
index 4fb925e8c981..ead317f1eeb8 100644
--- a/fs/btrfs/Kconfig
+++ b/fs/btrfs/Kconfig
@@ -78,6 +78,15 @@  config BTRFS_ASSERT
 
 	  If unsure, say N.
 
+config BTRFS_EXPERIMENTAL
+	bool "Btrfs experimental features"
+	depends on BTRFS_FS
+	help
+	  Enable experimental features.  These features may not be stable enough
+	  for end users.  This is meant for btrfs developers only.
+
+	  If unsure, say N.
+
 config BTRFS_FS_REF_VERIFY
 	bool "Btrfs with the ref verify tool compiled in"
 	depends on BTRFS_FS
diff --git a/fs/btrfs/bio.c b/fs/btrfs/bio.c
index ce13416bc10f..056f8a171bba 100644
--- a/fs/btrfs/bio.c
+++ b/fs/btrfs/bio.c
@@ -605,7 +605,7 @@  static bool should_async_write(struct btrfs_bio *bbio)
 {
 	bool auto_csum_mode = true;
 
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 	struct btrfs_fs_devices *fs_devices = bbio->fs_info->fs_devices;
 	enum btrfs_offload_csum_mode csum_mode = READ_ONCE(fs_devices->offload_csum_mode);
 
diff --git a/fs/btrfs/fs.h b/fs/btrfs/fs.h
index cbfb225858a5..785ec15c1b84 100644
--- a/fs/btrfs/fs.h
+++ b/fs/btrfs/fs.h
@@ -263,10 +263,10 @@  enum {
 	 BTRFS_FEATURE_INCOMPAT_ZONED		|	\
 	 BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA)
 
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 	/*
 	 * Features under developmen like Extent tree v2 support is enabled
-	 * only under CONFIG_BTRFS_DEBUG.
+	 * only under CONFIG_BTRFS_EXPERIMENTAL
 	 */
 #define BTRFS_FEATURE_INCOMPAT_SUPP		\
 	(BTRFS_FEATURE_INCOMPAT_SUPP_STABLE |	\
diff --git a/fs/btrfs/send.h b/fs/btrfs/send.h
index b07f4aa66878..9309886c5ea1 100644
--- a/fs/btrfs/send.h
+++ b/fs/btrfs/send.h
@@ -16,7 +16,7 @@  struct btrfs_ioctl_send_args;
 
 #define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
 /* Conditional support for the upcoming protocol version. */
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 #define BTRFS_SEND_STREAM_VERSION 3
 #else
 #define BTRFS_SEND_STREAM_VERSION 2
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 98fa0f382480..7f86fb54981f 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -2403,10 +2403,10 @@  static long btrfs_nr_cached_objects(struct super_block *sb, struct shrink_contro
 	trace_btrfs_extent_map_shrinker_count(fs_info, nr);
 
 	/*
-	 * Only report the real number for DEBUG builds, as there are reports of
-	 * serious performance degradation caused by too frequent shrinks.
+	 * Only report the real number for EXPERIMENTAL builds, as there are
+	 * reports of serious performance degradation caused by too frequent shrinks.
 	 */
-	if (IS_ENABLED(CONFIG_BTRFS_DEBUG))
+	if (IS_ENABLED(CONFIG_BTRFS_EXPERIMENTAL))
 		return nr;
 	return 0;
 }
@@ -2478,6 +2478,9 @@  static int __init btrfs_print_mod_info(void)
 #ifdef CONFIG_BTRFS_DEBUG
 			", debug=on"
 #endif
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
+			", experimental=on"
+#endif
 #ifdef CONFIG_BTRFS_ASSERT
 			", assert=on"
 #endif
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index 03926ad467c9..fdcbf650ac31 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -295,7 +295,7 @@  BTRFS_FEAT_ATTR_INCOMPAT(simple_quota, SIMPLE_QUOTA);
 #ifdef CONFIG_BLK_DEV_ZONED
 BTRFS_FEAT_ATTR_INCOMPAT(zoned, ZONED);
 #endif
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 /* Remove once support for extent tree v2 is feature complete */
 BTRFS_FEAT_ATTR_INCOMPAT(extent_tree_v2, EXTENT_TREE_V2);
 /* Remove once support for raid stripe tree is feature complete. */
@@ -329,7 +329,7 @@  static struct attribute *btrfs_supported_feature_attrs[] = {
 #ifdef CONFIG_BLK_DEV_ZONED
 	BTRFS_FEAT_ATTR_PTR(zoned),
 #endif
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 	BTRFS_FEAT_ATTR_PTR(extent_tree_v2),
 	BTRFS_FEAT_ATTR_PTR(raid_stripe_tree),
 #endif
@@ -1390,7 +1390,7 @@  static ssize_t btrfs_bg_reclaim_threshold_store(struct kobject *kobj,
 BTRFS_ATTR_RW(, bg_reclaim_threshold, btrfs_bg_reclaim_threshold_show,
 	      btrfs_bg_reclaim_threshold_store);
 
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 static ssize_t btrfs_offload_csum_show(struct kobject *kobj,
 				       struct kobj_attribute *a, char *buf)
 {
@@ -1450,7 +1450,7 @@  static const struct attribute *btrfs_attrs[] = {
 	BTRFS_ATTR_PTR(, bg_reclaim_threshold),
 	BTRFS_ATTR_PTR(, commit_stats),
 	BTRFS_ATTR_PTR(, temp_fsid),
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 	BTRFS_ATTR_PTR(, offload_csum),
 #endif
 	NULL,
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index 03d2d60afe0c..c207c94a4a5e 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -300,7 +300,7 @@  enum btrfs_read_policy {
 	BTRFS_NR_READ_POLICY,
 };
 
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 /*
  * Checksum mode - offload it to workqueues or do it synchronously in
  * btrfs_submit_chunk().
@@ -424,7 +424,7 @@  struct btrfs_fs_devices {
 	/* Policy used to read the mirrored stripes. */
 	enum btrfs_read_policy read_policy;
 
-#ifdef CONFIG_BTRFS_DEBUG
+#ifdef CONFIG_BTRFS_EXPERIMENTAL
 	/* Checksum mode - offload it or do it synchronously. */
 	enum btrfs_offload_csum_mode offload_csum_mode;
 #endif