Message ID | 20210818060134.208546-3-vshankar@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ceph: add debugfs entries signifying new mount syntax support | expand |
On Wed, Aug 18, 2021 at 2:01 AM Venky Shankar <vshankar@redhat.com> wrote: > > [...] Is "debugfs" the right place for this? I do wonder if that can be dropped/disabled via some obscure kernel config? Also "debugX" doesn't sound like the proper place for a feature flag of the kernel. I just did a quick check on my system and I do see: $ ls /sys/fs/ext4/features batched_discard casefold encryption fast_commit lazy_itable_init meta_bg_resize metadata_csum_seed test_dummy_encryption_v2 verity Perhaps we need something similar for fs/ceph?
On Sat, Aug 21, 2021 at 7:23 AM Patrick Donnelly <pdonnell@redhat.com> wrote: > > On Wed, Aug 18, 2021 at 2:01 AM Venky Shankar <vshankar@redhat.com> wrote: > > > > [...] > > Is "debugfs" the right place for this? I do wonder if that can be > dropped/disabled via some obscure kernel config? The primary use for this (v2 syntax entry) is for catching bugs in v2 mount syntax implementation which sounds more like a form of "debugging". Sysfs represents the whole device model as seen from the kernel. And, sysfs is optional too (CONFIG_SYSFS). > > Also "debugX" doesn't sound like the proper place for a feature flag > of the kernel. I just did a quick check on my system and I do see: > > $ ls /sys/fs/ext4/features > batched_discard casefold encryption fast_commit lazy_itable_init > meta_bg_resize metadata_csum_seed test_dummy_encryption_v2 verity > > Perhaps we need something similar for fs/ceph? > > -- > Patrick Donnelly, Ph.D. > He / Him / His > Principal Software Engineer > Red Hat Sunnyvale, CA > GPG: 19F28A586F808C2402351B93C3301A3E258DD79D >
On Mon, Aug 23, 2021 at 10:15 AM Venky Shankar <vshankar@redhat.com> wrote: > > On Sat, Aug 21, 2021 at 7:23 AM Patrick Donnelly <pdonnell@redhat.com> wrote: > > > > On Wed, Aug 18, 2021 at 2:01 AM Venky Shankar <vshankar@redhat.com> wrote: > > > > > > [...] > > > > Is "debugfs" the right place for this? I do wonder if that can be > > dropped/disabled via some obscure kernel config? > > The primary use for this (v2 syntax entry) is for catching bugs in v2 > mount syntax implementation which sounds more like a form of > "debugging". Sysfs represents the whole device model as seen from the > kernel. So, Jeff in another thread suggested that we make these debugfs entries generic (client_features). In that case, I'm ok with having these in sysfs. > > And, sysfs is optional too (CONFIG_SYSFS). > > > > > Also "debugX" doesn't sound like the proper place for a feature flag > > of the kernel. I just did a quick check on my system and I do see: > > > > $ ls /sys/fs/ext4/features > > batched_discard casefold encryption fast_commit lazy_itable_init > > meta_bg_resize metadata_csum_seed test_dummy_encryption_v2 verity > > > > Perhaps we need something similar for fs/ceph? > > > > -- > > Patrick Donnelly, Ph.D. > > He / Him / His > > Principal Software Engineer > > Red Hat Sunnyvale, CA > > GPG: 19F28A586F808C2402351B93C3301A3E258DD79D > > > > > -- > Cheers, > Venky
On Mon, 2021-08-23 at 11:01 +0530, Venky Shankar wrote: > On Mon, Aug 23, 2021 at 10:15 AM Venky Shankar <vshankar@redhat.com> wrote: > > > > On Sat, Aug 21, 2021 at 7:23 AM Patrick Donnelly <pdonnell@redhat.com> wrote: > > > > > > On Wed, Aug 18, 2021 at 2:01 AM Venky Shankar <vshankar@redhat.com> wrote: > > > > > > > > [...] > > > > > > Is "debugfs" the right place for this? I do wonder if that can be > > > dropped/disabled via some obscure kernel config? > > > > The primary use for this (v2 syntax entry) is for catching bugs in v2 > > mount syntax implementation which sounds more like a form of > > "debugging". Sysfs represents the whole device model as seen from the > > kernel. > > So, Jeff in another thread suggested that we make these debugfs > entries generic (client_features). In that case, I'm ok with having > these in sysfs. > I think debugfs is fine for this. This is mainly for teuthology, and in that case we'll have debugfs available. One of the reasons to use debugfs here is that stuff in there is specifically _not_ considered part of the kernel's ABI, so we can more easily make changes to it in the future w/o worrying as much about backward compatibility. > > > > And, sysfs is optional too (CONFIG_SYSFS). > > > > > > > > Also "debugX" doesn't sound like the proper place for a feature flag > > > of the kernel. I just did a quick check on my system and I do see: > > > > > > $ ls /sys/fs/ext4/features > > > batched_discard casefold encryption fast_commit lazy_itable_init > > > meta_bg_resize metadata_csum_seed test_dummy_encryption_v2 verity > > > > > > Perhaps we need something similar for fs/ceph? > > > > > > -- > > > Patrick Donnelly, Ph.D. > > > He / Him / His > > > Principal Software Engineer > > > Red Hat Sunnyvale, CA > > > GPG: 19F28A586F808C2402351B93C3301A3E258DD79D > > > > > > > > > -- > > Cheers, > > Venky > > >
diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c index 66989c880adb..d19f15ace781 100644 --- a/fs/ceph/debugfs.c +++ b/fs/ceph/debugfs.c @@ -22,6 +22,12 @@ #include "mds_client.h" #include "metric.h" +#define MNT_DEV_SUPPORT_DIR "dev_support" +#define MNT_DEV_V2_FILE "v2" + +static struct dentry *ceph_mnt_dev_support_dir; +static struct dentry *ceph_mnt_dev_v2_file; + static int mdsmap_show(struct seq_file *s, void *p) { int i; @@ -416,6 +422,20 @@ void ceph_fs_debugfs_init(struct ceph_fs_client *fsc) &status_fops); } +void ceph_fs_debugfs_mnt_dev_init(void) +{ + ceph_mnt_dev_support_dir = ceph_debugfs_create_subdir(MNT_DEV_SUPPORT_DIR); + ceph_mnt_dev_v2_file = debugfs_create_file(MNT_DEV_V2_FILE, + 0400, + ceph_mnt_dev_support_dir, + NULL, NULL); +} + +void ceph_fs_debugfs_mnt_dev_cleanup(void) +{ + debugfs_remove(ceph_mnt_dev_v2_file); + ceph_debugfs_cleanup_subdir(ceph_mnt_dev_support_dir); +} #else /* CONFIG_DEBUG_FS */ @@ -427,4 +447,12 @@ void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc) { } +void ceph_fs_debugfs_mnt_dev_init(void) +{ +} + +void ceph_fs_debugfs_mnt_dev_cleanup(void) +{ +} + #endif /* CONFIG_DEBUG_FS */ diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 609ffc8c2d78..21e4a8249afd 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -1404,6 +1404,8 @@ static int __init init_ceph(void) if (ret) goto out_caches; + ceph_fs_debugfs_mnt_dev_init(); + pr_info("loaded (mds proto %d)\n", CEPH_MDSC_PROTOCOL); return 0; @@ -1417,6 +1419,7 @@ static int __init init_ceph(void) static void __exit exit_ceph(void) { dout("exit_ceph\n"); + ceph_fs_debugfs_mnt_dev_cleanup(); unregister_filesystem(&ceph_fs_type); destroy_caches(); } diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 8f71184b7c85..3c63c1adcfaa 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1231,6 +1231,8 @@ extern int ceph_locks_to_pagelist(struct ceph_filelock *flocks, /* debugfs.c */ extern void ceph_fs_debugfs_init(struct ceph_fs_client *client); extern void ceph_fs_debugfs_cleanup(struct ceph_fs_client *client); +extern void ceph_fs_debugfs_mnt_dev_init(void); +extern void ceph_fs_debugfs_mnt_dev_cleanup(void); /* quota.c */ static inline bool __ceph_has_any_quota(struct ceph_inode_info *ci)
Signed-off-by: Venky Shankar <vshankar@redhat.com> --- fs/ceph/debugfs.c | 28 ++++++++++++++++++++++++++++ fs/ceph/super.c | 3 +++ fs/ceph/super.h | 2 ++ 3 files changed, 33 insertions(+)