[pnfs] [PATCH] add back fh on export op layout_get
Marc Eshel
eshel at almaden.ibm.com
Mon Jun 4 16:37:53 EDT 2007
Andy, can you push this one too.
Thanks, Marc.
Marc Eshel <eshel at almaden.ibm.com>
Sent by: pnfs-bounces at linux-nfs.org
06/04/2007 10:28 AM
To
andros at citi.umich.edu
cc
pnfs at linux-nfs.org
Subject
[pnfs] [PATCH] add back fh on export op layout_get
From: Marc Eshel <eshel at almaden.ibm.com>
---
fs/nfsd/nfs4filelayoutxdr.c | 15 +++------------
fs/nfsd/nfs4state.c | 1 +
include/linux/nfsd/nfs4layoutxdr.h | 2 +-
include/linux/nfsd/nfsd4_pnfs.h | 1 +
4 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/fs/nfsd/nfs4filelayoutxdr.c b/fs/nfsd/nfs4filelayoutxdr.c
index 1258dea..68ea45d 100644
--- a/fs/nfsd/nfs4filelayoutxdr.c
+++ b/fs/nfsd/nfs4filelayoutxdr.c
@@ -87,7 +87,7 @@ static int
filelayout_encode_layoutlist_item(u32 *p, u32 *end, struct
nfsd4_pnfs_layoutlist *item)
{
int len;
- unsigned int fhlen = item->fhp->fh_size;
+ unsigned int fhlen = item->dev_fh.fh_size;
len = 16 + fhlen;
if (p + XDR_QUADLEN(len) > end)
@@ -96,7 +96,7 @@ filelayout_encode_layoutlist_item(u32 *p
WRITE32(item->dev_id);
WRITE32(item->dev_index);
WRITE32(fhlen);
- WRITEMEM(&item->fhp->fh_base, fhlen);
+ WRITEMEM(&item->dev_fh.fh_base, fhlen);
return len;
}
@@ -150,21 +150,12 @@ void
filelayout_free_layout(void *layout)
{
struct nfsd4_pnfs_filelayout *flp;
- struct nfsd4_pnfs_layoutlist *item;
- int i;
flp = (struct nfsd4_pnfs_filelayout *)layout;
if (!flp || !flp->lg_llist)
return;
- item = flp->lg_llist;
- for (i=0; i < flp->lg_llistlen; i++) {
-#if 0 /* the fh is part of nfsd4_pnfs_layoutget struct */
- if (item->fhp)
- kfree(item->fhp);
-#endif
- item++;
- }
+
kfree(flp->lg_llist);
}
EXPORT_SYMBOL(filelayout_free_layout);
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index ee4125b..c354a58 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -4224,6 +4224,7 @@ int nfs4_pnfs_get_layout(struct super_bl
}
BUG_ON(!sb->s_export_op->layout_get);
+ lgp->lg_fh = ¤t_fh->fh_handle;
status =
sb->s_export_op->layout_get(current_fh->fh_dentry->d_inode,
(void
*)lgp);
diff --git a/include/linux/nfsd/nfs4layoutxdr.h
b/include/linux/nfsd/nfs4layoutxdr.h
index 64f8216..9f69431 100644
--- a/include/linux/nfsd/nfs4layoutxdr.h
+++ b/include/linux/nfsd/nfs4layoutxdr.h
@@ -67,7 +67,7 @@ struct nfsd4_pnfs_layoutlist {
u32 dev_layout_type;
u32 dev_id;
u32 dev_index;
- struct knfsd_fh *fhp;
+ struct knfsd_fh dev_fh;
};
struct nfsd4_pnfs_filelayout {
diff --git a/include/linux/nfsd/nfsd4_pnfs.h
b/include/linux/nfsd/nfsd4_pnfs.h
index e133c9c..fe2f375 100644
--- a/include/linux/nfsd/nfsd4_pnfs.h
+++ b/include/linux/nfsd/nfsd4_pnfs.h
@@ -85,6 +85,7 @@ struct nfsd4_pnfs_layoutget {
u32 lg_mxcnt; /* request */
struct export_operations *lg_ops;
+ struct knfsd_fh *lg_fh;
u32 lg_return_on_close; /* response */
void *lg_layout; /* response callback encoded */
};
_______________________________________________
pNFS mailing list
pNFS at linux-nfs.org
http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
More information about the pNFS
mailing list