Signed-off-by: Fred Isaman <iisaman@xxxxxxxxxx> --- fs/nfs/callback.h | 26 ++++++++++++++++++++++++++ fs/nfs/callback_proc.c | 6 ------ fs/nfs/callback_xdr.c | 3 +-- fs/nfs/internal.h | 4 ++++ 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/fs/nfs/callback.h b/fs/nfs/callback.h index 89fee05..0b1f3c4 100644 --- a/fs/nfs/callback.h +++ b/fs/nfs/callback.h @@ -8,6 +8,8 @@ #ifndef __LINUX_FS_NFS_CALLBACK_H #define __LINUX_FS_NFS_CALLBACK_H +#include "internal.h" + #define NFS4_CALLBACK 0x40000000 #define NFS4_CALLBACK_XDRSIZE 2048 #define NFS4_CALLBACK_BUFSIZE (1024 + NFS4_CALLBACK_XDRSIZE) @@ -158,6 +160,30 @@ extern unsigned nfs4_callback_layoutrecall( struct cb_layoutrecallargs *args, void *dummy, struct cb_process_state *cps); +static inline void put_session_client(struct nfs4_session *session) +{ + if (session) /* matched by cb_sequence find_client_with_session */ + nfs_put_client(session->clp); +} + +static inline struct nfs_client * +find_client_from_cps(struct cb_process_state *cps, struct sockaddr *addr) +{ + return cps->session ? cps->session->clp : nfs_find_client(addr, 4); +} + +#else + +static inline struct nfs_client * +find_client_from_cps(struct cb_process_state *cps, struct sockaddr *addr) +{ + return nfs_find_client(addr, 4); +} + +static inline void put_session_client(struct nfs4_session *session) +{ +} + #endif /* CONFIG_NFS_V4_1 */ extern __be32 nfs4_callback_getattr(struct cb_getattrargs *args, diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c index 2e62155..d02997a 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -21,12 +21,6 @@ #define NFSDBG_FACILITY NFSDBG_CALLBACK #endif -static struct nfs_client * -find_client_from_cps(struct cb_process_state *cps, struct sockaddr *addr) -{ - return cps->session ? cps->session->clp : nfs_find_client(addr, 4); -} - __be32 nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res, struct cb_process_state *cps) diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c index 1650ab0..01688ce 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c @@ -770,8 +770,7 @@ static __be32 nfs4_callback_compound(struct svc_rqst *rqstp, void *argp, void *r *hdr_res.status = status; *hdr_res.nops = htonl(nops); - if (cps.session) /* matched by cb_sequence find_client_with_session */ - nfs_put_client(cps.session->clp); + put_session_client(cps.session); dprintk("%s: done, status = %u\n", __func__, ntohl(status)); return rpc_success; } diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index 755e555..6f14089 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h @@ -2,6 +2,8 @@ * NFS internal definitions */ +#ifndef __LINUX_FS_NFS_INTERNAL_H +#define __LINUX_FS_NFS_INTERNAL_H #include "nfs4_fs.h" #include <linux/mount.h> #include <linux/security.h> @@ -415,3 +417,5 @@ static inline int nfs_restart_rpc(struct rpc_task *task, const struct nfs_client return rpc_restart_call_prepare(task); return rpc_restart_call(task); } + +#endif /* __LINUX_FS_NFS_INTERNAL_H */ -- 1.7.2.1 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html