[pnfs] [PATCH 01/14] 2.6-latest pnfs client nfs41_validate_seq_args change

andros at umich.edu andros at umich.edu
Mon Nov 12 14:29:13 EST 2007


From: Andy Adamson <andros at umich.edu>

Replace struct nfs_server with struct nfs4_session so that
data server sessions can be used.

Signed-off by: Andy Adamson<andros at umich.edu>
---
 fs/nfs/nfs4filelayout.c |    2 ++
 fs/nfs/nfs4proc.c       |    8 ++++----
 fs/nfs/read.c           |   14 ++++++++++----
 fs/nfs/unlink.c         |    4 ++--
 fs/nfs/write.c          |    9 +++++++--
 include/linux/nfs_xdr.h |    2 +-
 6 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
index 69f839d..c3db428 100644
--- a/fs/nfs/nfs4filelayout.c
+++ b/fs/nfs/nfs4filelayout.c
@@ -71,6 +71,8 @@ extern struct nfs_write_data *nfs_commit_alloc(void);
 extern void nfs_commit_free(struct nfs_write_data *p);
 extern void nfs_initiate_write(struct nfs_write_data *, struct rpc_clnt *, const struct rpc_call_ops *, int);
 extern void nfs_initiate_read(struct nfs_read_data *data, struct rpc_clnt *clnt, const struct rpc_call_ops *call_ops);
+extern void nfs_read_validate(struct rpc_task *task, void *calldata);
+extern void nfs_readdata_release(void *data);
 
 /* Callback operations to the pNFS client */
 struct pnfs_client_operations * pnfs_callback_ops;
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 184706e..87df222 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -381,14 +381,14 @@ static int nfs41_setup_sequence(struct nfs4_session *session,
 	return 0;
 }
 
-static int nfs41_validate_seq_args(struct nfs_server *server,
-					void *args, 
+static int nfs41_validate_seq_args(struct nfs4_session *session,
+					void *args,
 					void *res,
 					int cache_this,
 					struct rpc_task *task)
 {
-	return nfs41_setup_sequence(server->session,
-					args, res, 
+	return nfs41_setup_sequence(session,
+					args, res,
 					cache_this, task);
 }
 
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index c4ce40b..dd98eca 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -247,7 +247,6 @@ void nfs_initiate_read(struct nfs_read_data *data, struct rpc_clnt *clnt,
 
 	nfs_execute_read(data);
 }
-EXPORT_SYMBOL(nfs_initiate_read);
 
 /*
  * Generate multiple requests to fill a single page.
@@ -428,15 +427,16 @@ void nfs_read_validate(struct rpc_task *task, void *calldata)
 {
 	struct nfs_read_data *data = calldata;
 	struct nfs_server *server = data->args.server;
-	int (*setup_sequence)(struct nfs_server *, 
+	struct nfs4_session *session = server->session;
+	int (*setup_sequence)(struct nfs4_session *,
 				void *, void *, int, struct rpc_task *);
 
 	setup_sequence = server->nfs_client->rpc_ops->validate_sequence_args;
 
-	if (!setup_sequence || !setup_sequence(server, 
+	if (!setup_sequence || !setup_sequence(session,
 						&data->args.seq_args,
 						&data->res.seq_res,
-						0, task)) 
+						0, task))
 		rpc_start_call(task); 
 }
 #endif
@@ -672,3 +672,9 @@ void nfs_destroy_readpagecache(void)
 	mempool_destroy(nfs_rdata_mempool);
 	kmem_cache_destroy(nfs_rdata_cachep);
 }
+
+#ifdef CONFIG_PNFS
+EXPORT_SYMBOL(nfs_initiate_read);
+EXPORT_SYMBOL(nfs_readdata_release);
+EXPORT_SYMBOL(nfs_read_validate);
+#endif /* CONFIG_PNFS */
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c
index cf02321..22b0147 100644
--- a/fs/nfs/unlink.c
+++ b/fs/nfs/unlink.c
@@ -121,12 +121,12 @@ void nfs_unlink_validate(struct rpc_task *task, void *calldata)
 {
 	struct nfs_unlinkdata *data = calldata;
 	struct nfs_server *server = NFS_SERVER(data->dir);
-	int (*setup_sequence)(struct nfs_server *, 
+	int (*setup_sequence)(struct nfs4_session *,
 				void *, void *, int, struct rpc_task *);
 
 	setup_sequence = NFS_PROTO(data->dir)->validate_sequence_args;
 
-	if (!setup_sequence || !setup_sequence(server, 
+	if (!setup_sequence || !setup_sequence(server->session,
 						&data->args.seq_args,
 						&data->res.seq_res,
 						1, task))
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index e3aad7d..603ddf1 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1043,12 +1043,17 @@ void nfs_write_validate(struct rpc_task *task, void *calldata)
 {
 	struct nfs_write_data *data = calldata;
 	struct nfs_server *server = NFS_SERVER(data->inode);
-	int (*setup_sequence)(struct nfs_server *, 
+	struct nfs4_session *session = server->session;
+	int (*setup_sequence)(struct nfs4_session *,
 				void *, void *, int, struct rpc_task *);
 
 	setup_sequence = NFS_PROTO(data->inode)->validate_sequence_args;
+#ifdef CONFIG_PNFS
+	if (data->session)
+		session = data->session;
+#endif /* CONFIG_PNFS */
 
-	if (!setup_sequence || !setup_sequence(server, 
+	if (!setup_sequence || !setup_sequence(session,
 						&data->args.seq_args,
 						&data->res.seq_res,
 						1, task))
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index e02c921..4b443fe 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -1163,7 +1163,7 @@ struct nfs_rpc_ops {
 	int	(*file_release) (struct inode *, struct file *);
 	int	(*lock)(struct file *, int, struct file_lock *);
 	void	(*clear_acl_cache)(struct inode *);
-	int 	(*validate_sequence_args)(struct nfs_server *, 
+	int 	(*validate_sequence_args)(struct nfs4_session *,
 						void *args, 
 						void *res,
 						int, 
-- 
1.5.0.2



More information about the pNFS mailing list