[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