From: schumaker.anna@gmail.com
To: linux-nfs@vger.kernel.org
Cc: Anna.Schumaker@Netapp.com
Subject: [RFC PATCH 5/7] sunrpc: Create a per-rpc_clnt file for managing the IP address
Date: Mon, 11 Jan 2021 16:41:41 -0500 [thread overview]
Message-ID: <20210111214143.553479-6-Anna.Schumaker@Netapp.com> (raw)
In-Reply-To: <20210111214143.553479-1-Anna.Schumaker@Netapp.com>
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
And since we're using IP here, restrict to only creating sysfs files for
TCP and RDMA connections.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
---
net/sunrpc/sysfs.c | 32 ++++++++++++++++++++++++++++++++
net/sunrpc/sysfs.h | 1 +
2 files changed, 33 insertions(+)
diff --git a/net/sunrpc/sysfs.c b/net/sunrpc/sysfs.c
index dd298b9c13e8..537d83635670 100644
--- a/net/sunrpc/sysfs.c
+++ b/net/sunrpc/sysfs.c
@@ -3,6 +3,7 @@
* Copyright (c) 2020 Anna Schumaker <Anna.Schumaker@Netapp.com>
*/
#include <linux/sunrpc/clnt.h>
+#include <linux/sunrpc/addr.h>
#include <net/sock.h>
#include "sysfs.h"
@@ -55,6 +56,23 @@ int rpc_sysfs_init(void)
return 0;
}
+static ssize_t rpc_netns_address_show(struct kobject *kobj,
+ struct kobj_attribute *attr, char *buf)
+{
+ struct rpc_netns_client *c = container_of(kobj,
+ struct rpc_netns_client, kobject);
+ struct rpc_clnt *clnt = c->clnt;
+ struct rpc_xprt *xprt = rcu_dereference(clnt->cl_xprt);
+
+ return rpc_ntop((struct sockaddr *)&xprt->addr, buf, PAGE_SIZE);
+}
+
+static ssize_t rpc_netns_address_store(struct kobject *kobj,
+ struct kobj_attribute *attr, const char *buf, size_t count)
+{
+ return count;
+}
+
static void rpc_netns_client_release(struct kobject *kobj)
{
struct rpc_netns_client *c;
@@ -68,8 +86,17 @@ static const void *rpc_netns_client_namespace(struct kobject *kobj)
return container_of(kobj, struct rpc_netns_client, kobject)->net;
}
+static struct kobj_attribute rpc_netns_client_address = __ATTR(address,
+ 0644, rpc_netns_address_show, rpc_netns_address_store);
+
+static struct attribute *rpc_netns_client_attrs[] = {
+ &rpc_netns_client_address.attr,
+ NULL,
+};
+
static struct kobj_type rpc_netns_client_type = {
.release = rpc_netns_client_release,
+ .default_attrs = rpc_netns_client_attrs,
.sysfs_ops = &kobj_sysfs_ops,
.namespace = rpc_netns_client_namespace,
};
@@ -100,10 +127,15 @@ static struct rpc_netns_client *rpc_netns_client_alloc(struct kobject *parent,
void rpc_netns_sysfs_setup(struct rpc_clnt *clnt, struct net *net)
{
struct rpc_netns_client *rpc_client;
+ struct rpc_xprt *xprt = rcu_dereference(clnt->cl_xprt);
+
+ if (!(xprt->prot & (IPPROTO_TCP | XPRT_TRANSPORT_RDMA)))
+ return;
rpc_client = rpc_netns_client_alloc(rpc_client_kobj, net, clnt->cl_clid);
if (rpc_client) {
clnt->cl_sysfs = rpc_client;
+ rpc_client->clnt = clnt;
kobject_uevent(&rpc_client->kobject, KOBJ_ADD);
}
}
diff --git a/net/sunrpc/sysfs.h b/net/sunrpc/sysfs.h
index 279a836594e7..137a12c87954 100644
--- a/net/sunrpc/sysfs.h
+++ b/net/sunrpc/sysfs.h
@@ -8,6 +8,7 @@
struct rpc_netns_client {
struct kobject kobject;
struct net *net;
+ struct rpc_clnt *clnt;
};
extern struct kobject *rpc_client_kobj;
--
2.29.2
next prev parent reply other threads:[~2021-01-11 21:43 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-11 21:41 [RFC PATCH 0/7] SUNRPC: Create sysfs files for changing IP schumaker.anna
2021-01-11 21:41 ` [RFC PATCH 1/7] net: Add a /sys/net directory to sysfs schumaker.anna
2021-01-11 21:41 ` [RFC PATCH 2/7] sunrpc: Create a sunrpc directory under /sys/net/ schumaker.anna
2021-01-11 21:41 ` [RFC PATCH 3/7] sunrpc: Create a net/ subdirectory in the sunrpc sysfs schumaker.anna
2021-01-11 21:41 ` [RFC PATCH 4/7] sunrpc: Create per-rpc_clnt sysfs kobjects schumaker.anna
2021-01-11 21:41 ` schumaker.anna [this message]
2021-01-11 21:41 ` [RFC PATCH 6/7] sunrpc: Prepare xs_connect() for taking NULL tasks schumaker.anna
2021-01-11 21:41 ` [RFC PATCH 7/7] sunrpc: Connect to a new IP address provided by the user schumaker.anna
2021-01-12 13:09 ` [RFC PATCH 0/7] SUNRPC: Create sysfs files for changing IP Chuck Lever
2021-01-12 16:59 ` J. Bruce Fields
2021-01-13 19:23 ` Anna Schumaker
2021-01-13 19:48 ` Chuck Lever
2021-01-13 21:23 ` Chuck Lever
2021-01-14 20:29 ` Olga Kornievskaia
2021-01-19 15:55 ` Chuck Lever
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210111214143.553479-6-Anna.Schumaker@Netapp.com \
--to=schumaker.anna@gmail.com \
--cc=Anna.Schumaker@Netapp.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).