[pnfs] [PATCH 5/8] pnfs: pnfs_layout_release
andros at umich.edu
andros at umich.edu
Mon Mar 10 14:39:17 EDT 2008
From: Andy Adamson <andros at umich.edu>
Call put_unlock_current_layout() from the async layout rpc release.
Signed-off-by: Andy Adamson<andros at umich.edu>
---
fs/nfs/nfs4proc.c | 9 ++++++++-
fs/nfs/pnfs.c | 9 +++++++++
fs/nfs/pnfs.h | 2 +-
3 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index ef77a89..2ffebe5 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -5271,8 +5271,15 @@ static void nfs4_pnfs_layoutget_done(struct rpc_task *task, void *calldata)
static void nfs4_pnfs_layoutget_release(void *calldata)
{
+ struct nfs4_pnfs_layoutget *lgp = calldata;
+ struct nfs_inode *nfsi = NFS_I(lgp->args->inode);
+ struct pnfs_layout_type *lo;
+
+ lo = nfsi->current_layout;
+ BUG_ON(!lo);
+
dprintk("--> %s\n", __func__);
- /* pnfs_layout_release here */
+ pnfs_layout_release(lo);
dprintk("<-- %s\n", __func__);
}
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 7665188..d33fcc7 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -373,6 +373,15 @@ put_unlock_current_layout(struct nfs_inode *nfsi,
spin_unlock(&nfsi->lo_lock);
}
+void
+pnfs_layout_release(struct pnfs_layout_type *lo)
+{
+ struct nfs_inode *nfsi = NFS_I(lo->inode);
+
+ spin_lock(&nfsi->lo_lock);
+ put_unlock_current_layout(nfsi, lo);
+}
+
static inline void
init_lseg(struct pnfs_layout_type *lo, struct pnfs_layout_segment *lseg)
{
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
index c458b18..db25489 100644
--- a/fs/nfs/pnfs.h
+++ b/fs/nfs/pnfs.h
@@ -49,7 +49,7 @@ void pnfs_free_request_data(struct nfs_page *req);
ssize_t pnfs_file_write(struct file *, const char __user *, size_t, loff_t *);
void pnfs_get_layout_done(struct pnfs_layout_type *,
struct nfs4_pnfs_layoutget *, int);
-
+void pnfs_layout_release(struct pnfs_layout_type *);
#endif /* CONFIG_PNFS */
--
1.5.0.2
More information about the pNFS
mailing list