ceph-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support
@ 2021-09-28  6:06 Venky Shankar
  2021-09-28  6:06 ` [PATCH v3 1/2] libceph: export ceph_debugfs_dir for use in ceph.ko Venky Shankar
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Venky Shankar @ 2021-09-28  6:06 UTC (permalink / raw)
  To: jlayton, pdonnell; +Cc: ceph-devel, Venky Shankar

v3:
 - create mount syntax debugfs entries under /<>/ceph/meta/client_features directory
 - mount syntax debugfs file names are v1, v2,... (were v1_mount_sytnax,... earlier)

[This is based on top of new mount syntax series]

Patrick proposed the idea of having debugfs entries to signify if
kernel supports the new (v2) mount syntax. The primary use of this
information is to catch any bugs in the new syntax implementation.

This would be done as follows::

The userspace mount helper tries to mount using the new mount syntax
and fallsback to using old syntax if the mount using new syntax fails.
However, a bug in the new mount syntax implementation can silently
result in the mount helper switching to old syntax.

So, the debugfs entries can be relied upon by the mount helper to
check if the kernel supports the new mount syntax. Cases when the
mount using the new syntax fails, but the kernel does support the
new mount syntax, the mount helper could probably log before switching
to the old syntax (or fail the mount altogether when run in test mode).

Debugfs entries are as follows::

    /sys/kernel/debug/ceph/
    ....
    ....
    /sys/kernel/debug/ceph/meta
    /sys/kernel/debug/ceph/meta/client_features
    /sys/kernel/debug/ceph/meta/client_features/v2
    /sys/kernel/debug/ceph/meta/client_features/v1
    ....
    ....

Venky Shankar (2):
  libceph: export ceph_debugfs_dir for use in ceph.ko
  ceph: add debugfs entries for mount syntax support

 fs/ceph/debugfs.c            | 41 ++++++++++++++++++++++++++++++++++++
 fs/ceph/super.c              |  3 +++
 fs/ceph/super.h              |  2 ++
 include/linux/ceph/debugfs.h |  2 ++
 net/ceph/debugfs.c           |  3 ++-
 5 files changed, 50 insertions(+), 1 deletion(-)

-- 
2.27.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] libceph: export ceph_debugfs_dir for use in ceph.ko
  2021-09-28  6:06 [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support Venky Shankar
@ 2021-09-28  6:06 ` Venky Shankar
  2021-09-28  6:06 ` [PATCH v3 2/2] ceph: add debugfs entries for mount syntax support Venky Shankar
  2021-09-30 11:28 ` [PATCH v3 0/2] ceph: add debugfs entries signifying new " Jeff Layton
  2 siblings, 0 replies; 5+ messages in thread
From: Venky Shankar @ 2021-09-28  6:06 UTC (permalink / raw)
  To: jlayton, pdonnell; +Cc: ceph-devel, Venky Shankar

Signed-off-by: Venky Shankar <vshankar@redhat.com>
---
 include/linux/ceph/debugfs.h | 2 ++
 net/ceph/debugfs.c           | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/linux/ceph/debugfs.h b/include/linux/ceph/debugfs.h
index 8b3a1a7a953a..464c7dfced87 100644
--- a/include/linux/ceph/debugfs.h
+++ b/include/linux/ceph/debugfs.h
@@ -4,6 +4,8 @@
 
 #include <linux/ceph/types.h>
 
+extern struct dentry *ceph_debugfs_dir;
+
 /* debugfs.c */
 extern void ceph_debugfs_init(void);
 extern void ceph_debugfs_cleanup(void);
diff --git a/net/ceph/debugfs.c b/net/ceph/debugfs.c
index 2110439f8a24..774e0c0fd18a 100644
--- a/net/ceph/debugfs.c
+++ b/net/ceph/debugfs.c
@@ -29,7 +29,8 @@
  *      .../bdi         - symlink to ../../bdi/something
  */
 
-static struct dentry *ceph_debugfs_dir;
+struct dentry *ceph_debugfs_dir;
+EXPORT_SYMBOL(ceph_debugfs_dir);
 
 static int monmap_show(struct seq_file *s, void *p)
 {
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] ceph: add debugfs entries for mount syntax support
  2021-09-28  6:06 [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support Venky Shankar
  2021-09-28  6:06 ` [PATCH v3 1/2] libceph: export ceph_debugfs_dir for use in ceph.ko Venky Shankar
@ 2021-09-28  6:06 ` Venky Shankar
  2021-09-30 11:28 ` [PATCH v3 0/2] ceph: add debugfs entries signifying new " Jeff Layton
  2 siblings, 0 replies; 5+ messages in thread
From: Venky Shankar @ 2021-09-28  6:06 UTC (permalink / raw)
  To: jlayton, pdonnell; +Cc: ceph-devel, Venky Shankar

Signed-off-by: Venky Shankar <vshankar@redhat.com>
---
 fs/ceph/debugfs.c | 41 +++++++++++++++++++++++++++++++++++++++++
 fs/ceph/super.c   |  3 +++
 fs/ceph/super.h   |  2 ++
 3 files changed, 46 insertions(+)

diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
index 66989c880adb..e61004ec0207 100644
--- a/fs/ceph/debugfs.c
+++ b/fs/ceph/debugfs.c
@@ -22,6 +22,16 @@
 #include "mds_client.h"
 #include "metric.h"
 
+#define META_INFO_DIR_NAME         "meta"
+#define CLIENT_FEATURES_DIR_NAME   "client_features"
+#define MOUNT_DEVICE_V1_SUPPORT_FILE_NAME "v1"
+#define MOUNT_DEVICE_V2_SUPPORT_FILE_NAME "v2"
+
+static struct dentry *ceph_client_meta_dir;
+static struct dentry *ceph_client_features_dir;
+static struct dentry *ceph_mount_device_v1_support;
+static struct dentry *ceph_mount_device_v2_support;
+
 static int mdsmap_show(struct seq_file *s, void *p)
 {
 	int i;
@@ -416,6 +426,29 @@ void ceph_fs_debugfs_init(struct ceph_fs_client *fsc)
 						  &status_fops);
 }
 
+void ceph_fs_debugfs_client_features_init(void)
+{
+	ceph_client_meta_dir = debugfs_create_dir(META_INFO_DIR_NAME,
+						  ceph_debugfs_dir);
+	ceph_client_features_dir = debugfs_create_dir(CLIENT_FEATURES_DIR_NAME,
+						      ceph_client_meta_dir);
+	ceph_mount_device_v1_support = debugfs_create_file(MOUNT_DEVICE_V1_SUPPORT_FILE_NAME,
+							   0400,
+							   ceph_client_features_dir,
+							   NULL, NULL);
+	ceph_mount_device_v2_support = debugfs_create_file(MOUNT_DEVICE_V2_SUPPORT_FILE_NAME,
+							   0400,
+							   ceph_client_features_dir,
+							   NULL, NULL);
+}
+
+void ceph_fs_debugfs_client_features_cleanup(void)
+{
+	debugfs_remove(ceph_mount_device_v1_support);
+	debugfs_remove(ceph_mount_device_v2_support);
+	debugfs_remove(ceph_client_features_dir);
+	debugfs_remove(ceph_client_meta_dir);
+}
 
 #else  /* CONFIG_DEBUG_FS */
 
@@ -427,4 +460,12 @@ void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc)
 {
 }
 
+void ceph_fs_debugfs_client_features_init(void)
+{
+}
+
+void ceph_fs_debugfs_client_features_cleanup(void)
+{
+}
+
 #endif  /* CONFIG_DEBUG_FS */
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index 609ffc8c2d78..21d59deb042d 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_client_features_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_client_features_cleanup();
 	unregister_filesystem(&ceph_fs_type);
 	destroy_caches();
 }
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 8f71184b7c85..7e7b140cab5d 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_client_features_init(void);
+extern void ceph_fs_debugfs_client_features_cleanup(void);
 
 /* quota.c */
 static inline bool __ceph_has_any_quota(struct ceph_inode_info *ci)
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support
  2021-09-28  6:06 [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support Venky Shankar
  2021-09-28  6:06 ` [PATCH v3 1/2] libceph: export ceph_debugfs_dir for use in ceph.ko Venky Shankar
  2021-09-28  6:06 ` [PATCH v3 2/2] ceph: add debugfs entries for mount syntax support Venky Shankar
@ 2021-09-30 11:28 ` Jeff Layton
  2021-09-30 13:22   ` Venky Shankar
  2 siblings, 1 reply; 5+ messages in thread
From: Jeff Layton @ 2021-09-30 11:28 UTC (permalink / raw)
  To: Venky Shankar, pdonnell; +Cc: ceph-devel

On Tue, 2021-09-28 at 11:36 +0530, Venky Shankar wrote:
> v3:
>  - create mount syntax debugfs entries under /<>/ceph/meta/client_features directory
>  - mount syntax debugfs file names are v1, v2,... (were v1_mount_sytnax,... earlier)
> 
> [This is based on top of new mount syntax series]
> 
> Patrick proposed the idea of having debugfs entries to signify if
> kernel supports the new (v2) mount syntax. The primary use of this
> information is to catch any bugs in the new syntax implementation.
> 
> This would be done as follows::
> 
> The userspace mount helper tries to mount using the new mount syntax
> and fallsback to using old syntax if the mount using new syntax fails.
> However, a bug in the new mount syntax implementation can silently
> result in the mount helper switching to old syntax.
> 
> So, the debugfs entries can be relied upon by the mount helper to
> check if the kernel supports the new mount syntax. Cases when the
> mount using the new syntax fails, but the kernel does support the
> new mount syntax, the mount helper could probably log before switching
> to the old syntax (or fail the mount altogether when run in test mode).
> 
> Debugfs entries are as follows::
> 
>     /sys/kernel/debug/ceph/
>     ....
>     ....
>     /sys/kernel/debug/ceph/meta
>     /sys/kernel/debug/ceph/meta/client_features
>     /sys/kernel/debug/ceph/meta/client_features/v2
>     /sys/kernel/debug/ceph/meta/client_features/v1
>     ....
>     ....
> 

The patches look fine, technically, so I think we're down to the
bikeshedding here.

My minor gripe is that "v1" and "v2" are not really client features.
Perhaps we should call these "mount_format_v1" or maybe
"mount_syntax_v1" ? I could forsee is advertising other features in this
dir in the future, and at that point "v1" and "v2" are somewhat
ambiguous for names.

Make sense?


> Venky Shankar (2):
>   libceph: export ceph_debugfs_dir for use in ceph.ko
>   ceph: add debugfs entries for mount syntax support
> 
>  fs/ceph/debugfs.c            | 41 ++++++++++++++++++++++++++++++++++++
>  fs/ceph/super.c              |  3 +++
>  fs/ceph/super.h              |  2 ++
>  include/linux/ceph/debugfs.h |  2 ++
>  net/ceph/debugfs.c           |  3 ++-
>  5 files changed, 50 insertions(+), 1 deletion(-)
> 

-- 
Jeff Layton <jlayton@redhat.com>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support
  2021-09-30 11:28 ` [PATCH v3 0/2] ceph: add debugfs entries signifying new " Jeff Layton
@ 2021-09-30 13:22   ` Venky Shankar
  0 siblings, 0 replies; 5+ messages in thread
From: Venky Shankar @ 2021-09-30 13:22 UTC (permalink / raw)
  To: Jeff Layton; +Cc: Patrick Donnelly, ceph-devel

On Thu, Sep 30, 2021 at 4:58 PM Jeff Layton <jlayton@redhat.com> wrote:
>
> On Tue, 2021-09-28 at 11:36 +0530, Venky Shankar wrote:
> > v3:
> >  - create mount syntax debugfs entries under /<>/ceph/meta/client_features directory
> >  - mount syntax debugfs file names are v1, v2,... (were v1_mount_sytnax,... earlier)
> >
> > [This is based on top of new mount syntax series]
> >
> > Patrick proposed the idea of having debugfs entries to signify if
> > kernel supports the new (v2) mount syntax. The primary use of this
> > information is to catch any bugs in the new syntax implementation.
> >
> > This would be done as follows::
> >
> > The userspace mount helper tries to mount using the new mount syntax
> > and fallsback to using old syntax if the mount using new syntax fails.
> > However, a bug in the new mount syntax implementation can silently
> > result in the mount helper switching to old syntax.
> >
> > So, the debugfs entries can be relied upon by the mount helper to
> > check if the kernel supports the new mount syntax. Cases when the
> > mount using the new syntax fails, but the kernel does support the
> > new mount syntax, the mount helper could probably log before switching
> > to the old syntax (or fail the mount altogether when run in test mode).
> >
> > Debugfs entries are as follows::
> >
> >     /sys/kernel/debug/ceph/
> >     ....
> >     ....
> >     /sys/kernel/debug/ceph/meta
> >     /sys/kernel/debug/ceph/meta/client_features
> >     /sys/kernel/debug/ceph/meta/client_features/v2
> >     /sys/kernel/debug/ceph/meta/client_features/v1
> >     ....
> >     ....
> >
>
> The patches look fine, technically, so I think we're down to the
> bikeshedding here.
>
> My minor gripe is that "v1" and "v2" are not really client features.
> Perhaps we should call these "mount_format_v1" or maybe
> "mount_syntax_v1" ? I could forsee is advertising other features in this
> dir in the future, and at that point "v1" and "v2" are somewhat
> ambiguous for names.
>
> Make sense?

Doh! I changed this from "v1_mount_syntax" to just "v1" ;P

Let's call it mount_syntax_v1,..

>
>
> > Venky Shankar (2):
> >   libceph: export ceph_debugfs_dir for use in ceph.ko
> >   ceph: add debugfs entries for mount syntax support
> >
> >  fs/ceph/debugfs.c            | 41 ++++++++++++++++++++++++++++++++++++
> >  fs/ceph/super.c              |  3 +++
> >  fs/ceph/super.h              |  2 ++
> >  include/linux/ceph/debugfs.h |  2 ++
> >  net/ceph/debugfs.c           |  3 ++-
> >  5 files changed, 50 insertions(+), 1 deletion(-)
> >
>
> --
> Jeff Layton <jlayton@redhat.com>
>


-- 
Cheers,
Venky


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-30 13:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28  6:06 [PATCH v3 0/2] ceph: add debugfs entries signifying new mount syntax support Venky Shankar
2021-09-28  6:06 ` [PATCH v3 1/2] libceph: export ceph_debugfs_dir for use in ceph.ko Venky Shankar
2021-09-28  6:06 ` [PATCH v3 2/2] ceph: add debugfs entries for mount syntax support Venky Shankar
2021-09-30 11:28 ` [PATCH v3 0/2] ceph: add debugfs entries signifying new " Jeff Layton
2021-09-30 13:22   ` Venky Shankar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).