* [PATCH 0/3] nfsd41: fix callback minorversion
@ 2009-03-29 19:09 Benny Halevy
2009-03-29 19:11 ` [PATCH 1/3] SQUASHME: get callback minorversion from fore channel's Benny Halevy
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Benny Halevy @ 2009-03-29 19:09 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: NFS list, pNFS Mailing List
The following three patches get rid of the server's use of cl_private
by passing the minorversion for callbacks via struct nfs4_rpc_args
I'd like to squash them into the nfsd41-for-2.6.30 series
and resend (v3)
Benny
[PATCH 1/3] SQUASHME: get callback minorversion from fore channel's
[PATCH 2/3] SQUASHME: nfsd41: use nfsd4_cb_sequence for callback minorversion
[PATCH 3/3] SQUASHME: Revert "sunrpc: add cl_private field to struct rpc_clnt"
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] SQUASHME: get callback minorversion from fore channel's
2009-03-29 19:09 [PATCH 0/3] nfsd41: fix callback minorversion Benny Halevy
@ 2009-03-29 19:11 ` Benny Halevy
2009-03-29 19:11 ` [PATCH 2/3] SQUASHME: nfsd41: use nfsd4_cb_sequence for callback minorversion Benny Halevy
2009-03-29 19:11 ` [PATCH 3/3] SQUASHME: Revert "sunrpc: add cl_private field to struct rpc_clnt" Benny Halevy
2 siblings, 0 replies; 4+ messages in thread
From: Benny Halevy @ 2009-03-29 19:11 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: linux-nfs, pnfs
Currently we assign a constant 1.
Squash into "nfsd41: callback infrastructure"
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
fs/nfsd/nfs4state.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index e5c7ddb..b7c4ed0 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1418,7 +1418,8 @@ nfsd4_create_session(struct svc_rqst *rqstp,
if (cr_ses->flags & SESSION4_BACK_CHAN) {
unconf->cl_cb_xprt = rqstp->rq_xprt;
svc_xprt_get(unconf->cl_cb_xprt);
- unconf->cl_callback.cb_minorversion = 1;
+ unconf->cl_callback.cb_minorversion =
+ cstate->minorversion;
unconf->cl_cb_seq_nr = 0;
unconf->cl_callback.cb_prog = cr_ses->callback_prog;
nfsd4_probe_callback(unconf);
--
1.6.2.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] SQUASHME: nfsd41: use nfsd4_cb_sequence for callback minorversion
2009-03-29 19:09 [PATCH 0/3] nfsd41: fix callback minorversion Benny Halevy
2009-03-29 19:11 ` [PATCH 1/3] SQUASHME: get callback minorversion from fore channel's Benny Halevy
@ 2009-03-29 19:11 ` Benny Halevy
2009-03-29 19:11 ` [PATCH 3/3] SQUASHME: Revert "sunrpc: add cl_private field to struct rpc_clnt" Benny Halevy
2 siblings, 0 replies; 4+ messages in thread
From: Benny Halevy @ 2009-03-29 19:11 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: linux-nfs, pnfs
Rather than using struct rpc_clnt.cl_private.
squash into "nfsd: minorversion support for the back channel"
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
fs/nfsd/nfs4callback.c | 20 +++++++++++++-------
include/linux/nfsd/state.h | 1 +
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
index 0be75e0..02e0a61 100644
--- a/fs/nfsd/nfs4callback.c
+++ b/fs/nfsd/nfs4callback.c
@@ -297,17 +297,25 @@ nfs4_xdr_enc_cb_null(struct rpc_rqst *req, __be32 *p)
return 0;
}
+static u32
+nfs4_xdr_minorversion(struct nfs4_rpc_args *rpc_args)
+{
+#if defined(CONFIG_NFSD_V4_1)
+ if (rpc_args->args_seq)
+ return rpc_args->args_seq->cbs_minorversion;
+#endif /* CONFIG_NFSD_V4_1 */
+ return 0;
+}
+
static int
nfs4_xdr_enc_cb_recall(struct rpc_rqst *req, __be32 *p,
struct nfs4_rpc_args *rpc_args)
{
struct xdr_stream xdr;
struct nfs4_cb_recall *args = rpc_args->args_op;
- struct nfs4_callback *cb =
- (struct nfs4_callback *)req->rq_task->tk_client->cl_private;
struct nfs4_cb_compound_hdr hdr = {
.ident = args->cbr_ident,
- .minorversion = cb->cb_minorversion,
+ .minorversion = nfs4_xdr_minorversion(rpc_args),
};
xdr_init_encode(&xdr, &req->rq_snd_buf, p);
@@ -362,14 +370,12 @@ static int
decode_cb_sequence(struct xdr_stream *xdr, struct nfsd4_cb_sequence *res,
struct rpc_rqst *rqstp)
{
- struct nfs4_callback *cb =
- (struct nfs4_callback *)rqstp->rq_task->tk_client->cl_private;
struct nfs4_sessionid id;
int status;
u32 dummy;
__be32 *p;
- if (cb->cb_minorversion == 0)
+ if (res->cbs_minorversion == 0)
return 0;
status = decode_cb_op_hdr(xdr, OP_CB_SEQUENCE);
@@ -570,7 +576,6 @@ static int do_probe_callback(void *data)
goto out_release_client;
cb->cb_client = client;
- client->cl_private = cb;
atomic_set(&cb->cb_set, 1);
put_nfs4_client(clp);
return 0;
@@ -625,6 +630,7 @@ nfs41_cb_sequence_setup(struct nfs4_client *clp, struct nfsd4_cb_sequence *args)
ptr[0], ptr[1], ptr[2], ptr[3]);
mutex_lock(&clp->cl_cb_mutex);
+ args->cbs_minorversion = clp->cl_callback.cb_minorversion;
args->cbs_clp = clp;
clp->cl_cb_seq_nr++;
return 0;
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
index 0ea8c89..365cc4b 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -63,6 +63,7 @@ typedef struct {
struct nfsd4_cb_sequence {
/* args/res */
+ u32 cbs_minorversion;
struct nfs4_client *cbs_clp;
};
--
1.6.2.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] SQUASHME: Revert "sunrpc: add cl_private field to struct rpc_clnt"
2009-03-29 19:09 [PATCH 0/3] nfsd41: fix callback minorversion Benny Halevy
2009-03-29 19:11 ` [PATCH 1/3] SQUASHME: get callback minorversion from fore channel's Benny Halevy
2009-03-29 19:11 ` [PATCH 2/3] SQUASHME: nfsd41: use nfsd4_cb_sequence for callback minorversion Benny Halevy
@ 2009-03-29 19:11 ` Benny Halevy
2 siblings, 0 replies; 4+ messages in thread
From: Benny Halevy @ 2009-03-29 19:11 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: linux-nfs, pnfs
This reverts commit e972f970a78899ef9c3370f014d45b0d1ed228d3.
---
include/linux/sunrpc/clnt.h | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index 0b32b00..cf9a8ec 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -53,7 +53,6 @@ struct rpc_clnt {
char cl_pathname[30];/* Path in rpc_pipe_fs */
struct vfsmount * cl_vfsmnt;
struct dentry * cl_dentry; /* inode */
- void *cl_private; /* private data */
struct rpc_clnt * cl_parent; /* Points to parent of clones */
struct rpc_rtt cl_rtt_default;
struct rpc_timeout cl_timeout_default;
--
1.6.2.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-03-29 19:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-29 19:09 [PATCH 0/3] nfsd41: fix callback minorversion Benny Halevy
2009-03-29 19:11 ` [PATCH 1/3] SQUASHME: get callback minorversion from fore channel's Benny Halevy
2009-03-29 19:11 ` [PATCH 2/3] SQUASHME: nfsd41: use nfsd4_cb_sequence for callback minorversion Benny Halevy
2009-03-29 19:11 ` [PATCH 3/3] SQUASHME: Revert "sunrpc: add cl_private field to struct rpc_clnt" Benny Halevy
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).