On Tue, Jan 12, 2021 at 11:59 AM J. Bruce Fields <bfields@xxxxxxxxxxxx> wrote: > > On Tue, Jan 12, 2021 at 08:09:09AM -0500, Chuck Lever wrote: > > Hi Anna- > > > > > On Jan 11, 2021, at 4:41 PM, schumaker.anna@xxxxxxxxx wrote: > > > > > > From: Anna Schumaker <Anna.Schumaker@xxxxxxxxxx> > > > > > > It's possible for an NFS server to go down but come back up with a > > > different IP address. These patches provide a way for administrators to > > > handle this issue by providing a new IP address for xprt sockets to > > > connect to. > > > > > > This is a first draft of the code, so any thoughts or suggestions would > > > be greatly appreciated! > > > > One implementation question, one future question. > > > > Would /sys/kernel/net be a little better? or /sys/kernel/sunrpc ? Possibly! I was trying to match /sys/fs/nfs, but I can definitely change this if another location is better. > > > > Do you have a plan to integrate support for fs_locations to probe > > servers for alternate IP addresses? Would that be a userspace > > utility that would plug values into this new /sys API? Yeah, I would expect there to be a new utility to help with assigning new values. I haven't given any thought to using fs_locations yet, but it could probably work. > > We already have dns resolution for fs_locations, right? Why can't we > use that here? Is it that the mount call doesn't give us a host name? > Or we don't trust dns to have the updated IP address for some reason? The mount call doesn't give us a host name (that I can find, at least). By the time we get to the sunrpc layer we're dealing with just the IP address anyway. I'd expect there to be a userland utility to translate the dns name to the new IP address and pass it along to the new API. Anna > > --b. > > > > > > > > Anna > > > > > > > > > Anna Schumaker (7): > > > net: Add a /sys/net directory to sysfs > > > sunrpc: Create a sunrpc directory under /sys/net/ > > > sunrpc: Create a net/ subdirectory in the sunrpc sysfs > > > sunrpc: Create per-rpc_clnt sysfs kobjects > > > sunrpc: Create a per-rpc_clnt file for managing the IP address > > > sunrpc: Prepare xs_connect() for taking NULL tasks > > > sunrpc: Connect to a new IP address provided by the user > > > > > > include/linux/sunrpc/clnt.h | 1 + > > > include/net/sock.h | 4 + > > > net/socket.c | 8 ++ > > > net/sunrpc/Makefile | 2 +- > > > net/sunrpc/clnt.c | 5 ++ > > > net/sunrpc/sunrpc_syms.c | 8 ++ > > > net/sunrpc/sysfs.c | 160 ++++++++++++++++++++++++++++++++++++ > > > net/sunrpc/sysfs.h | 22 +++++ > > > net/sunrpc/xprtsock.c | 3 +- > > > 9 files changed, 211 insertions(+), 2 deletions(-) > > > create mode 100644 net/sunrpc/sysfs.c > > > create mode 100644 net/sunrpc/sysfs.h > > > > > > -- > > > 2.29.2 > > > > > > > -- > > Chuck Lever > > > >