[pnfs] [PATCH 45/55] pnfsd: layout recall callback all layout types

andros at netapp.com andros at netapp.com
Tue Jul 7 16:39:11 EDT 2009


From: Andy Adamson <andros at netapp.com>

when cb_layoutrecall is replied with NFS4ERR_NOMATCHING_LAYOUTS
simulate a return_layout call into the file system and release
all layouts in the range as if a respective LAYOUTRETURN was received.

[extracted from pnfsd: Initial pNFS server implementation.]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: nfsd layout cache: layoutrecall changes]
[pnfsd: nfsd layout cache: cb_layoutrecall: minorversion1 xdr infrastructure]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
Signed-off-by: Andy Adamson <andros at umich.edu>
Signed-off-by: Mike Sager <sager at netapp.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: fix compile error with gcc 3.4.4]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: cleanup encode_cb_layout dprintks]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: Integrated remaining callback patches]
[extracted from: Integrated remaining NFSv4.1 callback channel and cb sequence patches.]
[pnfsd: Spaces to tabs fixes]
Signed-off-by: Mike Sager <sager at netapp.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: simulate layoutreturn on nomatching_layouts error]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: get a reference on nfs4_file when cloning nfs4_layoutrecall]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
Tested-by: Marc Eshel <eshel at almaden.ibm.com>
[pnfsd: Use nfsd4_layout_seg instead of wrapper struct.]
Signed-off-by: Dean Hildebrand <dhildeb at us.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: Simplify layout get export interface.]
Signed-off-by: Dean Hildebrand <dhildeb at us.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: update cb_layoutrecall xdr to draft-19]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: remove unused symbol exports]
Signed-off-by: Marc Eshel <eshel at almaden.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: dprint recalled layout stateid]
[pnfsd: handle RETURN_{FSID,ALL} with no nfs4_file]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: properly xdr-encode cb_layoutrecall stateid]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: set up layout recall stateid for RECALL_FILE]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: remove unused clr_status and cbd_status variables]
[pnfsd: Remove layoutrecall dead code.]
Signed-off-by: Dean Hildebrand <dhildeb at us.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: Fixup layoutrecall server handling.]

a) Add create_layout_recall_list to isolate the creation of the
   layout recall request list.
b) Fix ref counting on recall struct.
c) avoid creating duplicate layout recall arg structs.

Signed-off-by: Dean Hildebrand <dhildeb at us.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: refactor create_layout_recall_list]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[part of pnfsd: Do not hold state lock while recalling layouts.]
Signed-off-by: Dean Hildebrand <dhildeb at us.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: expire_layout when client is expired]
Signed-off-by: Marc Eshel <eshel at almaden.ibm.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: use STATEID_FMT and STATEID_VAL for printing stateids]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: convert generic code to use new pnfs api]
[pnfsd: define pnfsd_cb_operations]
[pnfsd: get rid of generic use of old cb ops in export_operations]
[pnfsd: obliterate old vfs api]
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
[pnfsd: Backchannel: Get minorversion directly from arguments]
[pnfsd: Backchannel: Update pnfs callbacks to use new slot locking mechanism]
Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga at netapp.com>
Signed-off-by: Benny Halevy <bhalevy at panasas.com>

Add back the use of struct pnfs_export_operations
Signed-off-by: Andy Adamson <andros at netapp.com>
---
 fs/nfsd/nfs4state.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 37a6909..f614c17 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -5233,6 +5233,9 @@ nomatching_layout(struct super_block *sb, struct nfs4_layoutrecall *clr)
 	lr.lr_seg = clr->cb.cbl_seg;
 	lr.lr_reclaim = 0;
 	lr.lr_flags = LR_FLAG_INTERN;
+	if (sb->s_pnfs_op->layout_return)
+		sb->s_pnfs_op->layout_return(clr->clr_file ?
+			clr->clr_file->fi_inode : NULL, &lr);
 
 	nfs4_lock_state();
 	if (clr->cb.cbl_recall_type == RECALL_FILE)
-- 
1.5.4.3



More information about the pNFS mailing list