[PATCH] struct nfs4_file: add fsid and filehandle members
Benny Halevy
bhalevy at ns1.bhalevy.com
Mon May 7 10:03:53 EDT 2007
---
fs/nfsd/nfs4state.c | 14 +++++++++++---
include/linux/nfsd/state.h | 6 ++++++
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 57abb22..8c20639 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1416,7 +1416,7 @@ out:
/* OPEN Share state helper functions */
static inline struct nfs4_file *
-alloc_init_file(struct inode *ino)
+alloc_init_file(struct inode *ino, struct svc_fh *current_fh)
{
struct nfs4_file *fp;
unsigned int hashval = file_hashval(ino);
@@ -1431,6 +1431,14 @@ alloc_init_file(struct inode *ino)
list_add(&fp->fi_hash, &file_hashtbl[hashval]);
fp->fi_inode = igrab(ino);
fp->fi_id = current_fileid++;
+#ifdef CONFIG_PNFS
+ fp->fi_fsid.major = current_fh->fh_export->ex_fsid;
+ fp->fi_fsid.minor = 0;
+ fp->fi_fhlen = current_fh->fh_handle.fh_size;
+ BUG_ON(fp->fi_fhlen > sizeof(fp->fi_fhval));
+ memcpy(fp->fi_fhval, ¤t_fh->fh_handle.fh_base,
+ fp->fi_fhlen);
+#endif /* CONFIG_PNFS */
return fp;
}
return NULL;
@@ -2222,7 +2230,7 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf
if (open->op_claim_type == NFS4_OPEN_CLAIM_DELEGATE_CUR)
goto out;
status = nfserr_resource;
- fp = alloc_init_file(ino);
+ fp = alloc_init_file(ino, current_fh);
if (fp == NULL)
goto out;
}
@@ -4027,7 +4035,7 @@ int nfs4_pnfs_get_layout(struct super_block *sb, struct svc_fh *current_fh,
fp = find_file(ino);
if (!fp) {
- fp = alloc_init_file(ino);
+ fp = alloc_init_file(ino, current_fh);
if (fp == NULL)
goto out;
}
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
index c23ae98..3ae9221 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -356,6 +356,12 @@ struct nfs4_file {
struct inode *fi_inode;
u32 fi_id; /* used with stateowner->so_id
* for stateid_hashtbl hash */
+#ifdef CONFIG_PNFS
+ /* used by layoutget / layoutrecall */
+ struct nfs4_fsid fi_fsid;
+ u32 fi_fhlen;
+ u8 fi_fhval[NFS4_FHSIZE];
+#endif /* CONFIG_PNFS */
};
#ifdef CONFIG_PNFS
--
1.5.1
--------------080409010006050005030002--
More information about the pNFS
mailing list