[pnfs] [PATCH 17/37] pnfs: call LD's free_layout before pnfs_return_layout_rpc
Benny Halevy
bhalevy at panasas.com
Tue Jan 1 05:50:38 EST 2008
free_layout is called in any case (even if the layoutreturn rpc fails)
and it's ok according to the nfsv4.1 spec for the client to forget about
the layout before returning it.
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
fs/nfs/pnfs.c | 15 +++------------
1 files changed, 3 insertions(+), 12 deletions(-)
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index ced7f30..cb8115f 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -344,6 +344,9 @@ pnfs_return_layout(struct inode *ino, struct nfs4_pnfs_layout_segment *range)
if (nfsi->current_layout == NULL)
return 0;
+ server->pnfs_curr_ld->ld_io_ops->free_layout(
+ &nfsi->current_layout, &arg.lseg);
+
arg.reclaim = 0;
arg.layout_type = server->pnfs_curr_ld->id;
arg.return_type = RETURN_FILE;
@@ -358,18 +361,6 @@ pnfs_return_layout(struct inode *ino, struct nfs4_pnfs_layout_segment *range)
status = pnfs_return_layout_rpc(server, &arg);
- if (nfsi->current_layout) {
- if (status)
- dprintk("%s: pnfs_return_layout_rpc status=%d. "
- "removing layout anyway\n", __FUNCTION__,
- status);
- else
- dprintk("%s: removing layout\n", __FUNCTION__);
-
- server->pnfs_curr_ld->ld_io_ops->free_layout(
- &nfsi->current_layout, &arg.lseg);
- }
-
dprintk("%s:Exit status %d\n", __FUNCTION__, status);
return status;
}
--
1.5.3.3
More information about the pNFS
mailing list