[pnfs] [PATCH 6/7] nfs4_pnfs_layout_segment: free_layout api

Benny Halevy bhalevy at panasas.com
Thu Aug 30 09:15:28 EDT 2007


pass full layout segment <iomode, offset, length> down to layout driver's
free_layout instead of just offset and count so that the layout driver can
manage a segmented layout.

Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
 fs/nfs/nfs4filelayout.c   |    3 ++-
 fs/nfs/pnfs.c             |    2 +-
 include/linux/nfs4_pnfs.h |    2 +-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
index 1719c42..2631361 100644
--- a/fs/nfs/nfs4filelayout.c
+++ b/fs/nfs/nfs4filelayout.c
@@ -423,7 +423,8 @@ filelayout_alloc_layout(struct pnfs_mount_type * mountid, struct inode * inode)
 /* Free a filelayout layout structure
  */
 void
-filelayout_free_layout(struct pnfs_layout_type * layoutid, struct inode * inode, loff_t offset, size_t count)
+filelayout_free_layout(struct pnfs_layout_type * layoutid, struct inode * inode,
+                       struct nfs4_pnfs_layout_segment *range)
 {
 	struct nfs4_filelayout* nfslay = NULL;
 
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 217f3f2..aa7afa3 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -391,7 +391,7 @@ pnfs_return_layout(struct inode* ino, int type)
 
 	if (!status) {
 		dprintk ("%s: removing layout\n", __FUNCTION__);
-		server->pnfs_curr_ld->ld_io_ops->free_layout(NFS_I(ino)->current_layout, ino, 0, 0);
+		server->pnfs_curr_ld->ld_io_ops->free_layout(nfsi->current_layout, ino, &arg.lseg);
 		nfsi->current_layout = NULL;
 	}
 
diff --git a/include/linux/nfs4_pnfs.h b/include/linux/nfs4_pnfs.h
index 5855329..964065d 100644
--- a/include/linux/nfs4_pnfs.h
+++ b/include/linux/nfs4_pnfs.h
@@ -62,7 +62,7 @@ struct layoutdriver_io_operations {
 	 * inode specific layout structure.  Each subsequent layoutget operation results in
 	 * a set_layout call to set the opaque layout in the layout driver.*/
 	struct pnfs_layout_type* (*alloc_layout) (struct pnfs_mount_type * mountid, struct inode * inode);
-	void (*free_layout) (struct pnfs_layout_type * layoutid, struct inode * inode, loff_t offset, size_t count);
+	void (*free_layout) (struct pnfs_layout_type * layoutid, struct inode * inode, struct nfs4_pnfs_layout_segment *range);
 	struct pnfs_layout_type* (*set_layout) (struct pnfs_layout_type * layoutid, struct inode * inode, struct nfs4_pnfs_layoutget_res *lgr);
 
 	int (*setup_layoutcommit) (struct pnfs_layout_type * layoutid, struct inode * inode, struct pnfs_layoutcommit_arg* arg);
-- 
1.5.2.5




More information about the pNFS mailing list