Message ID | 97b513c38b3d6357b8e51b64c5e06a2a89015ab3.1726640060.git.wqu@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] btrfs: split out CONFIG_BTRFS_EXPERIMENTAL from CONFIG_BTRFS_DEBUG | expand |
在 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 --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