[pnfs] [PATCH 3/9] layoutrecall: convert pnfs_return_layout

Benny Halevy bhalevy at panasas.com
Thu Aug 30 09:31:21 EDT 2007


call pnfs_return_layout_rpc within pnfs_return_layout

Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
 fs/nfs/pnfs.c |   32 ++++----------------------------
 1 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 1b12839..d61833d 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -349,25 +349,13 @@ get_layout(struct inode* ino,
 int
 pnfs_return_layout(struct inode* ino, struct nfs4_pnfs_layout_segment *range)
 {
+	struct nfs_inode* nfsi = NFS_I(ino);
+	struct nfs_server* server = NFS_SERVER(ino);
 	struct nfs4_pnfs_layoutreturn_arg arg;
-	struct nfs4_pnfs_layoutreturn_res res;
-	struct nfs41_sequence_args seqarg;
-	struct nfs41_sequence_res seqres;
 	int status;
 
-	struct nfs_inode* nfsi = NFS_I(ino);
-	struct nfs_server *server = NFS_SERVER(ino);
-	struct nfs4_pnfs_layoutreturn gdata = {
-		.args = &arg,
-		.res = &res,
-	};
 	dprintk("%s:Begin layout %p\n", __FUNCTION__, nfsi->current_layout);
 
-	if (nfsi->current_layout == NULL)
-		return 0;
-
-	dprintk("%s: Returning layout...\n", __FUNCTION__);
-
 	arg.reclaim = 0;
 	arg.layout_type = server->pnfs_curr_ld->id;
 	arg.return_type = RETURN_FILE;
@@ -379,28 +367,16 @@ pnfs_return_layout(struct inode* ino, struct nfs4_pnfs_layout_segment *range)
 		arg.lseg.length = ~0;
 	}
 	arg.inode = ino;
-	arg.minorversion_info = &seqarg;
-	res.minorversion_info = &seqres;
 
-	if ((status = server->rpc_ops->setup_sequence(server->nfs4_state->cl_session,
-					arg.minorversion_info,
-					res.minorversion_info)))
-			goto out;
+	status = pnfs_return_layout_rpc(server, &arg);
 
-	/* Return layout to server */
-	status = NFS_PROTO(ino)->pnfs_layoutreturn(&gdata);
-
-	server->rpc_ops->sequence_done(server->nfs4_state->cl_session,
-				res.minorversion_info, status);
-
-	if (!status) {
+	if (!status && nfsi->current_layout) {
 		dprintk ("%s: removing layout\n", __FUNCTION__);
 		server->pnfs_curr_ld->ld_io_ops->free_layout(nfsi->current_layout, ino, &arg.lseg);
 		nfsi->current_layout = NULL;
 	}
 
 	dprintk("%s:Exit status %d\n", __FUNCTION__, status);
-out:
 	return status;
 }
 
-- 
1.5.2.5



More information about the pNFS mailing list