nfsd: add more information to client info file
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 19 Jun 2019 16:39:46 +0000 (12:39 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Wed, 3 Jul 2019 21:52:50 +0000 (17:52 -0400)
Add ip address, full client-provided identifier, and minor version.
There's much more that could possibly be useful but this is a start.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c

index c2cbf14e010d3aa8a563fde461c6b49c85215ece..ed14572e739c4c03a88e1c6dc2caf9df801d25d3 100644 (file)
@@ -42,6 +42,7 @@
 #include <linux/sunrpc/svcauth_gss.h>
 #include <linux/sunrpc/addr.h>
 #include <linux/jhash.h>
+#include <linux/string_helpers.h>
 #include "xdr4.h"
 #include "xdr4cb.h"
 #include "vfs.h"
@@ -2214,6 +2215,13 @@ find_stateid_by_type(struct nfs4_client *cl, stateid_t *t, char typemask)
        return s;
 }
 
+static void seq_quote_mem(struct seq_file *m, char *data, int len)
+{
+       seq_printf(m, "\"");
+       seq_escape_mem_ascii(m, data, len);
+       seq_printf(m, "\"");
+}
+
 static int client_info_show(struct seq_file *m, void *v)
 {
        struct inode *inode = m->private;
@@ -2227,6 +2235,10 @@ static int client_info_show(struct seq_file *m, void *v)
        clp = container_of(nc, struct nfs4_client, cl_nfsdfs);
        memcpy(&clid, &clp->cl_clientid, sizeof(clid));
        seq_printf(m, "clientid: 0x%llx\n", clid);
+       seq_printf(m, "address: \"%pISpc\"\n", (struct sockaddr *)&clp->cl_addr);
+       seq_printf(m, "name: ");
+       seq_quote_mem(m, clp->cl_name.data, clp->cl_name.len);
+       seq_printf(m, "\nminor version: %d\n", clp->cl_minorversion);
        drop_client(clp);
 
        return 0;