On Wed, 20 Aug 2014 20:33:04 -0400 Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> wrote: > On Mon, 2014-08-18 at 16:22 +1000, NeilBrown wrote: > > If requests are being sent to the local host, then NFS will > > need to take care to avoid deadlocks. > > > > So keep track when accepting a connection or sending a UDP request > > and set a flag in the svc_xprt when the peer connected to is local. > > > > The interface rpc_is_foreign() is provided to check is a given client > > is connected to a foreign server. When it returns zero it is either > > not connected or connected to a local server and in either case > > greater care is needed. > > > > Signed-off-by: NeilBrown <neilb@xxxxxxx> > > --- > > include/linux/sunrpc/clnt.h | 1 + > > include/linux/sunrpc/xprt.h | 1 + > > net/sunrpc/clnt.c | 25 +++++++++++++++++++++++++ > > net/sunrpc/xprtsock.c | 9 +++++++++ > > 4 files changed, 36 insertions(+) > > > > diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h > > index 70736b98c721..cd79b2a28ceb 100644 > > --- a/include/linux/sunrpc/clnt.h > > +++ b/include/linux/sunrpc/clnt.h > > @@ -175,6 +175,7 @@ void rpc_force_rebind(struct rpc_clnt *); > > size_t rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t); > > const char *rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t); > > int rpc_localaddr(struct rpc_clnt *, struct sockaddr *, size_t); > > +int rpc_is_foreign(struct rpc_clnt *); > > > > #endif /* __KERNEL__ */ > > #endif /* _LINUX_SUNRPC_CLNT_H */ > > diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h > > index fcbfe8783243..6a9dffcb9d3f 100644 > > --- a/include/linux/sunrpc/xprt.h > > +++ b/include/linux/sunrpc/xprt.h > > @@ -357,6 +357,7 @@ int xs_swapper(struct rpc_xprt *xprt, int enable); > > #define XPRT_CONNECTION_ABORT (7) > > #define XPRT_CONNECTION_CLOSE (8) > > #define XPRT_CONGESTED (9) > > +#define XPRT_LOCAL (10) > > > > Can we please rename that to XPRT_LOOPBACK or something along those > lines? To me XPRT_LOCAL looks a little too close for comfort to > AF_LOCAL, which is also a supported transport. > I'm fine with that. I'll resend once we are in agreement about the other bits. Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature