linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benny Halevy <bhalevy@panasas.com>
To: linux-nfs@vger.kernel.org
Subject: [PATCH 17/17] SQUASHME: pnfs-obj: convert to new pnfs-submit changes
Date: Wed, 29 Sep 2010 13:12:41 +0200	[thread overview]
Message-ID: <1285758761-27343-1-git-send-email-bhalevy@panasas.com> (raw)
In-Reply-To: <4CA31DC3.8070300@panasas.com>

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
---
 fs/nfs/objlayout/objio_osd.c  |   57 ++++++++++++++++++++----------
 fs/nfs/objlayout/objlayout.c  |   77 ++++++++++++++++-------------------------
 fs/nfs/objlayout/objlayout.h  |   47 ++++++++++++++++++++++---
 fs/nfs/objlayout/panfs_shim.c |   51 ++++++++++++++++++---------
 include/linux/nfs4.h          |    2 +
 include/linux/pnfs_osd_xdr.h  |    4 +-
 6 files changed, 147 insertions(+), 91 deletions(-)

diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c
index 75d5df4..696b6f5 100644
--- a/fs/nfs/objlayout/objio_osd.c
+++ b/fs/nfs/objlayout/objio_osd.c
@@ -64,7 +64,7 @@ struct objio_mount_type {
 
 struct _dev_ent {
 	struct list_head list;
-	struct pnfs_deviceid d_id;
+	struct nfs4_deviceid d_id;
 	struct osd_dev *od;
 };
 
@@ -85,7 +85,7 @@ static void _dev_list_remove_all(struct objio_mount_type *omt)
 }
 
 static struct osd_dev *___dev_list_find(struct objio_mount_type *omt,
-	struct pnfs_deviceid *d_id)
+	struct nfs4_deviceid *d_id)
 {
 	struct list_head *le;
 
@@ -100,7 +100,7 @@ static struct osd_dev *___dev_list_find(struct objio_mount_type *omt,
 }
 
 static struct osd_dev *_dev_list_find(struct objio_mount_type *omt,
-	struct pnfs_deviceid *d_id)
+	struct nfs4_deviceid *d_id)
 {
 	struct osd_dev *od;
 
@@ -111,7 +111,7 @@ static struct osd_dev *_dev_list_find(struct objio_mount_type *omt,
 }
 
 static int _dev_list_add(struct objio_mount_type *omt,
-	struct pnfs_deviceid *d_id, struct osd_dev *od)
+	struct nfs4_deviceid *d_id, struct osd_dev *od)
 {
 	struct _dev_ent *de = kzalloc(sizeof(*de), GFP_KERNEL);
 
@@ -180,10 +180,10 @@ static struct osd_dev *_device_lookup(struct pnfs_layout_hdr *pnfslay,
 {
 	struct pnfs_osd_layout *layout = objio_seg->layout;
 	struct pnfs_osd_deviceaddr *deviceaddr;
-	struct pnfs_deviceid *d_id;
+	struct nfs4_deviceid *d_id;
 	struct osd_dev *od;
 	struct osd_dev_info odi;
-	struct objio_mount_type *omt = PNFS_NFS_SERVER(pnfslay)->pnfs_ld_data;
+	struct objio_mount_type *omt = NFS_SERVER(pnfslay->inode)->pnfs_ld_data;
 	int err;
 
 	d_id = &layout->olo_comps[comp].oc_object_id.oid_device_id;
@@ -981,7 +981,8 @@ objlayout_get_stripesize(struct pnfs_layout_hdr *pnfslay)
 
 	list_for_each_entry(lseg, &pnfslay->segs, fi_list) {
 		int n;
-		struct objlayout_segment *objlseg = LSEG_LD_DATA(lseg);
+		struct objlayout_segment *objlseg =
+			container_of(lseg, struct objlayout_segment, lseg);
 		struct pnfs_osd_layout *lo =
 			(struct pnfs_osd_layout *)objlseg->pnfs_osd_layout;
 		struct pnfs_osd_data_map *map = &lo->olo_map;
@@ -1025,23 +1026,35 @@ objlayout_get_blocksize(void)
 	return sz;
 }
 
-static struct layoutdriver_policy_operations objlayout_policy_operations = {
 /*
  * Don't gather across stripes, but rather gather (coalesce) up to
  * the stripe size.
  *
  * FIXME: change interface to use merge_align, merge_count
  */
-	.flags                 = PNFS_LAYOUTRET_ON_SETATTR,
-	.get_stripesize        = objlayout_get_stripesize,
-	.get_blocksize         = objlayout_get_blocksize,
-};
-
 static struct pnfs_layoutdriver_type objlayout_type = {
 	.id = LAYOUT_OSD2_OBJECTS,
 	.name = "LAYOUT_OSD2_OBJECTS",
-	.ld_io_ops = &objlayout_io_operations,
-	.ld_policy_ops = &objlayout_policy_operations,
+	.flags                   = PNFS_LAYOUTRET_ON_SETATTR,
+
+	.initialize_mountpoint   = objlayout_initialize_mountpoint,
+	.uninitialize_mountpoint = objlayout_uninitialize_mountpoint,
+
+	.alloc_layout_hdr        = objlayout_alloc_layout_hdr,
+	.free_layout_hdr         = objlayout_free_layout_hdr,
+
+	.alloc_lseg              = objlayout_alloc_lseg,
+	.free_lseg               = objlayout_free_lseg,
+
+	.get_stripesize          = objlayout_get_stripesize,
+	.get_blocksize           = objlayout_get_blocksize,
+
+	.read_pagelist           = objlayout_read_pagelist,
+	.write_pagelist          = objlayout_write_pagelist,
+	.commit                  = objlayout_commit,
+
+	.encode_layoutcommit	 = objlayout_encode_layoutcommit,
+	.encode_layoutreturn     = objlayout_encode_layoutreturn,
 };
 
 void *objio_init_mt(void)
@@ -1069,10 +1082,16 @@ MODULE_LICENSE("GPL");
 static int __init
 objlayout_init(void)
 {
-	pnfs_client_ops = pnfs_register_layoutdriver(&objlayout_type);
-	printk(KERN_INFO "%s: Registered OSD pNFS Layout Driver\n",
-	       __func__);
-	return 0;
+	int ret = pnfs_register_layoutdriver(&objlayout_type);
+
+	if (ret)
+		printk(KERN_INFO
+			"%s: Registering OSD pNFS Layout Driver failed: error=%d\n",
+			__func__, ret);
+	else
+		printk(KERN_INFO "%s: Registered OSD pNFS Layout Driver\n",
+			__func__);
+	return ret;
 }
 
 static void __exit
diff --git a/fs/nfs/objlayout/objlayout.c b/fs/nfs/objlayout/objlayout.c
index 259c616..b647577 100644
--- a/fs/nfs/objlayout/objlayout.c
+++ b/fs/nfs/objlayout/objlayout.c
@@ -49,8 +49,8 @@ struct pnfs_client_operations *pnfs_client_ops;
 /*
  * Create a objlayout layout structure for the given inode and return it.
  */
-static struct pnfs_layout_hdr *
-objlayout_alloc_layout(struct inode *inode)
+struct pnfs_layout_hdr *
+objlayout_alloc_layout_hdr(struct inode *inode)
 {
 	struct objlayout *objlay;
 
@@ -66,8 +66,8 @@ objlayout_alloc_layout(struct inode *inode)
 /*
  * Free an objlayout layout structure
  */
-static void
-objlayout_free_layout(struct pnfs_layout_hdr *lo)
+void
+objlayout_free_layout_hdr(struct pnfs_layout_hdr *lo)
 {
 	struct objlayout *objlay = OBJLAYOUT(lo);
 
@@ -80,13 +80,12 @@ objlayout_free_layout(struct pnfs_layout_hdr *lo)
 /*
  * Unmarshall layout and store it in pnfslay.
  */
-static struct pnfs_layout_segment *
+struct pnfs_layout_segment *
 objlayout_alloc_lseg(struct pnfs_layout_hdr *pnfslay,
 		     struct nfs4_layoutget_res *lgr)
 {
 	int status;
 	void *layout = lgr->layout.buf;
-	struct pnfs_layout_segment *lseg;
 	struct objlayout_segment *objlseg;
 	struct pnfs_osd_layout *pnfs_osd_layout;
 
@@ -95,32 +94,31 @@ objlayout_alloc_lseg(struct pnfs_layout_hdr *pnfslay,
 	BUG_ON(!layout);
 
 	status = -ENOMEM;
-	lseg = kzalloc(sizeof(*lseg) + sizeof(*objlseg) +
-		       pnfs_osd_layout_incore_sz(layout), GFP_KERNEL);
-	if (!lseg)
+	objlseg = kzalloc(sizeof(*objlseg) +
+			  pnfs_osd_layout_incore_sz(layout), GFP_KERNEL);
+	if (!objlseg)
 		goto err;
 
-	objlseg = LSEG_LD_DATA(lseg);
 	pnfs_osd_layout = (struct pnfs_osd_layout *)objlseg->pnfs_osd_layout;
 	pnfs_osd_xdr_decode_layout(pnfs_osd_layout, layout);
 
-	status = objio_alloc_lseg(&objlseg->internal, pnfslay, lseg,
+	status = objio_alloc_lseg(&objlseg->internal, pnfslay, &objlseg->lseg,
 				  pnfs_osd_layout);
 	if (status)
 		goto err;
 
-	dprintk("%s: Return %p\n", __func__, lseg);
-	return lseg;
+	dprintk("%s: Return %p\n", __func__, &objlseg->lseg);
+	return &objlseg->lseg;
 
  err:
-	kfree(lseg);
+	kfree(objlseg);
 	return ERR_PTR(status);
 }
 
 /*
  * Free a layout segement
  */
-static void
+void
 objlayout_free_lseg(struct pnfs_layout_segment *lseg)
 {
 	struct objlayout_segment *objlseg;
@@ -130,9 +128,9 @@ objlayout_free_lseg(struct pnfs_layout_segment *lseg)
 	if (unlikely(!lseg))
 		return;
 
-	objlseg = LSEG_LD_DATA(lseg);
+	objlseg = container_of(lseg, struct objlayout_segment, lseg);
 	objio_free_lseg(objlseg->internal);
-	kfree(lseg);
+	kfree(objlseg);
 }
 
 /*
@@ -168,7 +166,8 @@ objlayout_alloc_io_state(struct pnfs_layout_hdr *pnfs_layout_type,
 			struct pnfs_layout_segment *lseg,
 			void *rpcdata)
 {
-	struct objlayout_segment *objlseg = LSEG_LD_DATA(lseg);
+	struct objlayout_segment *objlseg =
+		container_of(lseg, struct objlayout_segment, lseg);
 	struct objlayout_io_state *state;
 	u64 lseg_end_offset;
 	size_t size_nr_pages;
@@ -199,7 +198,7 @@ objlayout_alloc_io_state(struct pnfs_layout_hdr *pnfs_layout_type,
 		nr_pages = size_nr_pages;
 
 	INIT_LIST_HEAD(&state->err_list);
-	state->lseg = lseg;
+	state->objlseg = objlseg;
 	state->rpcdata = rpcdata;
 	state->pages = pages;
 	state->pgbase = pgbase;
@@ -232,7 +231,7 @@ objlayout_iodone(struct objlayout_io_state *state)
 	if (likely(state->status >= 0)) {
 		objlayout_free_io_state(state);
 	} else {
-		struct objlayout *objlay = OBJLAYOUT(state->lseg->layout);
+		struct objlayout *objlay = OBJLAYOUT(state->objlseg->lseg.layout);
 
 		spin_lock(&objlay->lock);
 		objlay->delta_space_valid = OBJ_DSU_INVALID;
@@ -255,9 +254,8 @@ objlayout_io_set_result(struct objlayout_io_state *state, unsigned index,
 
 	BUG_ON(index >= state->num_comps);
 	if (osd_error) {
-		struct objlayout_segment *objlseg = LSEG_LD_DATA(state->lseg);
 		struct pnfs_osd_layout *layout =
-				(typeof(layout))objlseg->pnfs_osd_layout;
+			(typeof(layout))state->objlseg->pnfs_osd_layout;
 
 		ioerr->oer_component = layout->olo_comps[index].oc_object_id;
 		ioerr->oer_comp_offset = offset;
@@ -290,7 +288,7 @@ static void _rpc_commit_complete(struct work_struct *work)
 	task = container_of(work, struct rpc_task, u.tk_work);
 	wdata = container_of(task, struct nfs_write_data, task);
 
-	pnfs_client_ops->nfs_commit_complete(wdata);
+	pnfs_commit_done(wdata);
 }
 
 /*
@@ -320,7 +318,7 @@ static void _rpc_read_complete(struct work_struct *work)
 	task = container_of(work, struct rpc_task, u.tk_work);
 	rdata = container_of(task, struct nfs_read_data, task);
 
-	pnfs_client_ops->nfs_readlist_complete(rdata);
+	pnfs_read_done(rdata);
 }
 
 void
@@ -341,7 +339,7 @@ objlayout_read_done(struct objlayout_io_state *state, ssize_t status, bool sync)
 	/* must not use state after this point */
 
 	if (sync)
-		pnfs_client_ops->nfs_readlist_complete(rdata);
+		pnfs_read_done(rdata);
 	else {
 		INIT_WORK(&rdata->task.u.tk_work, _rpc_read_complete);
 		schedule_work(&rdata->task.u.tk_work);
@@ -405,7 +403,7 @@ static void _rpc_write_complete(struct work_struct *work)
 	task = container_of(work, struct rpc_task, u.tk_work);
 	wdata = container_of(task, struct nfs_write_data, task);
 
-	pnfs_client_ops->nfs_writelist_complete(wdata);
+	pnfs_writeback_done(wdata);
 }
 
 void
@@ -431,7 +429,7 @@ objlayout_write_done(struct objlayout_io_state *state, ssize_t status,
 	/* must not use state after this point */
 
 	if (sync)
-		pnfs_client_ops->nfs_writelist_complete(wdata);
+		pnfs_writeback_done(wdata);
 	else {
 		INIT_WORK(&wdata->task.u.tk_work, _rpc_write_complete);
 		schedule_work(&wdata->task.u.tk_work);
@@ -683,7 +681,7 @@ struct objlayout_deviceinfo {
  * should be called.
  */
 int objlayout_get_deviceinfo(struct pnfs_layout_hdr *pnfslay,
-	struct pnfs_deviceid *d_id, struct pnfs_osd_deviceaddr **deviceaddr)
+	struct nfs4_deviceid *d_id, struct pnfs_osd_deviceaddr **deviceaddr)
 {
 	struct objlayout_deviceinfo *odi;
 	struct pnfs_device pd;
@@ -701,14 +699,13 @@ int objlayout_get_deviceinfo(struct pnfs_layout_hdr *pnfslay,
 
 	memcpy(&pd.dev_id, d_id, sizeof(*d_id));
 	pd.layout_type = LAYOUT_OSD2_OBJECTS;
-	pd.dev_notify_types = 0;
 	pd.pages = &page;
 	pd.pgbase = 0;
 	pd.pglen = PAGE_SIZE;
 	pd.mincount = 0;
 
-	sb = PNFS_INODE(pnfslay)->i_sb;
-	err = pnfs_client_ops->nfs_getdeviceinfo(PNFS_NFS_SERVER(pnfslay), &pd);
+	sb = pnfslay->inode->i_sb;
+	err = nfs4_proc_getdeviceinfo(NFS_SERVER(pnfslay->inode), &pd);
 	dprintk("%s nfs_getdeviceinfo returned %d\n", __func__, err);
 	if (err)
 		goto err_out;
@@ -746,7 +743,7 @@ void objlayout_put_deviceinfo(struct pnfs_osd_deviceaddr *deviceaddr)
  * Return the pnfs_mount_type structure so the
  * pNFS_client can refer to the mount point later on.
  */
-static int
+int
 objlayout_initialize_mountpoint(struct nfs_server *server,
 				const struct nfs_fh *mntfh)
 {
@@ -767,24 +764,10 @@ objlayout_initialize_mountpoint(struct nfs_server *server,
 /*
  * Uninitialize a mountpoint
  */
-static int
+int
 objlayout_uninitialize_mountpoint(struct nfs_server *server)
 {
 	dprintk("%s: Begin %p\n", __func__, server->pnfs_ld_data);
 	objio_fini_mt(server->pnfs_ld_data);
 	return 0;
 }
-
-struct layoutdriver_io_operations objlayout_io_operations = {
-	.commit                  = objlayout_commit,
-	.read_pagelist           = objlayout_read_pagelist,
-	.write_pagelist          = objlayout_write_pagelist,
-	.alloc_layout            = objlayout_alloc_layout,
-	.free_layout             = objlayout_free_layout,
-	.alloc_lseg              = objlayout_alloc_lseg,
-	.free_lseg               = objlayout_free_lseg,
-	.encode_layoutcommit	 = objlayout_encode_layoutcommit,
-	.encode_layoutreturn     = objlayout_encode_layoutreturn,
-	.initialize_mountpoint   = objlayout_initialize_mountpoint,
-	.uninitialize_mountpoint = objlayout_uninitialize_mountpoint,
-};
diff --git a/fs/nfs/objlayout/objlayout.h b/fs/nfs/objlayout/objlayout.h
index adec7ad..cad24a4 100644
--- a/fs/nfs/objlayout/objlayout.h
+++ b/fs/nfs/objlayout/objlayout.h
@@ -44,13 +44,14 @@
 #define _OBJLAYOUT_H
 
 #include <linux/nfs_fs.h>
-#include <linux/nfs4_pnfs.h>
 #include <linux/pnfs_osd_xdr.h>
+#include "../pnfs.h"
 
 /*
  * in-core layout segment
  */
 struct objlayout_segment {
+	struct pnfs_layout_segment lseg;
 	void *internal;    /* for provider internal use */
 	u8 pnfs_osd_layout[];
 };
@@ -85,7 +86,7 @@ OBJLAYOUT(struct pnfs_layout_hdr *lo)
  * embedded in objects provider io_state data structure
  */
 struct objlayout_io_state {
-	struct pnfs_layout_segment *lseg;
+	struct objlayout_segment *objlseg;
 
 	struct page **pages;
 	unsigned pgbase;
@@ -139,7 +140,7 @@ extern void objlayout_io_set_result(struct objlayout_io_state *state,
 static inline void
 objlayout_add_delta_space_used(struct objlayout_io_state *state, s64 space_used)
 {
-	struct objlayout *objlay = OBJLAYOUT(state->lseg->layout);
+	struct objlayout *objlay = OBJLAYOUT(state->objlseg->lseg.layout);
 
 	/* If one of the I/Os errored out and the delta_space_used was
 	 * invalid we render the complete report as invalid. Protocol mandate
@@ -159,13 +160,47 @@ extern void objlayout_write_done(struct objlayout_io_state *state,
 				 ssize_t status, bool sync);
 
 extern int objlayout_get_deviceinfo(struct pnfs_layout_hdr *pnfslay,
-	struct pnfs_deviceid *d_id, struct pnfs_osd_deviceaddr **deviceaddr);
+	struct nfs4_deviceid *d_id, struct pnfs_osd_deviceaddr **deviceaddr);
 extern void objlayout_put_deviceinfo(struct pnfs_osd_deviceaddr *deviceaddr);
 
 /*
  * exported generic objects function vectors
  */
-extern struct layoutdriver_io_operations objlayout_io_operations;
-extern struct pnfs_client_operations *pnfs_client_ops;
+
+extern int objlayout_initialize_mountpoint(
+	struct nfs_server *,
+	const struct nfs_fh *);
+extern int objlayout_uninitialize_mountpoint(struct nfs_server *);
+
+extern struct pnfs_layout_hdr *objlayout_alloc_layout_hdr(struct inode *);
+extern void objlayout_free_layout_hdr(struct pnfs_layout_hdr *);
+
+extern struct pnfs_layout_segment *objlayout_alloc_lseg(
+	struct pnfs_layout_hdr *,
+	struct nfs4_layoutget_res *);
+extern void objlayout_free_lseg(struct pnfs_layout_segment *);
+
+extern enum pnfs_try_status objlayout_read_pagelist(
+	struct nfs_read_data *,
+	unsigned nr_pages);
+
+extern enum pnfs_try_status objlayout_write_pagelist(
+	struct nfs_write_data *,
+	unsigned nr_pages,
+	int how);
+
+extern enum pnfs_try_status objlayout_commit(
+	struct nfs_write_data *,
+	int how);
+
+extern void objlayout_encode_layoutcommit(
+	struct pnfs_layout_hdr *,
+	struct xdr_stream *,
+	const struct nfs4_layoutcommit_args *);
+
+extern void objlayout_encode_layoutreturn(
+	struct pnfs_layout_hdr *,
+	struct xdr_stream *,
+	const struct nfs4_layoutreturn_args *);
 
 #endif /* _OBJLAYOUT_H */
diff --git a/fs/nfs/objlayout/panfs_shim.c b/fs/nfs/objlayout/panfs_shim.c
index fd46e96..9a499a9 100644
--- a/fs/nfs/objlayout/panfs_shim.c
+++ b/fs/nfs/objlayout/panfs_shim.c
@@ -463,8 +463,7 @@ objio_read_pagelist(struct objlayout_io_state *ol_state)
 {
 	struct panfs_shim_io_state *state = container_of(ol_state,
 					struct panfs_shim_io_state, ol_state);
-	struct objlayout_segment *lseg = LSEG_LD_DATA(ol_state->lseg);
-	pan_sm_map_cap_t *mcs = (pan_sm_map_cap_t *)lseg->internal;
+	pan_sm_map_cap_t *mcs = (pan_sm_map_cap_t *)ol_state->objlseg->internal;
 	ssize_t status = 0;
 	pan_status_t rc = PAN_SUCCESS;
 
@@ -544,8 +543,7 @@ objio_write_pagelist(struct objlayout_io_state *ol_state,
 {
 	struct panfs_shim_io_state *state = container_of(ol_state,
 					struct panfs_shim_io_state, ol_state);
-	struct objlayout_segment *lseg = LSEG_LD_DATA(ol_state->lseg);
-	pan_sm_map_cap_t *mcs = (pan_sm_map_cap_t *)lseg->internal;
+	pan_sm_map_cap_t *mcs = (pan_sm_map_cap_t *)ol_state->objlseg->internal;
 	ssize_t status = 0;
 	pan_status_t rc = PAN_SUCCESS;
 
@@ -636,7 +634,8 @@ panlayout_get_stripesize(struct pnfs_layout_hdr *pnfslay)
 
 	list_for_each_entry(lseg, &pnfslay->segs, fi_list) {
 		int n;
-		struct objlayout_segment *panlseg = LSEG_LD_DATA(lseg);
+		struct objlayout_segment *panlseg =
+			container_of(lseg, struct objlayout_segment, lseg);
 		struct pnfs_osd_layout *lo =
 			(struct pnfs_osd_layout *)panlseg->pnfs_osd_layout;
 		struct pnfs_osd_data_map *map = &lo->olo_map;
@@ -688,25 +687,37 @@ panlayout_get_blocksize(void)
 	return sz;
 }
 
-static struct layoutdriver_policy_operations panlayout_policy_operations = {
 /*
  * Don't gather across stripes, but rather gather (coalesce) up to
  * the stripe size.
  *
  * FIXME: change interface to use merge_align, merge_count
  */
-	.flags                 = PNFS_LAYOUTRET_ON_SETATTR,
-	.get_stripesize        = panlayout_get_stripesize,
-	.get_blocksize         = panlayout_get_blocksize,
-};
-
 #define PNFS_LAYOUT_PANOSD (NFS4_PNFS_PRIVATE_LAYOUT | LAYOUT_OSD2_OBJECTS)
 
 static struct pnfs_layoutdriver_type panlayout_type = {
 	.id = PNFS_LAYOUT_PANOSD,
 	.name = "PNFS_LAYOUT_PANOSD",
-	.ld_io_ops = &objlayout_io_operations,
-	.ld_policy_ops = &panlayout_policy_operations,
+	.flags                   = PNFS_LAYOUTRET_ON_SETATTR,
+
+	.initialize_mountpoint   = objlayout_initialize_mountpoint,
+	.uninitialize_mountpoint = objlayout_uninitialize_mountpoint,
+
+	.alloc_layout_hdr        = objlayout_alloc_layout_hdr,
+	.free_layout_hdr         = objlayout_free_layout_hdr,
+
+	.alloc_lseg              = objlayout_alloc_lseg,
+	.free_lseg               = objlayout_free_lseg,
+
+	.get_stripesize          = panlayout_get_stripesize,
+	.get_blocksize           = panlayout_get_blocksize,
+
+	.read_pagelist           = objlayout_read_pagelist,
+	.write_pagelist          = objlayout_write_pagelist,
+	.commit                  = objlayout_commit,
+
+	.encode_layoutcommit	 = objlayout_encode_layoutcommit,
+	.encode_layoutreturn     = objlayout_encode_layoutreturn,
 };
 
 MODULE_DESCRIPTION("pNFS Layout Driver for Panasas OSDs");
@@ -716,10 +727,16 @@ MODULE_LICENSE("GPL");
 static int __init
 panlayout_init(void)
 {
-	pnfs_client_ops = pnfs_register_layoutdriver(&panlayout_type);
-	printk(KERN_INFO "%s: Registered Panasas OSD pNFS Layout Driver\n",
-	       __func__);
-	return 0;
+	int ret = pnfs_register_layoutdriver(&panlayout_type);
+
+	if (ret)
+		printk(KERN_INFO
+			"%s: Registering Panasas OSD pNFS Layout Driver failed: error=%d\n",
+			__func__, ret);
+	else
+		printk(KERN_INFO "%s: Registered Panasas OSD pNFS Layout Driver\n",
+			__func__);
+	return ret;
 }
 
 static void __exit
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index fef61e4..df29296 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -588,6 +588,8 @@ enum pnfs_layouttype {
 	LAYOUT_NFSV4_1_FILES  = 1,
 	LAYOUT_OSD2_OBJECTS = 2,
 	LAYOUT_BLOCK_VOLUME = 3,
+
+	NFS4_PNFS_PRIVATE_LAYOUT = 0x80000000
 };
 
 /* used for both layout return and recall */
diff --git a/include/linux/pnfs_osd_xdr.h b/include/linux/pnfs_osd_xdr.h
index 8fc21b0..b404f33 100644
--- a/include/linux/pnfs_osd_xdr.h
+++ b/include/linux/pnfs_osd_xdr.h
@@ -118,7 +118,7 @@ pnfs_osd_data_map_incore_sz(void)
  *   };
  */
 struct pnfs_osd_objid {
-	struct pnfs_deviceid	oid_device_id;
+	struct nfs4_deviceid	oid_device_id;
 	u64			oid_partition_id;
 	u64			oid_object_id;
 };
@@ -133,7 +133,7 @@ struct pnfs_osd_objid {
 static inline int
 pnfs_osd_objid_xdr_sz(void)
 {
-	return (NFS4_PNFS_DEVICEID4_SIZE / 4) + 2 + 2;
+	return (NFS4_DEVICEID4_SIZE / 4) + 2 + 2;
 }
 
 static inline size_t
-- 
1.7.2.3


  parent reply	other threads:[~2010-09-29 11:12 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-30 16:34 pnfs git tree status pnfs-all-2.6.36-rc3-2010-08-30 Benny Halevy
2010-08-30 16:43 ` [PATCH 1/2] SQUASHME: pnfs-submit: do not use NIPQUAD in nfs4_callback_layoutrecall dprintk Benny Halevy
2010-08-30 16:43 ` [PATCH 2/2] SQUASHME: pnfs-submit: get machince creds for getdeviceinfo Benny Halevy
2010-08-30 16:44 ` [PATCH 3/3] SQUASHME: pnfs: get machince creds for getdevicelist Benny Halevy
2010-08-30 16:44 ` [PATCH 4/4] SQUASHME: pnfs-obj use REQ flags rather than BIO flags Benny Halevy
2010-09-29 11:06 ` pnfs git tree status pnfs-all-2.6.36-rc6-2010-09-29 Benny Halevy
2010-09-29 11:09   ` [PATCH 1/5] SQUASHME: pnfs-submit: add missing include file in nfs4filelayoutdev.c Benny Halevy
2010-09-29 11:09   ` [PATCH 2/5] SQUASHME: move nfs4_deviceid definitions to include/linux/nfs4.h Benny Halevy
2010-09-29 11:09   ` [PATCH 3/5] SQUASHME: pnfs-submit: handle non-pnfs case in set_pnfs_layoutdriver Benny Halevy
2010-09-29 11:10   ` [PATCH 4/5] pnfs-submit: file needs layout commit, server attributes may be stale Benny Halevy
2010-09-29 11:10   ` [PATCH 5/5] NFS: clear fsinfo before sendign rpc Benny Halevy
2010-10-13 18:03     ` Fred Isaman
2010-10-13 20:34       ` Benny Halevy
2010-10-13 20:54         ` Trond Myklebust
2010-10-13 21:13           ` Benny Halevy
2010-10-13 21:20             ` Trond Myklebust
     [not found]               ` <1287004813.3015.212.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2010-10-13 21:27                 ` Benny Halevy
2010-09-29 11:10   ` [PATCH 6/9] pnfs: alloc and free layout_hdr layoutdriver methods Benny Halevy
2010-09-29 11:10   ` [PATCH 7/9] pnfs: allow nfs4_proc_layoutget to sleep on invalid lsegs Benny Halevy
2010-09-29 11:10   ` [PATCH 8/9] SQUASHME: pnfs: refactor put_lseg{_locked} Benny Halevy
2010-09-29 11:11   ` [PATCH 9/9] SQUASHME: pnfs: get rid of lo_waitq Benny Halevy
2010-09-29 11:11   ` [PATCH 10/15] SQUASHME: pnfsblock: remove obsolete include file from blocklayout.h Benny Halevy
2010-09-29 11:11   ` [PATCH 11/15] SQUASHME: pnfsblock: use nfs4_deviceid Benny Halevy
2010-09-29 11:11   ` [PATCH 12/15] SQUASHME: pnfsblock: no callback ops Benny Halevy
2010-09-29 11:11   ` [PATCH 13/15] SQAUSHME: pnfsblock: no PNFS_NFS_SERVER Benny Halevy
2010-09-29 11:12   ` [PATCH 14/15] SQUASHME: pnfsblock: no dev_notify_types Benny Halevy
2010-09-29 11:12   ` [PATCH 15/15] SQUASHME: pnfsblock: use new struct pnfs_layout_hdr Benny Halevy
2010-09-29 11:12   ` [PATCH 16/17] SQUASHME: pnfs-obj: fix REQ flags usage Benny Halevy
2010-09-29 11:12   ` Benny Halevy [this message]
2010-09-29 11:12   ` [PATCH 18/18] SQUASHME: pnfsd-exofs: convert to new pnfs-submit changes Benny Halevy
2010-09-29 11:17   ` pnfs git tree status pnfs-all-2.6.36-rc6-2010-09-29 Benny Halevy
2010-09-29 11:18   ` [PATCH] pnfs: get layout in proper segments Benny Halevy
2010-09-29 14:07   ` pnfs git tree status pnfs-all-2.6.36-rc6-2010-09-29 Tigran Mkrtchyan
2010-09-29 14:09     ` Tigran Mkrtchyan
2010-09-29 14:22       ` Benny Halevy
2010-09-29 14:36         ` Tigran Mkrtchyan
2010-09-29 15:25           ` Benny Halevy
2010-09-29 16:57             ` Tigran Mkrtchyan
2010-09-29 18:35               ` Fred Isaman
2010-09-30  7:58             ` Tigran Mkrtchyan
2010-09-30  8:29               ` Benny Halevy
2010-09-30  8:30         ` Benny Halevy
2010-09-30  9:12           ` Tigran Mkrtchyan
2010-09-30  9:17             ` Benny Halevy
2010-09-30 21:37               ` pnfs-all-2.6.36-rc6-2010-09-30 Benny Halevy
2010-09-30 22:23               ` pnfs git tree status pnfs-all-2.6.36-rc6-2010-09-29 Marc Eshel
2010-10-01  4:17               ` pNFS DS session Marc Eshel
2010-10-01  6:12                 ` Tigran Mkrtchyan
2010-10-01  8:47                   ` Boaz Harrosh
2010-10-01 12:33                     ` Benny Halevy
2010-10-01 15:40                       ` Marc Eshel
2010-10-01 17:10                         ` J. Bruce Fields
2010-10-01 18:00                           ` Marc Eshel
2010-10-01 18:14                             ` J. Bruce Fields
2010-10-01 18:29                               ` Andy Adamson
2010-10-03 14:55                                 ` Boaz Harrosh
     [not found]   ` <4CA3C1E2.2050701@RedHat.com>
2010-09-30  8:26     ` pnfs git tree status pnfs-all-2.6.36-rc6-2010-09-29 Benny Halevy
2010-10-28 13:36   ` pnfs git tree status pnfs-all-2.6.36-2010-10-28 Benny Halevy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1285758761-27343-1-git-send-email-bhalevy@panasas.com \
    --to=bhalevy@panasas.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).