[pnfs] [PATCH 25/37] pnfs: client layout cache: lseg allocation functions
Benny Halevy
bhalevy at panasas.com
Tue Jan 1 05:51:20 EST 2008
Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
fs/nfs/pnfs.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index dc272cf..9642269 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -339,6 +339,32 @@ put_unlock_current_layout(struct nfs_inode *nfsi,
spin_unlock(&nfsi->lo_lock);
}
+static inline void
+init_lseg(struct pnfs_layout_type *lo, struct pnfs_layout_segment *lseg)
+{
+ INIT_LIST_HEAD(&lseg->fi_list);
+ kref_init(&lseg->kref);
+ lseg->layout = lo;
+}
+
+static void
+destroy_lseg(struct kref *kref)
+{
+ struct pnfs_layout_segment *lseg =
+ container_of(kref, struct pnfs_layout_segment, kref);
+ struct pnfs_layout_type *lo = lseg->layout;
+
+ PNFS_LD_IO_OPS(lo)->free_lseg(lo, lseg);
+}
+
+static inline void
+put_lseg(struct pnfs_layout_segment *lseg)
+{
+ if (!lseg)
+ return;
+ kref_put(&lseg->kref, destroy_lseg);
+}
+
/*
* Get layout from server.
* for now, assume that whole file layouts are requested.
--
1.5.3.3
More information about the pNFS
mailing list