All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Christoph Hellwig <hch@lst.de>,
	Weston Andros Adamson <dros@primarydata.com>,
	Trond Myklebust <trond.myklebust@primarydata.com>
Subject: [PATCH 3.16 162/357] nfs: merge nfs_pgio_data into _header
Date: Fri,  3 Oct 2014 14:29:08 -0700	[thread overview]
Message-ID: <20141003212938.337402693@linuxfoundation.org> (raw)
In-Reply-To: <20141003212933.458851516@linuxfoundation.org>

3.16-stable review patch.  If anyone has any objections, please let me know.

------------------


From: Weston Andros Adamson <dros@primarydata.com>

commit d45f60c67848b9f19160692581d78e5b4757a000 upstream.

struct nfs_pgio_data only exists as a member of nfs_pgio_header, but is
passed around everywhere, because there used to be multiple _data structs
per _header. Many of these functions then use the _data to find a pointer
to the _header.  This patch cleans this up by merging the nfs_pgio_data
structure into nfs_pgio_header and passing nfs_pgio_header around instead.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/nfs/blocklayout/blocklayout.c |   98 ++++++++++------------
 fs/nfs/direct.c                  |    8 -
 fs/nfs/filelayout/filelayout.c   |  170 ++++++++++++++++++---------------------
 fs/nfs/internal.h                |    6 -
 fs/nfs/nfs3proc.c                |   21 ++--
 fs/nfs/nfs4_fs.h                 |    6 -
 fs/nfs/nfs4proc.c                |  105 ++++++++++++------------
 fs/nfs/nfs4trace.h               |   28 +++---
 fs/nfs/objlayout/objio_osd.c     |   24 ++---
 fs/nfs/objlayout/objlayout.c     |   81 ++++++++----------
 fs/nfs/objlayout/objlayout.h     |    8 -
 fs/nfs/pagelist.c                |  120 +++++++++++++--------------
 fs/nfs/pnfs.c                    |   80 +++++++-----------
 fs/nfs/pnfs.h                    |   10 +-
 fs/nfs/proc.c                    |   27 +++---
 fs/nfs/read.c                    |   42 +++++----
 fs/nfs/write.c                   |   56 ++++++------
 include/linux/nfs_page.h         |    9 +-
 include/linux/nfs_xdr.h          |   43 ++++-----
 19 files changed, 460 insertions(+), 482 deletions(-)

--- a/fs/nfs/blocklayout/blocklayout.c
+++ b/fs/nfs/blocklayout/blocklayout.c
@@ -210,8 +210,7 @@ static void bl_end_io_read(struct bio *b
 			SetPageUptodate(bvec->bv_page);
 
 	if (err) {
-		struct nfs_pgio_data *rdata = par->data;
-		struct nfs_pgio_header *header = rdata->header;
+		struct nfs_pgio_header *header = par->data;
 
 		if (!header->pnfs_error)
 			header->pnfs_error = -EIO;
@@ -224,44 +223,44 @@ static void bl_end_io_read(struct bio *b
 static void bl_read_cleanup(struct work_struct *work)
 {
 	struct rpc_task *task;
-	struct nfs_pgio_data *rdata;
+	struct nfs_pgio_header *hdr;
 	dprintk("%s enter\n", __func__);
 	task = container_of(work, struct rpc_task, u.tk_work);
-	rdata = container_of(task, struct nfs_pgio_data, task);
-	pnfs_ld_read_done(rdata);
+	hdr = container_of(task, struct nfs_pgio_header, task);
+	pnfs_ld_read_done(hdr);
 }
 
 static void
 bl_end_par_io_read(void *data, int unused)
 {
-	struct nfs_pgio_data *rdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	rdata->task.tk_status = rdata->header->pnfs_error;
-	INIT_WORK(&rdata->task.u.tk_work, bl_read_cleanup);
-	schedule_work(&rdata->task.u.tk_work);
+	hdr->task.tk_status = hdr->pnfs_error;
+	INIT_WORK(&hdr->task.u.tk_work, bl_read_cleanup);
+	schedule_work(&hdr->task.u.tk_work);
 }
 
 static enum pnfs_try_status
-bl_read_pagelist(struct nfs_pgio_data *rdata)
+bl_read_pagelist(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *header = rdata->header;
+	struct nfs_pgio_header *header = hdr;
 	int i, hole;
 	struct bio *bio = NULL;
 	struct pnfs_block_extent *be = NULL, *cow_read = NULL;
 	sector_t isect, extent_length = 0;
 	struct parallel_io *par;
-	loff_t f_offset = rdata->args.offset;
-	size_t bytes_left = rdata->args.count;
+	loff_t f_offset = hdr->args.offset;
+	size_t bytes_left = hdr->args.count;
 	unsigned int pg_offset, pg_len;
-	struct page **pages = rdata->args.pages;
-	int pg_index = rdata->args.pgbase >> PAGE_CACHE_SHIFT;
+	struct page **pages = hdr->args.pages;
+	int pg_index = hdr->args.pgbase >> PAGE_CACHE_SHIFT;
 	const bool is_dio = (header->dreq != NULL);
 
 	dprintk("%s enter nr_pages %u offset %lld count %u\n", __func__,
-		rdata->page_array.npages, f_offset,
-		(unsigned int)rdata->args.count);
+		hdr->page_array.npages, f_offset,
+		(unsigned int)hdr->args.count);
 
-	par = alloc_parallel(rdata);
+	par = alloc_parallel(hdr);
 	if (!par)
 		goto use_mds;
 	par->pnfs_callback = bl_end_par_io_read;
@@ -269,7 +268,7 @@ bl_read_pagelist(struct nfs_pgio_data *r
 
 	isect = (sector_t) (f_offset >> SECTOR_SHIFT);
 	/* Code assumes extents are page-aligned */
-	for (i = pg_index; i < rdata->page_array.npages; i++) {
+	for (i = pg_index; i < hdr->page_array.npages; i++) {
 		if (!extent_length) {
 			/* We've used up the previous extent */
 			bl_put_extent(be);
@@ -319,7 +318,7 @@ bl_read_pagelist(struct nfs_pgio_data *r
 
 			be_read = (hole && cow_read) ? cow_read : be;
 			bio = do_add_page_to_bio(bio,
-						 rdata->page_array.npages - i,
+						 hdr->page_array.npages - i,
 						 READ,
 						 isect, pages[i], be_read,
 						 bl_end_io_read, par,
@@ -334,10 +333,10 @@ bl_read_pagelist(struct nfs_pgio_data *r
 		extent_length -= PAGE_CACHE_SECTORS;
 	}
 	if ((isect << SECTOR_SHIFT) >= header->inode->i_size) {
-		rdata->res.eof = 1;
-		rdata->res.count = header->inode->i_size - rdata->args.offset;
+		hdr->res.eof = 1;
+		hdr->res.count = header->inode->i_size - hdr->args.offset;
 	} else {
-		rdata->res.count = (isect << SECTOR_SHIFT) - rdata->args.offset;
+		hdr->res.count = (isect << SECTOR_SHIFT) - hdr->args.offset;
 	}
 out:
 	bl_put_extent(be);
@@ -392,8 +391,7 @@ static void bl_end_io_write_zero(struct
 	}
 
 	if (unlikely(err)) {
-		struct nfs_pgio_data *data = par->data;
-		struct nfs_pgio_header *header = data->header;
+		struct nfs_pgio_header *header = par->data;
 
 		if (!header->pnfs_error)
 			header->pnfs_error = -EIO;
@@ -407,8 +405,7 @@ static void bl_end_io_write(struct bio *
 {
 	struct parallel_io *par = bio->bi_private;
 	const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags);
-	struct nfs_pgio_data *data = par->data;
-	struct nfs_pgio_header *header = data->header;
+	struct nfs_pgio_header *header = par->data;
 
 	if (!uptodate) {
 		if (!header->pnfs_error)
@@ -425,32 +422,32 @@ static void bl_end_io_write(struct bio *
 static void bl_write_cleanup(struct work_struct *work)
 {
 	struct rpc_task *task;
-	struct nfs_pgio_data *wdata;
+	struct nfs_pgio_header *hdr;
 	dprintk("%s enter\n", __func__);
 	task = container_of(work, struct rpc_task, u.tk_work);
-	wdata = container_of(task, struct nfs_pgio_data, task);
-	if (likely(!wdata->header->pnfs_error)) {
+	hdr = container_of(task, struct nfs_pgio_header, task);
+	if (likely(!hdr->pnfs_error)) {
 		/* Marks for LAYOUTCOMMIT */
-		mark_extents_written(BLK_LSEG2EXT(wdata->header->lseg),
-				     wdata->args.offset, wdata->args.count);
+		mark_extents_written(BLK_LSEG2EXT(hdr->lseg),
+				     hdr->args.offset, hdr->args.count);
 	}
-	pnfs_ld_write_done(wdata);
+	pnfs_ld_write_done(hdr);
 }
 
 /* Called when last of bios associated with a bl_write_pagelist call finishes */
 static void bl_end_par_io_write(void *data, int num_se)
 {
-	struct nfs_pgio_data *wdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	if (unlikely(wdata->header->pnfs_error)) {
-		bl_free_short_extents(&BLK_LSEG2EXT(wdata->header->lseg)->bl_inval,
+	if (unlikely(hdr->pnfs_error)) {
+		bl_free_short_extents(&BLK_LSEG2EXT(hdr->lseg)->bl_inval,
 					num_se);
 	}
 
-	wdata->task.tk_status = wdata->header->pnfs_error;
-	wdata->writeverf.committed = NFS_FILE_SYNC;
-	INIT_WORK(&wdata->task.u.tk_work, bl_write_cleanup);
-	schedule_work(&wdata->task.u.tk_work);
+	hdr->task.tk_status = hdr->pnfs_error;
+	hdr->writeverf.committed = NFS_FILE_SYNC;
+	INIT_WORK(&hdr->task.u.tk_work, bl_write_cleanup);
+	schedule_work(&hdr->task.u.tk_work);
 }
 
 /* FIXME STUB - mark intersection of layout and page as bad, so is not
@@ -675,18 +672,17 @@ check_page:
 }
 
 static enum pnfs_try_status
-bl_write_pagelist(struct nfs_pgio_data *wdata, int sync)
+bl_write_pagelist(struct nfs_pgio_header *header, int sync)
 {
-	struct nfs_pgio_header *header = wdata->header;
 	int i, ret, npg_zero, pg_index, last = 0;
 	struct bio *bio = NULL;
 	struct pnfs_block_extent *be = NULL, *cow_read = NULL;
 	sector_t isect, last_isect = 0, extent_length = 0;
 	struct parallel_io *par = NULL;
-	loff_t offset = wdata->args.offset;
-	size_t count = wdata->args.count;
+	loff_t offset = header->args.offset;
+	size_t count = header->args.count;
 	unsigned int pg_offset, pg_len, saved_len;
-	struct page **pages = wdata->args.pages;
+	struct page **pages = header->args.pages;
 	struct page *page;
 	pgoff_t index;
 	u64 temp;
@@ -701,11 +697,11 @@ bl_write_pagelist(struct nfs_pgio_data *
 		dprintk("pnfsblock nonblock aligned DIO writes. Resend MDS\n");
 		goto out_mds;
 	}
-	/* At this point, wdata->page_aray is a (sequential) list of nfs_pages.
+	/* At this point, header->page_aray is a (sequential) list of nfs_pages.
 	 * We want to write each, and if there is an error set pnfs_error
 	 * to have it redone using nfs.
 	 */
-	par = alloc_parallel(wdata);
+	par = alloc_parallel(header);
 	if (!par)
 		goto out_mds;
 	par->pnfs_callback = bl_end_par_io_write;
@@ -792,8 +788,8 @@ next_page:
 	bio = bl_submit_bio(WRITE, bio);
 
 	/* Middle pages */
-	pg_index = wdata->args.pgbase >> PAGE_CACHE_SHIFT;
-	for (i = pg_index; i < wdata->page_array.npages; i++) {
+	pg_index = header->args.pgbase >> PAGE_CACHE_SHIFT;
+	for (i = pg_index; i < header->page_array.npages; i++) {
 		if (!extent_length) {
 			/* We've used up the previous extent */
 			bl_put_extent(be);
@@ -864,7 +860,7 @@ next_page:
 		}
 
 
-		bio = do_add_page_to_bio(bio, wdata->page_array.npages - i,
+		bio = do_add_page_to_bio(bio, header->page_array.npages - i,
 					 WRITE,
 					 isect, pages[i], be,
 					 bl_end_io_write, par,
@@ -893,7 +889,7 @@ next_page:
 	}
 
 write_done:
-	wdata->res.count = wdata->args.count;
+	header->res.count = header->args.count;
 out:
 	bl_put_extent(be);
 	bl_put_extent(cow_read);
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -148,8 +148,8 @@ static void nfs_direct_set_hdr_verf(stru
 {
 	struct nfs_writeverf *verfp;
 
-	verfp = nfs_direct_select_verf(dreq, hdr->data.ds_clp,
-				      hdr->data.ds_idx);
+	verfp = nfs_direct_select_verf(dreq, hdr->ds_clp,
+				      hdr->ds_idx);
 	WARN_ON_ONCE(verfp->committed >= 0);
 	memcpy(verfp, &hdr->verf, sizeof(struct nfs_writeverf));
 	WARN_ON_ONCE(verfp->committed < 0);
@@ -169,8 +169,8 @@ static int nfs_direct_set_or_cmp_hdr_ver
 {
 	struct nfs_writeverf *verfp;
 
-	verfp = nfs_direct_select_verf(dreq, hdr->data.ds_clp,
-					 hdr->data.ds_idx);
+	verfp = nfs_direct_select_verf(dreq, hdr->ds_clp,
+					 hdr->ds_idx);
 	if (verfp->committed < 0) {
 		nfs_direct_set_hdr_verf(dreq, hdr);
 		return 0;
--- a/fs/nfs/filelayout/filelayout.c
+++ b/fs/nfs/filelayout/filelayout.c
@@ -84,19 +84,18 @@ filelayout_get_dserver_offset(struct pnf
 	BUG();
 }
 
-static void filelayout_reset_write(struct nfs_pgio_data *data)
+static void filelayout_reset_write(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-	struct rpc_task *task = &data->task;
+	struct rpc_task *task = &hdr->task;
 
 	if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags)) {
 		dprintk("%s Reset task %5u for i/o through MDS "
 			"(req %s/%llu, %u bytes @ offset %llu)\n", __func__,
-			data->task.tk_pid,
+			hdr->task.tk_pid,
 			hdr->inode->i_sb->s_id,
 			(unsigned long long)NFS_FILEID(hdr->inode),
-			data->args.count,
-			(unsigned long long)data->args.offset);
+			hdr->args.count,
+			(unsigned long long)hdr->args.offset);
 
 		task->tk_status = pnfs_write_done_resend_to_mds(hdr->inode,
 							&hdr->pages,
@@ -105,19 +104,18 @@ static void filelayout_reset_write(struc
 	}
 }
 
-static void filelayout_reset_read(struct nfs_pgio_data *data)
+static void filelayout_reset_read(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-	struct rpc_task *task = &data->task;
+	struct rpc_task *task = &hdr->task;
 
 	if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags)) {
 		dprintk("%s Reset task %5u for i/o through MDS "
 			"(req %s/%llu, %u bytes @ offset %llu)\n", __func__,
-			data->task.tk_pid,
+			hdr->task.tk_pid,
 			hdr->inode->i_sb->s_id,
 			(unsigned long long)NFS_FILEID(hdr->inode),
-			data->args.count,
-			(unsigned long long)data->args.offset);
+			hdr->args.count,
+			(unsigned long long)hdr->args.offset);
 
 		task->tk_status = pnfs_read_done_resend_to_mds(hdr->inode,
 							&hdr->pages,
@@ -243,18 +241,17 @@ wait_on_recovery:
 /* NFS_PROTO call done callback routines */
 
 static int filelayout_read_done_cb(struct rpc_task *task,
-				struct nfs_pgio_data *data)
+				struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
 	int err;
 
-	trace_nfs4_pnfs_read(data, task->tk_status);
-	err = filelayout_async_handle_error(task, data->args.context->state,
-					    data->ds_clp, hdr->lseg);
+	trace_nfs4_pnfs_read(hdr, task->tk_status);
+	err = filelayout_async_handle_error(task, hdr->args.context->state,
+					    hdr->ds_clp, hdr->lseg);
 
 	switch (err) {
 	case -NFS4ERR_RESET_TO_MDS:
-		filelayout_reset_read(data);
+		filelayout_reset_read(hdr);
 		return task->tk_status;
 	case -EAGAIN:
 		rpc_restart_call_prepare(task);
@@ -270,15 +267,14 @@ static int filelayout_read_done_cb(struc
  * rfc5661 is not clear about which credential should be used.
  */
 static void
-filelayout_set_layoutcommit(struct nfs_pgio_data *wdata)
+filelayout_set_layoutcommit(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = wdata->header;
 
 	if (FILELAYOUT_LSEG(hdr->lseg)->commit_through_mds ||
-	    wdata->res.verf->committed == NFS_FILE_SYNC)
+	    hdr->res.verf->committed == NFS_FILE_SYNC)
 		return;
 
-	pnfs_set_layoutcommit(wdata);
+	pnfs_set_layoutcommit(hdr);
 	dprintk("%s inode %lu pls_end_pos %lu\n", __func__, hdr->inode->i_ino,
 		(unsigned long) NFS_I(hdr->inode)->layout->plh_lwb);
 }
@@ -305,83 +301,82 @@ filelayout_reset_to_mds(struct pnfs_layo
  */
 static void filelayout_read_prepare(struct rpc_task *task, void *data)
 {
-	struct nfs_pgio_data *rdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	if (unlikely(test_bit(NFS_CONTEXT_BAD, &rdata->args.context->flags))) {
+	if (unlikely(test_bit(NFS_CONTEXT_BAD, &hdr->args.context->flags))) {
 		rpc_exit(task, -EIO);
 		return;
 	}
-	if (filelayout_reset_to_mds(rdata->header->lseg)) {
+	if (filelayout_reset_to_mds(hdr->lseg)) {
 		dprintk("%s task %u reset io to MDS\n", __func__, task->tk_pid);
-		filelayout_reset_read(rdata);
+		filelayout_reset_read(hdr);
 		rpc_exit(task, 0);
 		return;
 	}
-	rdata->pgio_done_cb = filelayout_read_done_cb;
+	hdr->pgio_done_cb = filelayout_read_done_cb;
 
-	if (nfs41_setup_sequence(rdata->ds_clp->cl_session,
-			&rdata->args.seq_args,
-			&rdata->res.seq_res,
+	if (nfs41_setup_sequence(hdr->ds_clp->cl_session,
+			&hdr->args.seq_args,
+			&hdr->res.seq_res,
 			task))
 		return;
-	if (nfs4_set_rw_stateid(&rdata->args.stateid, rdata->args.context,
-			rdata->args.lock_context, FMODE_READ) == -EIO)
+	if (nfs4_set_rw_stateid(&hdr->args.stateid, hdr->args.context,
+			hdr->args.lock_context, FMODE_READ) == -EIO)
 		rpc_exit(task, -EIO); /* lost lock, terminate I/O */
 }
 
 static void filelayout_read_call_done(struct rpc_task *task, void *data)
 {
-	struct nfs_pgio_data *rdata = data;
+	struct nfs_pgio_header *hdr = data;
 
 	dprintk("--> %s task->tk_status %d\n", __func__, task->tk_status);
 
-	if (test_bit(NFS_IOHDR_REDO, &rdata->header->flags) &&
+	if (test_bit(NFS_IOHDR_REDO, &hdr->flags) &&
 	    task->tk_status == 0) {
-		nfs41_sequence_done(task, &rdata->res.seq_res);
+		nfs41_sequence_done(task, &hdr->res.seq_res);
 		return;
 	}
 
 	/* Note this may cause RPC to be resent */
-	rdata->header->mds_ops->rpc_call_done(task, data);
+	hdr->mds_ops->rpc_call_done(task, data);
 }
 
 static void filelayout_read_count_stats(struct rpc_task *task, void *data)
 {
-	struct nfs_pgio_data *rdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	rpc_count_iostats(task, NFS_SERVER(rdata->header->inode)->client->cl_metrics);
+	rpc_count_iostats(task, NFS_SERVER(hdr->inode)->client->cl_metrics);
 }
 
 static void filelayout_read_release(void *data)
 {
-	struct nfs_pgio_data *rdata = data;
-	struct pnfs_layout_hdr *lo = rdata->header->lseg->pls_layout;
+	struct nfs_pgio_header *hdr = data;
+	struct pnfs_layout_hdr *lo = hdr->lseg->pls_layout;
 
 	filelayout_fenceme(lo->plh_inode, lo);
-	nfs_put_client(rdata->ds_clp);
-	rdata->header->mds_ops->rpc_release(data);
+	nfs_put_client(hdr->ds_clp);
+	hdr->mds_ops->rpc_release(data);
 }
 
 static int filelayout_write_done_cb(struct rpc_task *task,
-				struct nfs_pgio_data *data)
+				struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
 	int err;
 
-	trace_nfs4_pnfs_write(data, task->tk_status);
-	err = filelayout_async_handle_error(task, data->args.context->state,
-					    data->ds_clp, hdr->lseg);
+	trace_nfs4_pnfs_write(hdr, task->tk_status);
+	err = filelayout_async_handle_error(task, hdr->args.context->state,
+					    hdr->ds_clp, hdr->lseg);
 
 	switch (err) {
 	case -NFS4ERR_RESET_TO_MDS:
-		filelayout_reset_write(data);
+		filelayout_reset_write(hdr);
 		return task->tk_status;
 	case -EAGAIN:
 		rpc_restart_call_prepare(task);
 		return -EAGAIN;
 	}
 
-	filelayout_set_layoutcommit(data);
+	filelayout_set_layoutcommit(hdr);
 	return 0;
 }
 
@@ -419,57 +414,57 @@ static int filelayout_commit_done_cb(str
 
 static void filelayout_write_prepare(struct rpc_task *task, void *data)
 {
-	struct nfs_pgio_data *wdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	if (unlikely(test_bit(NFS_CONTEXT_BAD, &wdata->args.context->flags))) {
+	if (unlikely(test_bit(NFS_CONTEXT_BAD, &hdr->args.context->flags))) {
 		rpc_exit(task, -EIO);
 		return;
 	}
-	if (filelayout_reset_to_mds(wdata->header->lseg)) {
+	if (filelayout_reset_to_mds(hdr->lseg)) {
 		dprintk("%s task %u reset io to MDS\n", __func__, task->tk_pid);
-		filelayout_reset_write(wdata);
+		filelayout_reset_write(hdr);
 		rpc_exit(task, 0);
 		return;
 	}
-	if (nfs41_setup_sequence(wdata->ds_clp->cl_session,
-			&wdata->args.seq_args,
-			&wdata->res.seq_res,
+	if (nfs41_setup_sequence(hdr->ds_clp->cl_session,
+			&hdr->args.seq_args,
+			&hdr->res.seq_res,
 			task))
 		return;
-	if (nfs4_set_rw_stateid(&wdata->args.stateid, wdata->args.context,
-			wdata->args.lock_context, FMODE_WRITE) == -EIO)
+	if (nfs4_set_rw_stateid(&hdr->args.stateid, hdr->args.context,
+			hdr->args.lock_context, FMODE_WRITE) == -EIO)
 		rpc_exit(task, -EIO); /* lost lock, terminate I/O */
 }
 
 static void filelayout_write_call_done(struct rpc_task *task, void *data)
 {
-	struct nfs_pgio_data *wdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	if (test_bit(NFS_IOHDR_REDO, &wdata->header->flags) &&
+	if (test_bit(NFS_IOHDR_REDO, &hdr->flags) &&
 	    task->tk_status == 0) {
-		nfs41_sequence_done(task, &wdata->res.seq_res);
+		nfs41_sequence_done(task, &hdr->res.seq_res);
 		return;
 	}
 
 	/* Note this may cause RPC to be resent */
-	wdata->header->mds_ops->rpc_call_done(task, data);
+	hdr->mds_ops->rpc_call_done(task, data);
 }
 
 static void filelayout_write_count_stats(struct rpc_task *task, void *data)
 {
-	struct nfs_pgio_data *wdata = data;
+	struct nfs_pgio_header *hdr = data;
 
-	rpc_count_iostats(task, NFS_SERVER(wdata->header->inode)->client->cl_metrics);
+	rpc_count_iostats(task, NFS_SERVER(hdr->inode)->client->cl_metrics);
 }
 
 static void filelayout_write_release(void *data)
 {
-	struct nfs_pgio_data *wdata = data;
-	struct pnfs_layout_hdr *lo = wdata->header->lseg->pls_layout;
+	struct nfs_pgio_header *hdr = data;
+	struct pnfs_layout_hdr *lo = hdr->lseg->pls_layout;
 
 	filelayout_fenceme(lo->plh_inode, lo);
-	nfs_put_client(wdata->ds_clp);
-	wdata->header->mds_ops->rpc_release(data);
+	nfs_put_client(hdr->ds_clp);
+	hdr->mds_ops->rpc_release(data);
 }
 
 static void filelayout_commit_prepare(struct rpc_task *task, void *data)
@@ -529,19 +524,18 @@ static const struct rpc_call_ops filelay
 };
 
 static enum pnfs_try_status
-filelayout_read_pagelist(struct nfs_pgio_data *data)
+filelayout_read_pagelist(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
 	struct pnfs_layout_segment *lseg = hdr->lseg;
 	struct nfs4_pnfs_ds *ds;
 	struct rpc_clnt *ds_clnt;
-	loff_t offset = data->args.offset;
+	loff_t offset = hdr->args.offset;
 	u32 j, idx;
 	struct nfs_fh *fh;
 
 	dprintk("--> %s ino %lu pgbase %u req %Zu@%llu\n",
 		__func__, hdr->inode->i_ino,
-		data->args.pgbase, (size_t)data->args.count, offset);
+		hdr->args.pgbase, (size_t)hdr->args.count, offset);
 
 	/* Retrieve the correct rpc_client for the byte range */
 	j = nfs4_fl_calc_j_index(lseg, offset);
@@ -559,30 +553,29 @@ filelayout_read_pagelist(struct nfs_pgio
 
 	/* No multipath support. Use first DS */
 	atomic_inc(&ds->ds_clp->cl_count);
-	data->ds_clp = ds->ds_clp;
-	data->ds_idx = idx;
+	hdr->ds_clp = ds->ds_clp;
+	hdr->ds_idx = idx;
 	fh = nfs4_fl_select_ds_fh(lseg, j);
 	if (fh)
-		data->args.fh = fh;
+		hdr->args.fh = fh;
 
-	data->args.offset = filelayout_get_dserver_offset(lseg, offset);
-	data->mds_offset = offset;
+	hdr->args.offset = filelayout_get_dserver_offset(lseg, offset);
+	hdr->mds_offset = offset;
 
 	/* Perform an asynchronous read to ds */
-	nfs_initiate_pgio(ds_clnt, data,
+	nfs_initiate_pgio(ds_clnt, hdr,
 			    &filelayout_read_call_ops, 0, RPC_TASK_SOFTCONN);
 	return PNFS_ATTEMPTED;
 }
 
 /* Perform async writes. */
 static enum pnfs_try_status
-filelayout_write_pagelist(struct nfs_pgio_data *data, int sync)
+filelayout_write_pagelist(struct nfs_pgio_header *hdr, int sync)
 {
-	struct nfs_pgio_header *hdr = data->header;
 	struct pnfs_layout_segment *lseg = hdr->lseg;
 	struct nfs4_pnfs_ds *ds;
 	struct rpc_clnt *ds_clnt;
-	loff_t offset = data->args.offset;
+	loff_t offset = hdr->args.offset;
 	u32 j, idx;
 	struct nfs_fh *fh;
 
@@ -598,21 +591,20 @@ filelayout_write_pagelist(struct nfs_pgi
 		return PNFS_NOT_ATTEMPTED;
 
 	dprintk("%s ino %lu sync %d req %Zu@%llu DS: %s cl_count %d\n",
-		__func__, hdr->inode->i_ino, sync, (size_t) data->args.count,
+		__func__, hdr->inode->i_ino, sync, (size_t) hdr->args.count,
 		offset, ds->ds_remotestr, atomic_read(&ds->ds_clp->cl_count));
 
-	data->pgio_done_cb = filelayout_write_done_cb;
+	hdr->pgio_done_cb = filelayout_write_done_cb;
 	atomic_inc(&ds->ds_clp->cl_count);
-	data->ds_clp = ds->ds_clp;
-	data->ds_idx = idx;
+	hdr->ds_clp = ds->ds_clp;
+	hdr->ds_idx = idx;
 	fh = nfs4_fl_select_ds_fh(lseg, j);
 	if (fh)
-		data->args.fh = fh;
-
-	data->args.offset = filelayout_get_dserver_offset(lseg, offset);
+		hdr->args.fh = fh;
+	hdr->args.offset = filelayout_get_dserver_offset(lseg, offset);
 
 	/* Perform an asynchronous write */
-	nfs_initiate_pgio(ds_clnt, data,
+	nfs_initiate_pgio(ds_clnt, hdr,
 				    &filelayout_write_call_ops, sync,
 				    RPC_TASK_SOFTCONN);
 	return PNFS_ATTEMPTED;
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -240,9 +240,9 @@ int nfs_iocounter_wait(struct nfs_io_cou
 extern const struct nfs_pageio_ops nfs_pgio_rw_ops;
 struct nfs_pgio_header *nfs_pgio_header_alloc(const struct nfs_rw_ops *);
 void nfs_pgio_header_free(struct nfs_pgio_header *);
-void nfs_pgio_data_destroy(struct nfs_pgio_data *);
+void nfs_pgio_data_destroy(struct nfs_pgio_header *);
 int nfs_generic_pgio(struct nfs_pageio_descriptor *, struct nfs_pgio_header *);
-int nfs_initiate_pgio(struct rpc_clnt *, struct nfs_pgio_data *,
+int nfs_initiate_pgio(struct rpc_clnt *, struct nfs_pgio_header *,
 		      const struct rpc_call_ops *, int, int);
 void nfs_free_request(struct nfs_page *req);
 
@@ -482,7 +482,7 @@ static inline void nfs_inode_dio_wait(st
 extern ssize_t nfs_dreq_bytes_left(struct nfs_direct_req *dreq);
 
 /* nfs4proc.c */
-extern void __nfs4_read_done_cb(struct nfs_pgio_data *);
+extern void __nfs4_read_done_cb(struct nfs_pgio_header *);
 extern struct nfs_client *nfs4_init_client(struct nfs_client *clp,
 			    const struct rpc_timeout *timeparms,
 			    const char *ip_addr);
--- a/fs/nfs/nfs3proc.c
+++ b/fs/nfs/nfs3proc.c
@@ -795,41 +795,44 @@ nfs3_proc_pathconf(struct nfs_server *se
 	return status;
 }
 
-static int nfs3_read_done(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs3_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 
 	if (nfs3_async_handle_jukebox(task, inode))
 		return -EAGAIN;
 
 	nfs_invalidate_atime(inode);
-	nfs_refresh_inode(inode, &data->fattr);
+	nfs_refresh_inode(inode, &hdr->fattr);
 	return 0;
 }
 
-static void nfs3_proc_read_setup(struct nfs_pgio_data *data, struct rpc_message *msg)
+static void nfs3_proc_read_setup(struct nfs_pgio_header *hdr,
+				 struct rpc_message *msg)
 {
 	msg->rpc_proc = &nfs3_procedures[NFS3PROC_READ];
 }
 
-static int nfs3_proc_pgio_rpc_prepare(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs3_proc_pgio_rpc_prepare(struct rpc_task *task,
+				      struct nfs_pgio_header *hdr)
 {
 	rpc_call_start(task);
 	return 0;
 }
 
-static int nfs3_write_done(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs3_write_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 
 	if (nfs3_async_handle_jukebox(task, inode))
 		return -EAGAIN;
 	if (task->tk_status >= 0)
-		nfs_post_op_update_inode_force_wcc(inode, data->res.fattr);
+		nfs_post_op_update_inode_force_wcc(inode, hdr->res.fattr);
 	return 0;
 }
 
-static void nfs3_proc_write_setup(struct nfs_pgio_data *data, struct rpc_message *msg)
+static void nfs3_proc_write_setup(struct nfs_pgio_header *hdr,
+				  struct rpc_message *msg)
 {
 	msg->rpc_proc = &nfs3_procedures[NFS3PROC_WRITE];
 }
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -337,11 +337,11 @@ nfs4_state_protect(struct nfs_client *cl
  */
 static inline void
 nfs4_state_protect_write(struct nfs_client *clp, struct rpc_clnt **clntp,
-			 struct rpc_message *msg, struct nfs_pgio_data *wdata)
+			 struct rpc_message *msg, struct nfs_pgio_header *hdr)
 {
 	if (_nfs4_state_protect(clp, NFS_SP4_MACH_CRED_WRITE, clntp, msg) &&
 	    !test_bit(NFS_SP4_MACH_CRED_COMMIT, &clp->cl_sp4_flags))
-		wdata->args.stable = NFS_FILE_SYNC;
+		hdr->args.stable = NFS_FILE_SYNC;
 }
 #else /* CONFIG_NFS_v4_1 */
 static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server)
@@ -369,7 +369,7 @@ nfs4_state_protect(struct nfs_client *cl
 
 static inline void
 nfs4_state_protect_write(struct nfs_client *clp, struct rpc_clnt **clntp,
-			 struct rpc_message *msg, struct nfs_pgio_data *wdata)
+			 struct rpc_message *msg, struct nfs_pgio_header *hdr)
 {
 }
 #endif /* CONFIG_NFS_V4_1 */
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -4041,24 +4041,25 @@ static bool nfs4_error_stateid_expired(i
 	return false;
 }
 
-void __nfs4_read_done_cb(struct nfs_pgio_data *data)
+void __nfs4_read_done_cb(struct nfs_pgio_header *hdr)
 {
-	nfs_invalidate_atime(data->header->inode);
+	nfs_invalidate_atime(hdr->inode);
 }
 
-static int nfs4_read_done_cb(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs4_read_done_cb(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
-	struct nfs_server *server = NFS_SERVER(data->header->inode);
+	struct nfs_server *server = NFS_SERVER(hdr->inode);
 
-	trace_nfs4_read(data, task->tk_status);
-	if (nfs4_async_handle_error(task, server, data->args.context->state) == -EAGAIN) {
+	trace_nfs4_read(hdr, task->tk_status);
+	if (nfs4_async_handle_error(task, server,
+				    hdr->args.context->state) == -EAGAIN) {
 		rpc_restart_call_prepare(task);
 		return -EAGAIN;
 	}
 
-	__nfs4_read_done_cb(data);
+	__nfs4_read_done_cb(hdr);
 	if (task->tk_status > 0)
-		renew_lease(server, data->timestamp);
+		renew_lease(server, hdr->timestamp);
 	return 0;
 }
 
@@ -4076,54 +4077,59 @@ static bool nfs4_read_stateid_changed(st
 	return true;
 }
 
-static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
 
 	dprintk("--> %s\n", __func__);
 
-	if (!nfs4_sequence_done(task, &data->res.seq_res))
+	if (!nfs4_sequence_done(task, &hdr->res.seq_res))
 		return -EAGAIN;
-	if (nfs4_read_stateid_changed(task, &data->args))
+	if (nfs4_read_stateid_changed(task, &hdr->args))
 		return -EAGAIN;
-	return data->pgio_done_cb ? data->pgio_done_cb(task, data) :
-				    nfs4_read_done_cb(task, data);
+	return hdr->pgio_done_cb ? hdr->pgio_done_cb(task, hdr) :
+				    nfs4_read_done_cb(task, hdr);
 }
 
-static void nfs4_proc_read_setup(struct nfs_pgio_data *data, struct rpc_message *msg)
+static void nfs4_proc_read_setup(struct nfs_pgio_header *hdr,
+				 struct rpc_message *msg)
 {
-	data->timestamp   = jiffies;
-	data->pgio_done_cb = nfs4_read_done_cb;
+	hdr->timestamp   = jiffies;
+	hdr->pgio_done_cb = nfs4_read_done_cb;
 	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ];
-	nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 0);
+	nfs4_init_sequence(&hdr->args.seq_args, &hdr->res.seq_res, 0);
 }
 
-static int nfs4_proc_pgio_rpc_prepare(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs4_proc_pgio_rpc_prepare(struct rpc_task *task,
+				      struct nfs_pgio_header *hdr)
 {
-	if (nfs4_setup_sequence(NFS_SERVER(data->header->inode),
-			&data->args.seq_args,
-			&data->res.seq_res,
+	if (nfs4_setup_sequence(NFS_SERVER(hdr->inode),
+			&hdr->args.seq_args,
+			&hdr->res.seq_res,
 			task))
 		return 0;
-	if (nfs4_set_rw_stateid(&data->args.stateid, data->args.context,
-				data->args.lock_context, data->header->rw_ops->rw_mode) == -EIO)
+	if (nfs4_set_rw_stateid(&hdr->args.stateid, hdr->args.context,
+				hdr->args.lock_context,
+				hdr->rw_ops->rw_mode) == -EIO)
 		return -EIO;
-	if (unlikely(test_bit(NFS_CONTEXT_BAD, &data->args.context->flags)))
+	if (unlikely(test_bit(NFS_CONTEXT_BAD, &hdr->args.context->flags)))
 		return -EIO;
 	return 0;
 }
 
-static int nfs4_write_done_cb(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs4_write_done_cb(struct rpc_task *task,
+			      struct nfs_pgio_header *hdr)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 	
-	trace_nfs4_write(data, task->tk_status);
-	if (nfs4_async_handle_error(task, NFS_SERVER(inode), data->args.context->state) == -EAGAIN) {
+	trace_nfs4_write(hdr, task->tk_status);
+	if (nfs4_async_handle_error(task, NFS_SERVER(inode),
+				    hdr->args.context->state) == -EAGAIN) {
 		rpc_restart_call_prepare(task);
 		return -EAGAIN;
 	}
 	if (task->tk_status >= 0) {
-		renew_lease(NFS_SERVER(inode), data->timestamp);
-		nfs_post_op_update_inode_force_wcc(inode, &data->fattr);
+		renew_lease(NFS_SERVER(inode), hdr->timestamp);
+		nfs_post_op_update_inode_force_wcc(inode, &hdr->fattr);
 	}
 	return 0;
 }
@@ -4142,23 +4148,21 @@ static bool nfs4_write_stateid_changed(s
 	return true;
 }
 
-static int nfs4_write_done(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs4_write_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
-	if (!nfs4_sequence_done(task, &data->res.seq_res))
+	if (!nfs4_sequence_done(task, &hdr->res.seq_res))
 		return -EAGAIN;
-	if (nfs4_write_stateid_changed(task, &data->args))
+	if (nfs4_write_stateid_changed(task, &hdr->args))
 		return -EAGAIN;
-	return data->pgio_done_cb ? data->pgio_done_cb(task, data) :
-		nfs4_write_done_cb(task, data);
+	return hdr->pgio_done_cb ? hdr->pgio_done_cb(task, hdr) :
+		nfs4_write_done_cb(task, hdr);
 }
 
 static
-bool nfs4_write_need_cache_consistency_data(const struct nfs_pgio_data *data)
+bool nfs4_write_need_cache_consistency_data(struct nfs_pgio_header *hdr)
 {
-	const struct nfs_pgio_header *hdr = data->header;
-
 	/* Don't request attributes for pNFS or O_DIRECT writes */
-	if (data->ds_clp != NULL || hdr->dreq != NULL)
+	if (hdr->ds_clp != NULL || hdr->dreq != NULL)
 		return false;
 	/* Otherwise, request attributes if and only if we don't hold
 	 * a delegation
@@ -4166,23 +4170,24 @@ bool nfs4_write_need_cache_consistency_d
 	return nfs4_have_delegation(hdr->inode, FMODE_READ) == 0;
 }
 
-static void nfs4_proc_write_setup(struct nfs_pgio_data *data, struct rpc_message *msg)
+static void nfs4_proc_write_setup(struct nfs_pgio_header *hdr,
+				  struct rpc_message *msg)
 {
-	struct nfs_server *server = NFS_SERVER(data->header->inode);
+	struct nfs_server *server = NFS_SERVER(hdr->inode);
 
-	if (!nfs4_write_need_cache_consistency_data(data)) {
-		data->args.bitmask = NULL;
-		data->res.fattr = NULL;
+	if (!nfs4_write_need_cache_consistency_data(hdr)) {
+		hdr->args.bitmask = NULL;
+		hdr->res.fattr = NULL;
 	} else
-		data->args.bitmask = server->cache_consistency_bitmask;
+		hdr->args.bitmask = server->cache_consistency_bitmask;
 
-	if (!data->pgio_done_cb)
-		data->pgio_done_cb = nfs4_write_done_cb;
-	data->res.server = server;
-	data->timestamp   = jiffies;
+	if (!hdr->pgio_done_cb)
+		hdr->pgio_done_cb = nfs4_write_done_cb;
+	hdr->res.server = server;
+	hdr->timestamp   = jiffies;
 
 	msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_WRITE];
-	nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 1);
+	nfs4_init_sequence(&hdr->args.seq_args, &hdr->res.seq_res, 1);
 }
 
 static void nfs4_proc_commit_rpc_prepare(struct rpc_task *task, struct nfs_commit_data *data)
--- a/fs/nfs/nfs4trace.h
+++ b/fs/nfs/nfs4trace.h
@@ -932,11 +932,11 @@ DEFINE_NFS4_IDMAP_EVENT(nfs4_map_gid_to_
 
 DECLARE_EVENT_CLASS(nfs4_read_event,
 		TP_PROTO(
-			const struct nfs_pgio_data *data,
+			const struct nfs_pgio_header *hdr,
 			int error
 		),
 
-		TP_ARGS(data, error),
+		TP_ARGS(hdr, error),
 
 		TP_STRUCT__entry(
 			__field(dev_t, dev)
@@ -948,12 +948,12 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
 		),
 
 		TP_fast_assign(
-			const struct inode *inode = data->header->inode;
+			const struct inode *inode = hdr->inode;
 			__entry->dev = inode->i_sb->s_dev;
 			__entry->fileid = NFS_FILEID(inode);
 			__entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
-			__entry->offset = data->args.offset;
-			__entry->count = data->args.count;
+			__entry->offset = hdr->args.offset;
+			__entry->count = hdr->args.count;
 			__entry->error = error;
 		),
 
@@ -972,10 +972,10 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
 #define DEFINE_NFS4_READ_EVENT(name) \
 	DEFINE_EVENT(nfs4_read_event, name, \
 			TP_PROTO( \
-				const struct nfs_pgio_data *data, \
+				const struct nfs_pgio_header *hdr, \
 				int error \
 			), \
-			TP_ARGS(data, error))
+			TP_ARGS(hdr, error))
 DEFINE_NFS4_READ_EVENT(nfs4_read);
 #ifdef CONFIG_NFS_V4_1
 DEFINE_NFS4_READ_EVENT(nfs4_pnfs_read);
@@ -983,11 +983,11 @@ DEFINE_NFS4_READ_EVENT(nfs4_pnfs_read);
 
 DECLARE_EVENT_CLASS(nfs4_write_event,
 		TP_PROTO(
-			const struct nfs_pgio_data *data,
+			const struct nfs_pgio_header *hdr,
 			int error
 		),
 
-		TP_ARGS(data, error),
+		TP_ARGS(hdr, error),
 
 		TP_STRUCT__entry(
 			__field(dev_t, dev)
@@ -999,12 +999,12 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
 		),
 
 		TP_fast_assign(
-			const struct inode *inode = data->header->inode;
+			const struct inode *inode = hdr->inode;
 			__entry->dev = inode->i_sb->s_dev;
 			__entry->fileid = NFS_FILEID(inode);
 			__entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
-			__entry->offset = data->args.offset;
-			__entry->count = data->args.count;
+			__entry->offset = hdr->args.offset;
+			__entry->count = hdr->args.count;
 			__entry->error = error;
 		),
 
@@ -1024,10 +1024,10 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
 #define DEFINE_NFS4_WRITE_EVENT(name) \
 	DEFINE_EVENT(nfs4_write_event, name, \
 			TP_PROTO( \
-				const struct nfs_pgio_data *data, \
+				const struct nfs_pgio_header *hdr, \
 				int error \
 			), \
-			TP_ARGS(data, error))
+			TP_ARGS(hdr, error))
 DEFINE_NFS4_WRITE_EVENT(nfs4_write);
 #ifdef CONFIG_NFS_V4_1
 DEFINE_NFS4_WRITE_EVENT(nfs4_pnfs_write);
--- a/fs/nfs/objlayout/objio_osd.c
+++ b/fs/nfs/objlayout/objio_osd.c
@@ -439,22 +439,21 @@ static void _read_done(struct ore_io_sta
 	objlayout_read_done(&objios->oir, status, objios->sync);
 }
 
-int objio_read_pagelist(struct nfs_pgio_data *rdata)
+int objio_read_pagelist(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = rdata->header;
 	struct objio_state *objios;
 	int ret;
 
 	ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, true,
-			hdr->lseg, rdata->args.pages, rdata->args.pgbase,
-			rdata->args.offset, rdata->args.count, rdata,
+			hdr->lseg, hdr->args.pages, hdr->args.pgbase,
+			hdr->args.offset, hdr->args.count, hdr,
 			GFP_KERNEL, &objios);
 	if (unlikely(ret))
 		return ret;
 
 	objios->ios->done = _read_done;
 	dprintk("%s: offset=0x%llx length=0x%x\n", __func__,
-		rdata->args.offset, rdata->args.count);
+		hdr->args.offset, hdr->args.count);
 	ret = ore_read(objios->ios);
 	if (unlikely(ret))
 		objio_free_result(&objios->oir);
@@ -487,11 +486,11 @@ static void _write_done(struct ore_io_st
 static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate)
 {
 	struct objio_state *objios = priv;
-	struct nfs_pgio_data *wdata = objios->oir.rpcdata;
-	struct address_space *mapping = wdata->header->inode->i_mapping;
+	struct nfs_pgio_header *hdr = objios->oir.rpcdata;
+	struct address_space *mapping = hdr->inode->i_mapping;
 	pgoff_t index = offset / PAGE_SIZE;
 	struct page *page;
-	loff_t i_size = i_size_read(wdata->header->inode);
+	loff_t i_size = i_size_read(hdr->inode);
 
 	if (offset >= i_size) {
 		*uptodate = true;
@@ -531,15 +530,14 @@ static const struct _ore_r4w_op _r4w_op
 	.put_page = &__r4w_put_page,
 };
 
-int objio_write_pagelist(struct nfs_pgio_data *wdata, int how)
+int objio_write_pagelist(struct nfs_pgio_header *hdr, int how)
 {
-	struct nfs_pgio_header *hdr = wdata->header;
 	struct objio_state *objios;
 	int ret;
 
 	ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, false,
-			hdr->lseg, wdata->args.pages, wdata->args.pgbase,
-			wdata->args.offset, wdata->args.count, wdata, GFP_NOFS,
+			hdr->lseg, hdr->args.pages, hdr->args.pgbase,
+			hdr->args.offset, hdr->args.count, hdr, GFP_NOFS,
 			&objios);
 	if (unlikely(ret))
 		return ret;
@@ -551,7 +549,7 @@ int objio_write_pagelist(struct nfs_pgio
 		objios->ios->done = _write_done;
 
 	dprintk("%s: offset=0x%llx length=0x%x\n", __func__,
-		wdata->args.offset, wdata->args.count);
+		hdr->args.offset, hdr->args.count);
 	ret = ore_write(objios->ios);
 	if (unlikely(ret)) {
 		objio_free_result(&objios->oir);
--- a/fs/nfs/objlayout/objlayout.c
+++ b/fs/nfs/objlayout/objlayout.c
@@ -229,36 +229,36 @@ objlayout_io_set_result(struct objlayout
 static void _rpc_read_complete(struct work_struct *work)
 {
 	struct rpc_task *task;
-	struct nfs_pgio_data *rdata;
+	struct nfs_pgio_header *hdr;
 
 	dprintk("%s enter\n", __func__);
 	task = container_of(work, struct rpc_task, u.tk_work);
-	rdata = container_of(task, struct nfs_pgio_data, task);
+	hdr = container_of(task, struct nfs_pgio_header, task);
 
-	pnfs_ld_read_done(rdata);
+	pnfs_ld_read_done(hdr);
 }
 
 void
 objlayout_read_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
 {
-	struct nfs_pgio_data *rdata = oir->rpcdata;
+	struct nfs_pgio_header *hdr = oir->rpcdata;
 
-	oir->status = rdata->task.tk_status = status;
+	oir->status = hdr->task.tk_status = status;
 	if (status >= 0)
-		rdata->res.count = status;
+		hdr->res.count = status;
 	else
-		rdata->header->pnfs_error = status;
+		hdr->pnfs_error = status;
 	objlayout_iodone(oir);
 	/* must not use oir after this point */
 
 	dprintk("%s: Return status=%zd eof=%d sync=%d\n", __func__,
-		status, rdata->res.eof, sync);
+		status, hdr->res.eof, sync);
 
 	if (sync)
-		pnfs_ld_read_done(rdata);
+		pnfs_ld_read_done(hdr);
 	else {
-		INIT_WORK(&rdata->task.u.tk_work, _rpc_read_complete);
-		schedule_work(&rdata->task.u.tk_work);
+		INIT_WORK(&hdr->task.u.tk_work, _rpc_read_complete);
+		schedule_work(&hdr->task.u.tk_work);
 	}
 }
 
@@ -266,12 +266,11 @@ objlayout_read_done(struct objlayout_io_
  * Perform sync or async reads.
  */
 enum pnfs_try_status
-objlayout_read_pagelist(struct nfs_pgio_data *rdata)
+objlayout_read_pagelist(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = rdata->header;
 	struct inode *inode = hdr->inode;
-	loff_t offset = rdata->args.offset;
-	size_t count = rdata->args.count;
+	loff_t offset = hdr->args.offset;
+	size_t count = hdr->args.count;
 	int err;
 	loff_t eof;
 
@@ -279,23 +278,23 @@ objlayout_read_pagelist(struct nfs_pgio_
 	if (unlikely(offset + count > eof)) {
 		if (offset >= eof) {
 			err = 0;
-			rdata->res.count = 0;
-			rdata->res.eof = 1;
+			hdr->res.count = 0;
+			hdr->res.eof = 1;
 			/*FIXME: do we need to call pnfs_ld_read_done() */
 			goto out;
 		}
 		count = eof - offset;
 	}
 
-	rdata->res.eof = (offset + count) >= eof;
-	_fix_verify_io_params(hdr->lseg, &rdata->args.pages,
-			      &rdata->args.pgbase,
-			      rdata->args.offset, rdata->args.count);
+	hdr->res.eof = (offset + count) >= eof;
+	_fix_verify_io_params(hdr->lseg, &hdr->args.pages,
+			      &hdr->args.pgbase,
+			      hdr->args.offset, hdr->args.count);
 
 	dprintk("%s: inode(%lx) offset 0x%llx count 0x%Zx eof=%d\n",
-		__func__, inode->i_ino, offset, count, rdata->res.eof);
+		__func__, inode->i_ino, offset, count, hdr->res.eof);
 
-	err = objio_read_pagelist(rdata);
+	err = objio_read_pagelist(hdr);
  out:
 	if (unlikely(err)) {
 		hdr->pnfs_error = err;
@@ -312,38 +311,38 @@ objlayout_read_pagelist(struct nfs_pgio_
 static void _rpc_write_complete(struct work_struct *work)
 {
 	struct rpc_task *task;
-	struct nfs_pgio_data *wdata;
+	struct nfs_pgio_header *hdr;
 
 	dprintk("%s enter\n", __func__);
 	task = container_of(work, struct rpc_task, u.tk_work);
-	wdata = container_of(task, struct nfs_pgio_data, task);
+	hdr = container_of(task, struct nfs_pgio_header, task);
 
-	pnfs_ld_write_done(wdata);
+	pnfs_ld_write_done(hdr);
 }
 
 void
 objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)
 {
-	struct nfs_pgio_data *wdata = oir->rpcdata;
+	struct nfs_pgio_header *hdr = oir->rpcdata;
 
-	oir->status = wdata->task.tk_status = status;
+	oir->status = hdr->task.tk_status = status;
 	if (status >= 0) {
-		wdata->res.count = status;
-		wdata->writeverf.committed = oir->committed;
+		hdr->res.count = status;
+		hdr->writeverf.committed = oir->committed;
 	} else {
-		wdata->header->pnfs_error = status;
+		hdr->pnfs_error = status;
 	}
 	objlayout_iodone(oir);
 	/* must not use oir after this point */
 
 	dprintk("%s: Return status %zd committed %d sync=%d\n", __func__,
-		status, wdata->writeverf.committed, sync);
+		status, hdr->writeverf.committed, sync);
 
 	if (sync)
-		pnfs_ld_write_done(wdata);
+		pnfs_ld_write_done(hdr);
 	else {
-		INIT_WORK(&wdata->task.u.tk_work, _rpc_write_complete);
-		schedule_work(&wdata->task.u.tk_work);
+		INIT_WORK(&hdr->task.u.tk_work, _rpc_write_complete);
+		schedule_work(&hdr->task.u.tk_work);
 	}
 }
 
@@ -351,17 +350,15 @@ objlayout_write_done(struct objlayout_io
  * Perform sync or async writes.
  */
 enum pnfs_try_status
-objlayout_write_pagelist(struct nfs_pgio_data *wdata,
-			 int how)
+objlayout_write_pagelist(struct nfs_pgio_header *hdr, int how)
 {
-	struct nfs_pgio_header *hdr = wdata->header;
 	int err;
 
-	_fix_verify_io_params(hdr->lseg, &wdata->args.pages,
-			      &wdata->args.pgbase,
-			      wdata->args.offset, wdata->args.count);
+	_fix_verify_io_params(hdr->lseg, &hdr->args.pages,
+			      &hdr->args.pgbase,
+			      hdr->args.offset, hdr->args.count);
 
-	err = objio_write_pagelist(wdata, how);
+	err = objio_write_pagelist(hdr, how);
 	if (unlikely(err)) {
 		hdr->pnfs_error = err;
 		dprintk("%s: Returned Error %d\n", __func__, err);
--- a/fs/nfs/objlayout/objlayout.h
+++ b/fs/nfs/objlayout/objlayout.h
@@ -119,8 +119,8 @@ extern void objio_free_lseg(struct pnfs_
  */
 extern void objio_free_result(struct objlayout_io_res *oir);
 
-extern int objio_read_pagelist(struct nfs_pgio_data *rdata);
-extern int objio_write_pagelist(struct nfs_pgio_data *wdata, int how);
+extern int objio_read_pagelist(struct nfs_pgio_header *rdata);
+extern int objio_write_pagelist(struct nfs_pgio_header *wdata, int how);
 
 /*
  * callback API
@@ -168,10 +168,10 @@ extern struct pnfs_layout_segment *objla
 extern void objlayout_free_lseg(struct pnfs_layout_segment *);
 
 extern enum pnfs_try_status objlayout_read_pagelist(
-	struct nfs_pgio_data *);
+	struct nfs_pgio_header *);
 
 extern enum pnfs_try_status objlayout_write_pagelist(
-	struct nfs_pgio_data *,
+	struct nfs_pgio_header *,
 	int how);
 
 extern void objlayout_encode_layoutcommit(
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -494,8 +494,7 @@ EXPORT_SYMBOL_GPL(nfs_pgio_header_free);
 static bool nfs_pgio_data_init(struct nfs_pgio_header *hdr,
 			       unsigned int pagecount)
 {
-	if (nfs_pgarray_set(&hdr->data.page_array, pagecount)) {
-		hdr->data.header = hdr;
+	if (nfs_pgarray_set(&hdr->page_array, pagecount)) {
 		atomic_inc(&hdr->refcnt);
 		return true;
 	}
@@ -503,16 +502,14 @@ static bool nfs_pgio_data_init(struct nf
 }
 
 /**
- * nfs_pgio_data_destroy - Properly free pageio data
- * @data: The data to destroy
+ * nfs_pgio_data_destroy - Properly release pageio data
+ * @hdr: The header with data to destroy
  */
-void nfs_pgio_data_destroy(struct nfs_pgio_data *data)
+void nfs_pgio_data_destroy(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
-	put_nfs_open_context(data->args.context);
-	if (data->page_array.pagevec != data->page_array.page_array)
-		kfree(data->page_array.pagevec);
+	put_nfs_open_context(hdr->args.context);
+	if (hdr->page_array.pagevec != hdr->page_array.page_array)
+		kfree(hdr->page_array.pagevec);
 	if (atomic_dec_and_test(&hdr->refcnt))
 		hdr->completion_ops->completion(hdr);
 }
@@ -520,31 +517,31 @@ EXPORT_SYMBOL_GPL(nfs_pgio_data_destroy)
 
 /**
  * nfs_pgio_rpcsetup - Set up arguments for a pageio call
- * @data: The pageio data
+ * @hdr: The pageio hdr
  * @count: Number of bytes to read
  * @offset: Initial offset
  * @how: How to commit data (writes only)
  * @cinfo: Commit information for the call (writes only)
  */
-static void nfs_pgio_rpcsetup(struct nfs_pgio_data *data,
+static void nfs_pgio_rpcsetup(struct nfs_pgio_header *hdr,
 			      unsigned int count, unsigned int offset,
 			      int how, struct nfs_commit_info *cinfo)
 {
-	struct nfs_page *req = data->header->req;
+	struct nfs_page *req = hdr->req;
 
 	/* Set up the RPC argument and reply structs
-	 * NB: take care not to mess about with data->commit et al. */
+	 * NB: take care not to mess about with hdr->commit et al. */
 
-	data->args.fh     = NFS_FH(data->header->inode);
-	data->args.offset = req_offset(req) + offset;
+	hdr->args.fh     = NFS_FH(hdr->inode);
+	hdr->args.offset = req_offset(req) + offset;
 	/* pnfs_set_layoutcommit needs this */
-	data->mds_offset = data->args.offset;
-	data->args.pgbase = req->wb_pgbase + offset;
-	data->args.pages  = data->page_array.pagevec;
-	data->args.count  = count;
-	data->args.context = get_nfs_open_context(req->wb_context);
-	data->args.lock_context = req->wb_lock_context;
-	data->args.stable  = NFS_UNSTABLE;
+	hdr->mds_offset = hdr->args.offset;
+	hdr->args.pgbase = req->wb_pgbase + offset;
+	hdr->args.pages  = hdr->page_array.pagevec;
+	hdr->args.count  = count;
+	hdr->args.context = get_nfs_open_context(req->wb_context);
+	hdr->args.lock_context = req->wb_lock_context;
+	hdr->args.stable  = NFS_UNSTABLE;
 	switch (how & (FLUSH_STABLE | FLUSH_COND_STABLE)) {
 	case 0:
 		break;
@@ -552,59 +549,60 @@ static void nfs_pgio_rpcsetup(struct nfs
 		if (nfs_reqs_to_commit(cinfo))
 			break;
 	default:
-		data->args.stable = NFS_FILE_SYNC;
+		hdr->args.stable = NFS_FILE_SYNC;
 	}
 
-	data->res.fattr   = &data->fattr;
-	data->res.count   = count;
-	data->res.eof     = 0;
-	data->res.verf    = &data->writeverf;
-	nfs_fattr_init(&data->fattr);
+	hdr->res.fattr   = &hdr->fattr;
+	hdr->res.count   = count;
+	hdr->res.eof     = 0;
+	hdr->res.verf    = &hdr->writeverf;
+	nfs_fattr_init(&hdr->fattr);
 }
 
 /**
- * nfs_pgio_prepare - Prepare pageio data to go over the wire
+ * nfs_pgio_prepare - Prepare pageio hdr to go over the wire
  * @task: The current task
- * @calldata: pageio data to prepare
+ * @calldata: pageio header to prepare
  */
 static void nfs_pgio_prepare(struct rpc_task *task, void *calldata)
 {
-	struct nfs_pgio_data *data = calldata;
+	struct nfs_pgio_header *hdr = calldata;
 	int err;
-	err = NFS_PROTO(data->header->inode)->pgio_rpc_prepare(task, data);
+	err = NFS_PROTO(hdr->inode)->pgio_rpc_prepare(task, hdr);
 	if (err)
 		rpc_exit(task, err);
 }
 
-int nfs_initiate_pgio(struct rpc_clnt *clnt, struct nfs_pgio_data *data,
+int nfs_initiate_pgio(struct rpc_clnt *clnt, struct nfs_pgio_header *hdr,
 		      const struct rpc_call_ops *call_ops, int how, int flags)
 {
+	struct inode *inode = hdr->inode;
 	struct rpc_task *task;
 	struct rpc_message msg = {
-		.rpc_argp = &data->args,
-		.rpc_resp = &data->res,
-		.rpc_cred = data->header->cred,
+		.rpc_argp = &hdr->args,
+		.rpc_resp = &hdr->res,
+		.rpc_cred = hdr->cred,
 	};
 	struct rpc_task_setup task_setup_data = {
 		.rpc_client = clnt,
-		.task = &data->task,
+		.task = &hdr->task,
 		.rpc_message = &msg,
 		.callback_ops = call_ops,
-		.callback_data = data,
+		.callback_data = hdr,
 		.workqueue = nfsiod_workqueue,
 		.flags = RPC_TASK_ASYNC | flags,
 	};
 	int ret = 0;
 
-	data->header->rw_ops->rw_initiate(data, &msg, &task_setup_data, how);
+	hdr->rw_ops->rw_initiate(hdr, &msg, &task_setup_data, how);
 
 	dprintk("NFS: %5u initiated pgio call "
 		"(req %s/%llu, %u bytes @ offset %llu)\n",
-		data->task.tk_pid,
-		data->header->inode->i_sb->s_id,
-		(unsigned long long)NFS_FILEID(data->header->inode),
-		data->args.count,
-		(unsigned long long)data->args.offset);
+		hdr->task.tk_pid,
+		inode->i_sb->s_id,
+		(unsigned long long)NFS_FILEID(inode),
+		hdr->args.count,
+		(unsigned long long)hdr->args.offset);
 
 	task = rpc_run_task(&task_setup_data);
 	if (IS_ERR(task)) {
@@ -631,21 +629,21 @@ static int nfs_pgio_error(struct nfs_pag
 			  struct nfs_pgio_header *hdr)
 {
 	set_bit(NFS_IOHDR_REDO, &hdr->flags);
-	nfs_pgio_data_destroy(&hdr->data);
+	nfs_pgio_data_destroy(hdr);
 	desc->pg_completion_ops->error_cleanup(&desc->pg_list);
 	return -ENOMEM;
 }
 
 /**
  * nfs_pgio_release - Release pageio data
- * @calldata: The pageio data to release
+ * @calldata: The pageio header to release
  */
 static void nfs_pgio_release(void *calldata)
 {
-	struct nfs_pgio_data *data = calldata;
-	if (data->header->rw_ops->rw_release)
-		data->header->rw_ops->rw_release(data);
-	nfs_pgio_data_destroy(data);
+	struct nfs_pgio_header *hdr = calldata;
+	if (hdr->rw_ops->rw_release)
+		hdr->rw_ops->rw_release(hdr);
+	nfs_pgio_data_destroy(hdr);
 }
 
 /**
@@ -686,22 +684,22 @@ EXPORT_SYMBOL_GPL(nfs_pageio_init);
 /**
  * nfs_pgio_result - Basic pageio error handling
  * @task: The task that ran
- * @calldata: Pageio data to check
+ * @calldata: Pageio header to check
  */
 static void nfs_pgio_result(struct rpc_task *task, void *calldata)
 {
-	struct nfs_pgio_data *data = calldata;
-	struct inode *inode = data->header->inode;
+	struct nfs_pgio_header *hdr = calldata;
+	struct inode *inode = hdr->inode;
 
 	dprintk("NFS: %s: %5u, (status %d)\n", __func__,
 		task->tk_pid, task->tk_status);
 
-	if (data->header->rw_ops->rw_done(task, data, inode) != 0)
+	if (hdr->rw_ops->rw_done(task, hdr, inode) != 0)
 		return;
 	if (task->tk_status < 0)
-		nfs_set_pgio_error(data->header, task->tk_status, data->args.offset);
+		nfs_set_pgio_error(hdr, task->tk_status, hdr->args.offset);
 	else
-		data->header->rw_ops->rw_result(task, data);
+		hdr->rw_ops->rw_result(task, hdr);
 }
 
 /*
@@ -717,7 +715,6 @@ int nfs_generic_pgio(struct nfs_pageio_d
 {
 	struct nfs_page		*req;
 	struct page		**pages;
-	struct nfs_pgio_data	*data;
 	struct list_head *head = &desc->pg_list;
 	struct nfs_commit_info cinfo;
 
@@ -725,9 +722,8 @@ int nfs_generic_pgio(struct nfs_pageio_d
 			   desc->pg_count)))
 		return nfs_pgio_error(desc, hdr);
 
-	data = &hdr->data;
 	nfs_init_cinfo(&cinfo, desc->pg_inode, desc->pg_dreq);
-	pages = data->page_array.pagevec;
+	pages = hdr->page_array.pagevec;
 	while (!list_empty(head)) {
 		req = nfs_list_entry(head->next);
 		nfs_list_remove_request(req);
@@ -740,7 +736,7 @@ int nfs_generic_pgio(struct nfs_pageio_d
 		desc->pg_ioflags &= ~FLUSH_COND_STABLE;
 
 	/* Set up the argument struct */
-	nfs_pgio_rpcsetup(data, desc->pg_count, 0, desc->pg_ioflags, &cinfo);
+	nfs_pgio_rpcsetup(hdr, desc->pg_count, 0, desc->pg_ioflags, &cinfo);
 	desc->pg_rpc_callops = &nfs_pgio_common_ops;
 	return 0;
 }
@@ -761,7 +757,7 @@ static int nfs_generic_pg_pgios(struct n
 	ret = nfs_generic_pgio(desc, hdr);
 	if (ret == 0)
 		ret = nfs_initiate_pgio(NFS_CLIENT(hdr->inode),
-					&hdr->data, desc->pg_rpc_callops,
+					hdr, desc->pg_rpc_callops,
 					desc->pg_ioflags, 0);
 	if (atomic_dec_and_test(&hdr->refcnt))
 		hdr->completion_ops->completion(hdr);
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1502,9 +1502,8 @@ int pnfs_write_done_resend_to_mds(struct
 }
 EXPORT_SYMBOL_GPL(pnfs_write_done_resend_to_mds);
 
-static void pnfs_ld_handle_write_error(struct nfs_pgio_data *data)
+static void pnfs_ld_handle_write_error(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
 
 	dprintk("pnfs write error = %d\n", hdr->pnfs_error);
 	if (NFS_SERVER(hdr->inode)->pnfs_curr_ld->flags &
@@ -1512,7 +1511,7 @@ static void pnfs_ld_handle_write_error(s
 		pnfs_return_layout(hdr->inode);
 	}
 	if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags))
-		data->task.tk_status = pnfs_write_done_resend_to_mds(hdr->inode,
+		hdr->task.tk_status = pnfs_write_done_resend_to_mds(hdr->inode,
 							&hdr->pages,
 							hdr->completion_ops,
 							hdr->dreq);
@@ -1521,41 +1520,36 @@ static void pnfs_ld_handle_write_error(s
 /*
  * Called by non rpc-based layout drivers
  */
-void pnfs_ld_write_done(struct nfs_pgio_data *data)
+void pnfs_ld_write_done(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
-	trace_nfs4_pnfs_write(data, hdr->pnfs_error);
+	trace_nfs4_pnfs_write(hdr, hdr->pnfs_error);
 	if (!hdr->pnfs_error) {
-		pnfs_set_layoutcommit(data);
-		hdr->mds_ops->rpc_call_done(&data->task, data);
+		pnfs_set_layoutcommit(hdr);
+		hdr->mds_ops->rpc_call_done(&hdr->task, hdr);
 	} else
-		pnfs_ld_handle_write_error(data);
-	hdr->mds_ops->rpc_release(data);
+		pnfs_ld_handle_write_error(hdr);
+	hdr->mds_ops->rpc_release(hdr);
 }
 EXPORT_SYMBOL_GPL(pnfs_ld_write_done);
 
 static void
 pnfs_write_through_mds(struct nfs_pageio_descriptor *desc,
-		struct nfs_pgio_data *data)
+		struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
 	if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags)) {
 		list_splice_tail_init(&hdr->pages, &desc->pg_list);
 		nfs_pageio_reset_write_mds(desc);
 		desc->pg_recoalesce = 1;
 	}
-	nfs_pgio_data_destroy(data);
+	nfs_pgio_data_destroy(hdr);
 }
 
 static enum pnfs_try_status
-pnfs_try_to_write_data(struct nfs_pgio_data *wdata,
+pnfs_try_to_write_data(struct nfs_pgio_header *hdr,
 			const struct rpc_call_ops *call_ops,
 			struct pnfs_layout_segment *lseg,
 			int how)
 {
-	struct nfs_pgio_header *hdr = wdata->header;
 	struct inode *inode = hdr->inode;
 	enum pnfs_try_status trypnfs;
 	struct nfs_server *nfss = NFS_SERVER(inode);
@@ -1563,8 +1557,8 @@ pnfs_try_to_write_data(struct nfs_pgio_d
 	hdr->mds_ops = call_ops;
 
 	dprintk("%s: Writing ino:%lu %u@%llu (how %d)\n", __func__,
-		inode->i_ino, wdata->args.count, wdata->args.offset, how);
-	trypnfs = nfss->pnfs_curr_ld->write_pagelist(wdata, how);
+		inode->i_ino, hdr->args.count, hdr->args.offset, how);
+	trypnfs = nfss->pnfs_curr_ld->write_pagelist(hdr, how);
 	if (trypnfs != PNFS_NOT_ATTEMPTED)
 		nfs_inc_stats(inode, NFSIOS_PNFS_WRITE);
 	dprintk("%s End (trypnfs:%d)\n", __func__, trypnfs);
@@ -1575,15 +1569,14 @@ static void
 pnfs_do_write(struct nfs_pageio_descriptor *desc,
 	      struct nfs_pgio_header *hdr, int how)
 {
-	struct nfs_pgio_data *data = &hdr->data;
 	const struct rpc_call_ops *call_ops = desc->pg_rpc_callops;
 	struct pnfs_layout_segment *lseg = desc->pg_lseg;
 	enum pnfs_try_status trypnfs;
 
 	desc->pg_lseg = NULL;
-	trypnfs = pnfs_try_to_write_data(data, call_ops, lseg, how);
+	trypnfs = pnfs_try_to_write_data(hdr, call_ops, lseg, how);
 	if (trypnfs == PNFS_NOT_ATTEMPTED)
-		pnfs_write_through_mds(desc, data);
+		pnfs_write_through_mds(desc, hdr);
 	pnfs_put_lseg(lseg);
 }
 
@@ -1650,17 +1643,15 @@ int pnfs_read_done_resend_to_mds(struct
 }
 EXPORT_SYMBOL_GPL(pnfs_read_done_resend_to_mds);
 
-static void pnfs_ld_handle_read_error(struct nfs_pgio_data *data)
+static void pnfs_ld_handle_read_error(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
 	dprintk("pnfs read error = %d\n", hdr->pnfs_error);
 	if (NFS_SERVER(hdr->inode)->pnfs_curr_ld->flags &
 	    PNFS_LAYOUTRET_ON_ERROR) {
 		pnfs_return_layout(hdr->inode);
 	}
 	if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags))
-		data->task.tk_status = pnfs_read_done_resend_to_mds(hdr->inode,
+		hdr->task.tk_status = pnfs_read_done_resend_to_mds(hdr->inode,
 							&hdr->pages,
 							hdr->completion_ops,
 							hdr->dreq);
@@ -1669,43 +1660,38 @@ static void pnfs_ld_handle_read_error(st
 /*
  * Called by non rpc-based layout drivers
  */
-void pnfs_ld_read_done(struct nfs_pgio_data *data)
+void pnfs_ld_read_done(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
-	trace_nfs4_pnfs_read(data, hdr->pnfs_error);
+	trace_nfs4_pnfs_read(hdr, hdr->pnfs_error);
 	if (likely(!hdr->pnfs_error)) {
-		__nfs4_read_done_cb(data);
-		hdr->mds_ops->rpc_call_done(&data->task, data);
+		__nfs4_read_done_cb(hdr);
+		hdr->mds_ops->rpc_call_done(&hdr->task, hdr);
 	} else
-		pnfs_ld_handle_read_error(data);
-	hdr->mds_ops->rpc_release(data);
+		pnfs_ld_handle_read_error(hdr);
+	hdr->mds_ops->rpc_release(hdr);
 }
 EXPORT_SYMBOL_GPL(pnfs_ld_read_done);
 
 static void
 pnfs_read_through_mds(struct nfs_pageio_descriptor *desc,
-		struct nfs_pgio_data *data)
+		struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
 	if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags)) {
 		list_splice_tail_init(&hdr->pages, &desc->pg_list);
 		nfs_pageio_reset_read_mds(desc);
 		desc->pg_recoalesce = 1;
 	}
-	nfs_pgio_data_destroy(data);
+	nfs_pgio_data_destroy(hdr);
 }
 
 /*
  * Call the appropriate parallel I/O subsystem read function.
  */
 static enum pnfs_try_status
-pnfs_try_to_read_data(struct nfs_pgio_data *rdata,
+pnfs_try_to_read_data(struct nfs_pgio_header *hdr,
 		       const struct rpc_call_ops *call_ops,
 		       struct pnfs_layout_segment *lseg)
 {
-	struct nfs_pgio_header *hdr = rdata->header;
 	struct inode *inode = hdr->inode;
 	struct nfs_server *nfss = NFS_SERVER(inode);
 	enum pnfs_try_status trypnfs;
@@ -1713,9 +1699,9 @@ pnfs_try_to_read_data(struct nfs_pgio_da
 	hdr->mds_ops = call_ops;
 
 	dprintk("%s: Reading ino:%lu %u@%llu\n",
-		__func__, inode->i_ino, rdata->args.count, rdata->args.offset);
+		__func__, inode->i_ino, hdr->args.count, hdr->args.offset);
 
-	trypnfs = nfss->pnfs_curr_ld->read_pagelist(rdata);
+	trypnfs = nfss->pnfs_curr_ld->read_pagelist(hdr);
 	if (trypnfs != PNFS_NOT_ATTEMPTED)
 		nfs_inc_stats(inode, NFSIOS_PNFS_READ);
 	dprintk("%s End (trypnfs:%d)\n", __func__, trypnfs);
@@ -1725,15 +1711,14 @@ pnfs_try_to_read_data(struct nfs_pgio_da
 static void
 pnfs_do_read(struct nfs_pageio_descriptor *desc, struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_data *data = &hdr->data;
 	const struct rpc_call_ops *call_ops = desc->pg_rpc_callops;
 	struct pnfs_layout_segment *lseg = desc->pg_lseg;
 	enum pnfs_try_status trypnfs;
 
 	desc->pg_lseg = NULL;
-	trypnfs = pnfs_try_to_read_data(data, call_ops, lseg);
+	trypnfs = pnfs_try_to_read_data(hdr, call_ops, lseg);
 	if (trypnfs == PNFS_NOT_ATTEMPTED)
-		pnfs_read_through_mds(desc, data);
+		pnfs_read_through_mds(desc, hdr);
 	pnfs_put_lseg(lseg);
 }
 
@@ -1816,12 +1801,11 @@ void pnfs_set_lo_fail(struct pnfs_layout
 EXPORT_SYMBOL_GPL(pnfs_set_lo_fail);
 
 void
-pnfs_set_layoutcommit(struct nfs_pgio_data *wdata)
+pnfs_set_layoutcommit(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = wdata->header;
 	struct inode *inode = hdr->inode;
 	struct nfs_inode *nfsi = NFS_I(inode);
-	loff_t end_pos = wdata->mds_offset + wdata->res.count;
+	loff_t end_pos = hdr->mds_offset + hdr->res.count;
 	bool mark_as_dirty = false;
 
 	spin_lock(&inode->i_lock);
--- a/fs/nfs/pnfs.h
+++ b/fs/nfs/pnfs.h
@@ -113,8 +113,8 @@ struct pnfs_layoutdriver_type {
 	 * Return PNFS_ATTEMPTED to indicate the layout code has attempted
 	 * I/O, else return PNFS_NOT_ATTEMPTED to fall back to normal NFS
 	 */
-	enum pnfs_try_status (*read_pagelist) (struct nfs_pgio_data *nfs_data);
-	enum pnfs_try_status (*write_pagelist) (struct nfs_pgio_data *nfs_data, int how);
+	enum pnfs_try_status (*read_pagelist)(struct nfs_pgio_header *);
+	enum pnfs_try_status (*write_pagelist)(struct nfs_pgio_header *, int);
 
 	void (*free_deviceid_node) (struct nfs4_deviceid_node *);
 
@@ -213,13 +213,13 @@ bool pnfs_roc(struct inode *ino);
 void pnfs_roc_release(struct inode *ino);
 void pnfs_roc_set_barrier(struct inode *ino, u32 barrier);
 bool pnfs_roc_drain(struct inode *ino, u32 *barrier, struct rpc_task *task);
-void pnfs_set_layoutcommit(struct nfs_pgio_data *wdata);
+void pnfs_set_layoutcommit(struct nfs_pgio_header *);
 void pnfs_cleanup_layoutcommit(struct nfs4_layoutcommit_data *data);
 int pnfs_layoutcommit_inode(struct inode *inode, bool sync);
 int _pnfs_return_layout(struct inode *);
 int pnfs_commit_and_return_layout(struct inode *);
-void pnfs_ld_write_done(struct nfs_pgio_data *);
-void pnfs_ld_read_done(struct nfs_pgio_data *);
+void pnfs_ld_write_done(struct nfs_pgio_header *);
+void pnfs_ld_read_done(struct nfs_pgio_header *);
 struct pnfs_layout_segment *pnfs_update_layout(struct inode *ino,
 					       struct nfs_open_context *ctx,
 					       loff_t pos,
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -578,46 +578,49 @@ nfs_proc_pathconf(struct nfs_server *ser
 	return 0;
 }
 
-static int nfs_read_done(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 
 	nfs_invalidate_atime(inode);
 	if (task->tk_status >= 0) {
-		nfs_refresh_inode(inode, data->res.fattr);
+		nfs_refresh_inode(inode, hdr->res.fattr);
 		/* Emulate the eof flag, which isn't normally needed in NFSv2
 		 * as it is guaranteed to always return the file attributes
 		 */
-		if (data->args.offset + data->res.count >= data->res.fattr->size)
-			data->res.eof = 1;
+		if (hdr->args.offset + hdr->res.count >= hdr->res.fattr->size)
+			hdr->res.eof = 1;
 	}
 	return 0;
 }
 
-static void nfs_proc_read_setup(struct nfs_pgio_data *data, struct rpc_message *msg)
+static void nfs_proc_read_setup(struct nfs_pgio_header *hdr,
+				struct rpc_message *msg)
 {
 	msg->rpc_proc = &nfs_procedures[NFSPROC_READ];
 }
 
-static int nfs_proc_pgio_rpc_prepare(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs_proc_pgio_rpc_prepare(struct rpc_task *task,
+				     struct nfs_pgio_header *hdr)
 {
 	rpc_call_start(task);
 	return 0;
 }
 
-static int nfs_write_done(struct rpc_task *task, struct nfs_pgio_data *data)
+static int nfs_write_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 
 	if (task->tk_status >= 0)
-		nfs_post_op_update_inode_force_wcc(inode, data->res.fattr);
+		nfs_post_op_update_inode_force_wcc(inode, hdr->res.fattr);
 	return 0;
 }
 
-static void nfs_proc_write_setup(struct nfs_pgio_data *data, struct rpc_message *msg)
+static void nfs_proc_write_setup(struct nfs_pgio_header *hdr,
+				 struct rpc_message *msg)
 {
 	/* Note: NFSv2 ignores @stable and always uses NFS_FILE_SYNC */
-	data->args.stable = NFS_FILE_SYNC;
+	hdr->args.stable = NFS_FILE_SYNC;
 	msg->rpc_proc = &nfs_procedures[NFSPROC_WRITE];
 }
 
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -172,14 +172,15 @@ out:
 	hdr->release(hdr);
 }
 
-static void nfs_initiate_read(struct nfs_pgio_data *data, struct rpc_message *msg,
+static void nfs_initiate_read(struct nfs_pgio_header *hdr,
+			      struct rpc_message *msg,
 			      struct rpc_task_setup *task_setup_data, int how)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 	int swap_flags = IS_SWAPFILE(inode) ? NFS_RPC_SWAPFLAGS : 0;
 
 	task_setup_data->flags |= swap_flags;
-	NFS_PROTO(inode)->read_setup(data, msg);
+	NFS_PROTO(inode)->read_setup(hdr, msg);
 }
 
 static void
@@ -203,14 +204,15 @@ static const struct nfs_pgio_completion_
  * This is the callback from RPC telling us whether a reply was
  * received or some error occurred (timeout or socket shutdown).
  */
-static int nfs_readpage_done(struct rpc_task *task, struct nfs_pgio_data *data,
+static int nfs_readpage_done(struct rpc_task *task,
+			     struct nfs_pgio_header *hdr,
 			     struct inode *inode)
 {
-	int status = NFS_PROTO(inode)->read_done(task, data);
+	int status = NFS_PROTO(inode)->read_done(task, hdr);
 	if (status != 0)
 		return status;
 
-	nfs_add_stats(inode, NFSIOS_SERVERREADBYTES, data->res.count);
+	nfs_add_stats(inode, NFSIOS_SERVERREADBYTES, hdr->res.count);
 
 	if (task->tk_status == -ESTALE) {
 		set_bit(NFS_INO_STALE, &NFS_I(inode)->flags);
@@ -219,34 +221,34 @@ static int nfs_readpage_done(struct rpc_
 	return 0;
 }
 
-static void nfs_readpage_retry(struct rpc_task *task, struct nfs_pgio_data *data)
+static void nfs_readpage_retry(struct rpc_task *task,
+			       struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_args *argp = &data->args;
-	struct nfs_pgio_res  *resp = &data->res;
+	struct nfs_pgio_args *argp = &hdr->args;
+	struct nfs_pgio_res  *resp = &hdr->res;
 
 	/* This is a short read! */
-	nfs_inc_stats(data->header->inode, NFSIOS_SHORTREAD);
+	nfs_inc_stats(hdr->inode, NFSIOS_SHORTREAD);
 	/* Has the server at least made some progress? */
 	if (resp->count == 0) {
-		nfs_set_pgio_error(data->header, -EIO, argp->offset);
+		nfs_set_pgio_error(hdr, -EIO, argp->offset);
 		return;
 	}
-	/* Yes, so retry the read at the end of the data */
-	data->mds_offset += resp->count;
+	/* Yes, so retry the read at the end of the hdr */
+	hdr->mds_offset += resp->count;
 	argp->offset += resp->count;
 	argp->pgbase += resp->count;
 	argp->count -= resp->count;
 	rpc_restart_call_prepare(task);
 }
 
-static void nfs_readpage_result(struct rpc_task *task, struct nfs_pgio_data *data)
+static void nfs_readpage_result(struct rpc_task *task,
+				struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-
-	if (data->res.eof) {
+	if (hdr->res.eof) {
 		loff_t bound;
 
-		bound = data->args.offset + data->res.count;
+		bound = hdr->args.offset + hdr->res.count;
 		spin_lock(&hdr->lock);
 		if (bound < hdr->io_start + hdr->good_bytes) {
 			set_bit(NFS_IOHDR_EOF, &hdr->flags);
@@ -254,8 +256,8 @@ static void nfs_readpage_result(struct r
 			hdr->good_bytes = bound - hdr->io_start;
 		}
 		spin_unlock(&hdr->lock);
-	} else if (data->res.count != data->args.count)
-		nfs_readpage_retry(task, data);
+	} else if (hdr->res.count != hdr->args.count)
+		nfs_readpage_retry(task, hdr);
 }
 
 /*
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -826,11 +826,11 @@ nfs_clear_request_commit(struct nfs_page
 }
 
 static inline
-int nfs_write_need_commit(struct nfs_pgio_data *data)
+int nfs_write_need_commit(struct nfs_pgio_header *hdr)
 {
-	if (data->writeverf.committed == NFS_DATA_SYNC)
-		return data->header->lseg == NULL;
-	return data->writeverf.committed != NFS_FILE_SYNC;
+	if (hdr->writeverf.committed == NFS_DATA_SYNC)
+		return hdr->lseg == NULL;
+	return hdr->writeverf.committed != NFS_FILE_SYNC;
 }
 
 #else
@@ -857,7 +857,7 @@ nfs_clear_request_commit(struct nfs_page
 }
 
 static inline
-int nfs_write_need_commit(struct nfs_pgio_data *data)
+int nfs_write_need_commit(struct nfs_pgio_header *hdr)
 {
 	return 0;
 }
@@ -1241,17 +1241,18 @@ static int flush_task_priority(int how)
 	return RPC_PRIORITY_NORMAL;
 }
 
-static void nfs_initiate_write(struct nfs_pgio_data *data, struct rpc_message *msg,
+static void nfs_initiate_write(struct nfs_pgio_header *hdr,
+			       struct rpc_message *msg,
 			       struct rpc_task_setup *task_setup_data, int how)
 {
-	struct inode *inode = data->header->inode;
+	struct inode *inode = hdr->inode;
 	int priority = flush_task_priority(how);
 
 	task_setup_data->priority = priority;
-	NFS_PROTO(inode)->write_setup(data, msg);
+	NFS_PROTO(inode)->write_setup(hdr, msg);
 
 	nfs4_state_protect_write(NFS_SERVER(inode)->nfs_client,
-				 &task_setup_data->rpc_client, msg, data);
+				 &task_setup_data->rpc_client, msg, hdr);
 }
 
 /* If a nfs_flush_* function fails, it should remove reqs from @head and
@@ -1313,19 +1314,17 @@ void nfs_commit_prepare(struct rpc_task
 	NFS_PROTO(data->inode)->commit_rpc_prepare(task, data);
 }
 
-static void nfs_writeback_release_common(struct nfs_pgio_data *data)
+static void nfs_writeback_release_common(struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_header *hdr = data->header;
-	int status = data->task.tk_status;
+	int status = hdr->task.tk_status;
 
-	if ((status >= 0) && nfs_write_need_commit(data)) {
+	if ((status >= 0) && nfs_write_need_commit(hdr)) {
 		spin_lock(&hdr->lock);
 		if (test_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags))
 			; /* Do nothing */
 		else if (!test_and_set_bit(NFS_IOHDR_NEED_COMMIT, &hdr->flags))
-			memcpy(&hdr->verf, &data->writeverf, sizeof(hdr->verf));
-		else if (memcmp(&hdr->verf, &data->writeverf,
-			 sizeof(hdr->verf)))
+			memcpy(&hdr->verf, &hdr->writeverf, sizeof(hdr->verf));
+		else if (memcmp(&hdr->verf, &hdr->writeverf, sizeof(hdr->verf)))
 			set_bit(NFS_IOHDR_NEED_RESCHED, &hdr->flags);
 		spin_unlock(&hdr->lock);
 	}
@@ -1359,7 +1358,8 @@ static int nfs_should_remove_suid(const
 /*
  * This function is called when the WRITE call is complete.
  */
-static int nfs_writeback_done(struct rpc_task *task, struct nfs_pgio_data *data,
+static int nfs_writeback_done(struct rpc_task *task,
+			      struct nfs_pgio_header *hdr,
 			      struct inode *inode)
 {
 	int status;
@@ -1371,13 +1371,14 @@ static int nfs_writeback_done(struct rpc
 	 * another writer had changed the file, but some applications
 	 * depend on tighter cache coherency when writing.
 	 */
-	status = NFS_PROTO(inode)->write_done(task, data);
+	status = NFS_PROTO(inode)->write_done(task, hdr);
 	if (status != 0)
 		return status;
-	nfs_add_stats(inode, NFSIOS_SERVERWRITTENBYTES, data->res.count);
+	nfs_add_stats(inode, NFSIOS_SERVERWRITTENBYTES, hdr->res.count);
 
 #if IS_ENABLED(CONFIG_NFS_V3) || IS_ENABLED(CONFIG_NFS_V4)
-	if (data->res.verf->committed < data->args.stable && task->tk_status >= 0) {
+	if (hdr->res.verf->committed < hdr->args.stable &&
+	    task->tk_status >= 0) {
 		/* We tried a write call, but the server did not
 		 * commit data to stable storage even though we
 		 * requested it.
@@ -1393,7 +1394,7 @@ static int nfs_writeback_done(struct rpc
 			dprintk("NFS:       faulty NFS server %s:"
 				" (committed = %d) != (stable = %d)\n",
 				NFS_SERVER(inode)->nfs_client->cl_hostname,
-				data->res.verf->committed, data->args.stable);
+				hdr->res.verf->committed, hdr->args.stable);
 			complain = jiffies + 300 * HZ;
 		}
 	}
@@ -1408,16 +1409,17 @@ static int nfs_writeback_done(struct rpc
 /*
  * This function is called when the WRITE call is complete.
  */
-static void nfs_writeback_result(struct rpc_task *task, struct nfs_pgio_data *data)
+static void nfs_writeback_result(struct rpc_task *task,
+				 struct nfs_pgio_header *hdr)
 {
-	struct nfs_pgio_args	*argp = &data->args;
-	struct nfs_pgio_res	*resp = &data->res;
+	struct nfs_pgio_args	*argp = &hdr->args;
+	struct nfs_pgio_res	*resp = &hdr->res;
 
 	if (resp->count < argp->count) {
 		static unsigned long    complain;
 
 		/* This a short write! */
-		nfs_inc_stats(data->header->inode, NFSIOS_SHORTWRITE);
+		nfs_inc_stats(hdr->inode, NFSIOS_SHORTWRITE);
 
 		/* Has the server at least made some progress? */
 		if (resp->count == 0) {
@@ -1427,14 +1429,14 @@ static void nfs_writeback_result(struct
 				       argp->count);
 				complain = jiffies + 300 * HZ;
 			}
-			nfs_set_pgio_error(data->header, -EIO, argp->offset);
+			nfs_set_pgio_error(hdr, -EIO, argp->offset);
 			task->tk_status = -EIO;
 			return;
 		}
 		/* Was this an NFSv2 write or an NFSv3 stable write? */
 		if (resp->verf->committed != NFS_UNSTABLE) {
 			/* Resend from where the server left off */
-			data->mds_offset += resp->count;
+			hdr->mds_offset += resp->count;
 			argp->offset += resp->count;
 			argp->pgbase += resp->count;
 			argp->count -= resp->count;
--- a/include/linux/nfs_page.h
+++ b/include/linux/nfs_page.h
@@ -64,10 +64,11 @@ struct nfs_rw_ops {
 	const fmode_t rw_mode;
 	struct nfs_pgio_header *(*rw_alloc_header)(void);
 	void (*rw_free_header)(struct nfs_pgio_header *);
-	void (*rw_release)(struct nfs_pgio_data *);
-	int  (*rw_done)(struct rpc_task *, struct nfs_pgio_data *, struct inode *);
-	void (*rw_result)(struct rpc_task *, struct nfs_pgio_data *);
-	void (*rw_initiate)(struct nfs_pgio_data *, struct rpc_message *,
+	void (*rw_release)(struct nfs_pgio_header *);
+	int  (*rw_done)(struct rpc_task *, struct nfs_pgio_header *,
+			struct inode *);
+	void (*rw_result)(struct rpc_task *, struct nfs_pgio_header *);
+	void (*rw_initiate)(struct nfs_pgio_header *, struct rpc_message *,
 			    struct rpc_task_setup *, int);
 };
 
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -1257,27 +1257,10 @@ enum {
 	NFS_IOHDR_NEED_RESCHED,
 };
 
-struct nfs_pgio_data {
-	struct nfs_pgio_header	*header;
-	struct list_head	list;
-	struct rpc_task		task;
-	struct nfs_fattr	fattr;
-	struct nfs_writeverf	writeverf;	/* Used for writes */
-	struct nfs_pgio_args	args;		/* argument struct */
-	struct nfs_pgio_res	res;		/* result struct */
-	unsigned long		timestamp;	/* For lease renewal */
-	int (*pgio_done_cb)(struct rpc_task *task, struct nfs_pgio_data *data);
-	__u64			mds_offset;	/* Filelayout dense stripe */
-	struct nfs_page_array	page_array;
-	struct nfs_client	*ds_clp;	/* pNFS data server */
-	int			ds_idx;		/* ds index if ds_clp is set */
-};
-
 struct nfs_pgio_header {
 	struct inode		*inode;
 	struct rpc_cred		*cred;
 	struct list_head	pages;
-	struct nfs_pgio_data	data;
 	atomic_t		refcnt;
 	struct nfs_page		*req;
 	struct nfs_writeverf	verf;		/* Used for writes */
@@ -1295,6 +1278,21 @@ struct nfs_pgio_header {
 	int			error;		/* merge with pnfs_error */
 	unsigned long		good_bytes;	/* boundary of good data */
 	unsigned long		flags;
+
+	/*
+	 * rpc data
+	 */
+	struct rpc_task		task;
+	struct nfs_fattr	fattr;
+	struct nfs_writeverf	writeverf;	/* Used for writes */
+	struct nfs_pgio_args	args;		/* argument struct */
+	struct nfs_pgio_res	res;		/* result struct */
+	unsigned long		timestamp;	/* For lease renewal */
+	int (*pgio_done_cb)(struct rpc_task *, struct nfs_pgio_header *);
+	__u64			mds_offset;	/* Filelayout dense stripe */
+	struct nfs_page_array	page_array;
+	struct nfs_client	*ds_clp;	/* pNFS data server */
+	int			ds_idx;		/* ds index if ds_clp is set */
 };
 
 struct nfs_mds_commit_info {
@@ -1426,11 +1424,12 @@ struct nfs_rpc_ops {
 			     struct nfs_pathconf *);
 	int	(*set_capabilities)(struct nfs_server *, struct nfs_fh *);
 	int	(*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int);
-	int	(*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_data *);
-	void	(*read_setup)   (struct nfs_pgio_data *, struct rpc_message *);
-	int	(*read_done)  (struct rpc_task *, struct nfs_pgio_data *);
-	void	(*write_setup)  (struct nfs_pgio_data *, struct rpc_message *);
-	int	(*write_done)  (struct rpc_task *, struct nfs_pgio_data *);
+	int	(*pgio_rpc_prepare)(struct rpc_task *,
+				    struct nfs_pgio_header *);
+	void	(*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
+	int	(*read_done)(struct rpc_task *, struct nfs_pgio_header *);
+	void	(*write_setup)(struct nfs_pgio_header *, struct rpc_message *);
+	int	(*write_done)(struct rpc_task *, struct nfs_pgio_header *);
 	void	(*commit_setup) (struct nfs_commit_data *, struct rpc_message *);
 	void	(*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
 	int	(*commit_done) (struct rpc_task *, struct nfs_commit_data *);



  parent reply	other threads:[~2014-10-04  0:27 UTC|newest]

Thread overview: 329+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-03 21:26 [PATCH 3.16 000/357] 3.16.4-stable review Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 001/357] module: Clean up ro/nx after early module load failures Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 002/357] cpufreq: OPP: Avoid sleeping while atomic Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 003/357] carl9170: fix sending URBs with wrong type when using full-speed Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 004/357] drm/tegra: add MODULE_DEVICE_TABLEs Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 012/357] drm/ttm: Fix possible division by 0 in ttm_dma_pool_shrink_scan() Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 013/357] drm/ttm: Choose a pool to shrink correctly " Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 014/357] drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker functions Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 015/357] drm/ttm: Fix possible stack overflow by recursive shrinker calls Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 016/357] drm/ttm: Pass GFP flags in order to avoid deadlock Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 017/357] drm/radeon/dpm: handle voltage info fetching on hawaii Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 018/357] drm/radeon: re-enable dpm by default on cayman Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 019/357] drm/radeon: re-enable dpm by default on BTC Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 020/357] drm/radeon: load the lm63 driver for an lm64 thermal chip Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 022/357] drm/radeon/atom: add new voltage fetch function for hawaii Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 023/357] drm/radeon: tweak ACCEL_WORKING2 query " Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 024/357] drm/i915: Fix crash when failing to parse MIPI VBT Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 025/357] drm/i915: read HEAD register back in init_ring_common() to enforce ordering Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 026/357] drm/i915: Disable RCS flips on Ivybridge Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 027/357] of: Allow mem_reserve of memory with a base address of zero Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 028/357] of/irq: Fix lookup to use interrupts-extended property first Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 029/357] libata: widen Crucial M550 blacklist matching Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 030/357] pata_scc: propagate return value of scc_wait_after_reset Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 031/357] ahci: Add Device IDs for Intel 9 Series PCH Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 032/357] ahci: add pcid for Marvel 0x9182 controller Greg Kroah-Hartman
2014-10-03 21:26 ` [PATCH 3.16 033/357] pwm: Fix period and polarity in pwm_get() for non-perfect matches Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 034/357] ibmveth: Fix endian issues with rx_no_buffer statistic Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 035/357] aio: fix reqs_available handling Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 036/357] aio: add missing smp_rmb() in read_events_ring Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 037/357] ARM: imx: fix TLB missing of IOMUXC base address during suspend Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 038/357] ARM: dts: vf610-twr: Fix pinctrl_esdhc1 pin definitions Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 040/357] arm64: flush TLS registers during exec Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 041/357] arm64: use irq_set_affinity with force=false when migrating irqs Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 042/357] arm/arm64: KVM: Complete WFI/WFE instructions Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 043/357] ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 044/357] i2c: rk3x: fix bug that cause transfer fails in master receive mode Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 045/357] i2c: mv64xxx: continue probe when clock-frequency is missing Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 046/357] i2c: at91: add bound checking on SMBus block length bytes Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 047/357] i2c: at91: Fix a race condition during signal handling in at91_do_twi_xfer Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 048/357] Revert "i2c: rcar: remove spinlock" Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 049/357] i2c: rcar: fix MNR interrupt handling Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 050/357] i2c: rcar: fix RCAR_IRQ_ACK_{RECV|SEND} Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 051/357] i2c: rk3x: fix divisor calculation for SCL frequency Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 052/357] i2c: ismt: use correct length when copy buffer Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 053/357] ftrace: Use current addr when converting to nop in __ftrace_replace_code() Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 054/357] trace: Fix epoll hang when we race with new entries Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 055/357] arm64: ptrace: fix compat hardware watchpoint reporting Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 056/357] ALSA: core: fix buffer overflow in snd_info_get_line() Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 057/357] ALSA: dice: fix wrong channel mappping at higher sampling rate Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 058/357] ALSA: firewire-lib/dice: add arrangements of PCM pointer and interrupts for Dice quirk Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 059/357] ALSA: hda - Fix digital mic on Acer Aspire 3830TG Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 060/357] ALSA: hda - Fix COEF setups for ALC1150 codec Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 061/357] ALSA: hda - Fix invalid pin powermap without jack detection Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 062/357] ALSA: hda - Add fixup model name lookup for Lemote A1205 Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 063/357] ALSA: pcm: fix fifo_size frame calculation Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 064/357] cfq-iosched: Fix wrong children_weight calculation Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 065/357] HID: picolcd: sanity check report size in raw_event() callback Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 066/357] HID: magicmouse: " Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 067/357] HID: logitech-dj: prevent false errors to be shown Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 068/357] xattr: fix check for simultaneous glibc header inclusion Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 073/357] drm/i915: Ignore VBT backlight presence check on Acer C720 (4005U) Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 074/357] drm/i915: Remove bogus __init annotation from DMI callbacks Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 076/357] drm/i915: Fix EIO/wedged handling in gem fault handler Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 078/357] drm/i915/hdmi: fix hdmi audio state readout Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 079/357] drm/i915: Dont leak command parser tables on suspend/resume Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 080/357] drm/ast: open key before detect chips Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 081/357] drm/ast: AST2000 cannot be detected correctly Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 082/357] imx-drm: ipuv3-plane: fix ipu_plane_dpms() Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 083/357] imx-drm: imx-ldb: fix NULL pointer in imx_ldb_unbind() Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 084/357] drm/vmwgfx: Fix a potential infinite spin waiting for fifo idle Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 086/357] drm/radeon: Add missing lines to ci_set_thermal_temperature_range Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 087/357] drm/radeon/dpm: select the appropriate vce power state for KV/KB/ML Greg Kroah-Hartman
2014-10-03 21:27 ` [PATCH 3.16 092/357] drm/radeon: handle broken disabled rb mask gracefully (6xx/7xx) (v2) Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 094/357] drm/radeon/dpm: set the thermal type properly for special configs Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 095/357] drm/radeon: add connector quirk for fujitsu board Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 099/357] drm/radeon/dpm: fix resume on mullins Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 101/357] xtensa: replace IOCTL code definitions with constants Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 102/357] xtensa: fix address checks in dma_{alloc,free}_coherent Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 103/357] xtensa: fix access to THREAD_RA/THREAD_SP/THREAD_DS Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 104/357] xtensa: fix TLBTEMP_BASE_2 region handling in fast_second_level_miss Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 105/357] xtensa: fix a6 and a7 handling in fast_syscall_xtensa Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 106/357] locks: pass correct "before" pointer to locks_unlink_lock in generic_add_lease Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 107/357] ufs: fix deadlocks introduced by sb mutex merge Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 108/357] usb: gadget: f_rndis: fix interface id for OS descriptors Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 109/357] USB: serial: pl2303: add device id for ztek device Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 110/357] USB: serial: fix potential stack buffer overflow Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 111/357] USB: sisusb: add device id for Magic Control USB video Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 112/357] USB: serial: fix potential heap buffer overflow Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 113/357] USB: option: reduce interrupt-urb logging verbosity Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 114/357] USB: option: add VIA Telecom CDS7 chipset device id Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 115/357] Revert "USB: option,zte_ev: move most ZTE CDMA devices to zte_ev" Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 116/357] USB: zte_ev: remove duplicate Gobi PID Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 117/357] USB: zte_ev: remove duplicate Qualcom PID Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 120/357] usb: phy: tegra: Avoid use of sizeof(void) Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 121/357] usb: phy: twl4030-usb: Fix lost interrupts after ID pin goes down Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 122/357] usb: phy: twl4030-usb: Fix regressions to runtime PM on omaps Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 123/357] usb: chipidea: msm: Use USB PHY API to control PHY state Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 124/357] usb: chipidea: msm: Initialize PHY on reset event Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 125/357] USB: ftdi_sio: Add support for GE Healthcare Nemo Tracker device Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 126/357] USB: ftdi_sio: add support for NOVITUS Bono E thermal printer Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 127/357] USB: zte_ev: fix removed PIDs Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 128/357] uwb: init beacon cache entry before registering uwb device Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 129/357] usb: host: xhci: fix compliance mode workaround Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 130/357] xhci: Fix null pointer dereference if xhci initialization fails Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 131/357] usb: xhci: Fix OOPS in xhci error handling code Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 132/357] xhci: fix oops when xhci resumes from hibernate with hw lpm capable devices Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 133/357] usb: hub: take hub->hdev reference when processing from eventlist Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 134/357] USB: document the u flag for usb-storage quirks parameter Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 135/357] storage: Add single-LUN quirk for Jaz USB Adapter Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 136/357] USB: storage: Add quirk for Adaptec USBConnect 2000 USB-to-SCSI Adapter Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 137/357] USB: storage: Add quirk for Ariston Technologies iConnect USB to SCSI adapter Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 138/357] USB: storage: Add quirks for Entrega/Xircom USB to SCSI converters Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 139/357] USB: EHCI: unlink QHs even after the controller has stopped Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 140/357] usb: dwc3: core: fix order of PM runtime calls Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 141/357] usb: dwc3: core: fix ordering for PHY suspend Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 142/357] usb: dwc3: omap: fix ordering for runtime pm calls Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 143/357] usb: dwc2/gadget: fix phy disable sequence Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 144/357] usb: dwc2/gadget: fix phy initialization sequence Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 145/357] usb: dwc2/gadget: break infinite loop in endpoint disable code Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 146/357] usb: dwc2/gadget: do not call disconnect method in pullup Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 147/357] usb: dwc2/gadget: delay enabling irq once hardware is configured properly Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 148/357] usb: dwc2/gadget: avoid disabling ep0 Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 149/357] ACPI / RTC: Fix CMOS RTC opregion handler accesses to wrong addresses Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 150/357] ACPI / LPSS: complete PM entries for LPSS power domain Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 152/357] iommu/vt-d: Check return value of acpi_bus_get_device() Greg Kroah-Hartman
2014-10-03 21:28 ` [PATCH 3.16 153/357] iommu/fsl: Fix warning resulting from adding PCI device twice Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 154/357] iommu/arm-smmu: fix programming of SMMU_CBn_TCR for stage 1 Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 155/357] nfsd4: fix rd_dircount enforcement Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 157/357] NFSv4: nfs4_state_manager() vs. nfs_server_remove_lists() Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 158/357] NFSv4: Fix another bug in the close/open_downgrade code Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 159/357] nfsd4: fix corruption of NFSv4 read data Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 160/357] nfs: move nfs_pgio_data and remove nfs_rw_header Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 161/357] nfs: rename members of nfs_pgio_data Greg Kroah-Hartman
2014-10-03 21:29 ` Greg Kroah-Hartman [this message]
2014-10-03 21:29 ` [PATCH 3.16 163/357] nfs: remove pgio_header refcount, related cleanup Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 164/357] nfs: check wait_on_bit_lock err in page_group_lock Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 165/357] pnfs: add pnfs_put_lseg_async Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 166/357] nfs: clear_request_commit while holding i_lock Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 167/357] nfs: change nfs_page_group_lock argument Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 168/357] nfs: fix nonblocking calls to nfs_page_group_lock Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 169/357] nfs: use blocking page_group_lock in add_request Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 170/357] nfs: fix error handling in lock_and_join_requests Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 171/357] nfs: dont sleep with inode lock " Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 174/357] spi/omap-mcspi: Fix the spi task hangs waiting dma_rx Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 175/357] spi: dw: fix kernel crash due to NULL pointer dereference Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 176/357] spi: dw-pci: fix bug when regs left uninitialized Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 177/357] ARM: 8128/1: abort: dont clear the exclusive monitors Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 178/357] ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy strex Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 179/357] ARM: dts: imx53-qsrb: Fix suspend/resume Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 180/357] ARM: DRA7: hwmod: Add dra74x and dra72x specific ocp interface lists Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 181/357] ARM: dts: DRA7: fix interrupt-cells for GPIO Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 182/357] ARM: edma: Fix configuration parsing for SoCs with multiple eDMA3 CC Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 183/357] ARM: dts: dra7-evm: Fix spi1 mux documentation Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 184/357] ARM: 8133/1: use irq_set_affinity with force=false when migrating irqs Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 185/357] ARM: 8148/1: flush TLS and thumbee register state during exec Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 186/357] ARM: 8149/1: perf: Dont sleep while atomic when enabling per-cpu interrupts Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 187/357] ARM: dts: dra7-evm: Fix NAND GPMC timings Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 188/357] ARM: DT: imx53: fix lvds channel 1 port Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 189/357] ARM: imx: fix .is_enabled() of shared gate clock Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 190/357] ARM: 8165/1: alignment: dont break misaligned NEON load/store Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 191/357] ARM: 8178/1: fix set_tls for !CONFIG_KUSER_HELPERS Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 192/357] MIPS: ZBOOT: add missing <linux/string.h> include Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 193/357] MIPS: Fix MFC1 & MFHC1 emulation for 64-bit MIPS systems Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 194/357] MIPS: mcount: Adjust stack pointer for static trace in MIPS32 Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 195/357] ACPICA: Update to GPIO region handler interface Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 196/357] gpio / ACPI: Use pin index and bit length Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 197/357] ACPI / platform / LPSS: disable async suspend/resume of LPSS devices Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 198/357] ACPI / hotplug: Generate online uevents for ACPI containers Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 199/357] ACPI / scan: Correct error return value of create_modalias() Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 200/357] ACPI / video: disable native backlight for ThinkPad X201s Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 201/357] arm64: Add brackets around user_stack_pointer() Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 202/357] memblock, memhotplug: fix wrong type in memblock_find_in_range_node() Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 203/357] regmap: Fix regcache debugfs initialization Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 204/357] regmap: Fix handling of volatile registers for format_write() chips Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 205/357] regmap: Dont attempt block writes when syncing cache on single_rw devices Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 206/357] cgroup: reject cgroup names with \n Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 208/357] cgroup: fix unbalanced locking Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 209/357] KVM: s390: Fix user triggerable bug in dead code Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 210/357] KVM: s390/mm: try a cow on read only pages for key ops Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 211/357] KVM: s390/mm: Fix storage key corruption during swapping Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 212/357] KVM: s390/mm: Fix guest storage key corruption in ptep_set_access_flags Greg Kroah-Hartman
2014-10-03 21:29 ` [PATCH 3.16 213/357] xen/manage: Always freeze/thaw processes when suspend/resuming Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 214/357] x86/xen: dont copy bogus duplicate entries into kernel page tables Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 215/357] x86 early_ioremap: Increase FIX_BTMAPS_SLOTS to 8 Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 216/357] x86/kaslr: Avoid the setup_data area when picking location Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 217/357] shmem: fix nlink for rename overwrite directory Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 218/357] ASoC: davinci-mcasp: Correct rx format unit configuration Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 219/357] SMB3: Fix oops when creating symlinks on smb3 Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 220/357] iio:trigger: modify return value for iio_trigger_get Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 221/357] iio: accel: bma180: Fix indio_dev->trig assignment Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 222/357] iio: hid_sensor_hub: " Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 223/357] iio: gyro: itg3200: " Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 224/357] iio: inv_mpu6050: " Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 225/357] iio: meter: ade7758: " Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 226/357] iio: st_sensors: " Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 227/357] iio: adc: ad_sigma_delta: " Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 228/357] iio:magnetometer: bugfix magnetometers gain values Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 229/357] iio:inkern: fix overwritten -EPROBE_DEFER in of_iio_channel_get_by_name Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 230/357] iio: adc: xilinx-xadc: assign auxiliary channels address correctly Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 231/357] iio: adc: at91: dont use the last converted data register Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 232/357] Target/iser: Get isert_conn reference once got to connected_handler Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 233/357] Target/iser: Dont put isert_conn inside disconnected handler Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 234/357] target: Fix inverted logic in SE_DEV_ALUA_SUPPORT_STATE_STORE Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 235/357] iscsi-target: avoid NULL pointer in iscsi_copy_param_list failure Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 236/357] iscsi-target: Fix memory corruption in iscsit_logout_post_handler_diffcid Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 237/357] NFC: microread: Potential overflows in microread_target_discovered() Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 238/357] SCSI: libiscsi: fix potential buffer overrun in __iscsi_conn_send_pdu Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 239/357] Revert "iwlwifi: dvm: dont enable CTS to self" Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 240/357] iwlwifi: mvm: fix endianity issues with Smart Fifo commands Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 241/357] iwlwifi: increase DEFAULT_MAX_TX_POWER Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 242/357] iwlwifi: mvm: treat EAPOLs like mgmt frames wrt rate Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 243/357] iwlwifi: mvm: set MAC_FILTER_IN_BEACON correctly for STA/P2P client Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 244/357] workqueue: apply __WQ_ORDERED to create_singlethread_workqueue() Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 245/357] futex: Unlock hb->lock in futex_wait_requeue_pi() error path Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 246/357] block: Fix dev_t minor allocation lifetime Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 247/357] dm cache: fix race causing dirty blocks to be marked as clean Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 248/357] dm crypt: fix access beyond the end of allocated space Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 249/357] Input: serport - add compat handling for SPIOCSTYPE ioctl Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 250/357] Input: synaptics - add support for ForcePads Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 252/357] Input: atkbd - do not try deactivate keyboard on any LG laptops Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 253/357] Input: i8042 - add Fujitsu U574 to no_timeout dmi table Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 254/357] Input: i8042 - add nomux quirk for Avatar AVIU-145A6 Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 255/357] hwmon: (ds1621) Update zbits after conversion rate change Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 256/357] ata_piix: Add Device IDs for Intel 9 Series PCH Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 257/357] gpio: Fix potential NULL handler data in chained irqchip handler Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 258/357] percpu: free percpu allocation info for uniprocessor system Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 259/357] percpu: fix pcpu_alloc_pages() failure path Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 260/357] percpu: perform tlb flush after pcpu_map_pages() failure Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 261/357] regulatory: add NUL to alpha2 Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 262/357] rtlwifi: rtl8192cu: Add new ID Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 263/357] lockd: fix rpcbind crash on lockd startup failure Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 264/357] lockdep: Revert lockdep check in raw_seqcount_begin() Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 265/357] genhd: fix leftover might_sleep() in blk_free_devt() Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 266/357] usb: dwc3: fix TRB completion when multiple TRBs are started Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 267/357] ftrace: Allow ftrace_ops to use the hashes from other ops Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 268/357] ftrace: Fix function_profiler and function tracer together Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 269/357] ftrace: Update all ftrace_ops for a ftrace_hash_ops update Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 270/357] Revert "mac80211: disable uAPSD if all ACs are under ACM" Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 271/357] kernel/printk/printk.c: fix faulty logic in the case of recursive printk Greg Kroah-Hartman
2014-10-03 21:30 ` [PATCH 3.16 273/357] kcmp: fix standard comparison bug Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 274/357] fsnotify/fdinfo: use named constants instead of hardcoded values Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 275/357] fs/notify: dont show f_handle if exportfs_encode_inode_fh failed Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 276/357] nilfs2: fix data loss with mmap() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 277/357] ocfs2/dlm: do not get resource spinlock if lockres is new Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 278/357] mm, slab: initialize object alignment on cache creation Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 279/357] fs/cachefiles: add missing \n to kerror conversions Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 280/357] mm: softdirty: keep bit when zapping file pte Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 281/357] sched: Fix unreleased llc_shared_mask bit during CPU hotplug Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 282/357] brcmfmac: handle IF event for P2P_DEVICE interface Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 283/357] ath9k_htc: fix random decryption failure Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 284/357] powerpc/perf: Fix ABIv2 kernel backtraces Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 285/357] powerpc: Add smp_mb() to arch_spin_is_locked() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 286/357] powerpc: Add smp_mb()s to arch_spin_unlock_wait() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 287/357] tty/serial: at91: BUG: disable interrupts when !UART_ENABLE_MS() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 288/357] dont bugger nd->seq on set_root_rcu() from follow_dotdot_rcu() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 289/357] parisc: Implement new LWS CAS supporting 64 bit operations Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 290/357] parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 291/357] alarmtimer: Return relative times in timer_gettime Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 292/357] alarmtimer: Do not signal SIGEV_NONE timers Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 293/357] alarmtimer: Lock k_itimer during timer callback Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 294/357] virtio: rng: delay hwrng_register() till driver is ready Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 295/357] Revert "hwrng: virtio - ensure reads happen after successful probe" Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 296/357] GFS2: fix d_splice_alias() misuses Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 297/357] IB/qib: Correct reference counting in debugfs qp_stats Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 298/357] IB/mlx4: Avoid null pointer dereference in mlx4_ib_scan_netdevs() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 299/357] IB/mlx4: Dont duplicate the default RoCE GID Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 300/357] IB/core: When marshaling uverbs path, clear unused fields Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 301/357] spi: fsl: Dont use devm_kzalloc in master->setup callback Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 302/357] spi: dw: " Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 303/357] spi: sirf: enable RX_IO_DMA_INT interrupt Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 305/357] perf: Fix a race condition in perf_remove_from_context() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 307/357] PCI: Add pci_ignore_hotplug() to ignore hotplug events for a device Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 308/357] Revert "PCI: Dont scan random busses in pci_scan_bridge()" Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 312/357] Fix nasty 32-bit overflow bug in buffer i/o code Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 313/357] blk-mq: Avoid race condition with uninitialized requests Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 314/357] crypto: ccp - Check for CCP before registering crypto algs Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 315/357] nl80211: clear skb cb before passing to netlink Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 316/357] Revert "PCI: Make sure bus number resources stay within their parents bounds" Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 317/357] cpufreq: release policy->rwsem on error Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 318/357] cpufreq: fix cpufreq suspend/resume for intel_pstate Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 319/357] media: it913x: init tuner on attach Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 320/357] media: af9035: new IDs: add support for PCTV 78e and PCTV 79e Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 321/357] media: af9033: feed clock to RF tuner Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 322/357] media: cx18: fix kernel oops with tda8290 tuner Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 323/357] media: af9033: update IT9135 tuner inittabs Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 324/357] media: adv7604: fix inverted condition Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 325/357] media: em28xx: fix VBI handling logic Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 326/357] media: videobuf2-dma-sg: fix for wrong GFP mask to sg_alloc_table_from_pages Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 327/357] media: vb2: fix vb2 state check when start_streaming fails Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 328/357] media: vb2: fix plane index sanity check in vb2_plane_cookie() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 329/357] md/raid1: clean up request counts properly in close_sync() Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 330/357] md/raid1: be more cautious where we read-balance during resync Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 331/357] md/raid1: make sure resync waits for conflicting writes to complete Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 332/357] md/raid1: Dont use next_resync to determine how far resync has progressed Greg Kroah-Hartman
2014-10-03 21:31 ` [PATCH 3.16 333/357] md/raid1: update next_resync under resync_lock Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 334/357] md/raid1: count resync requests in nr_pending Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 335/357] md/raid1: fix_read_error should act on all non-faulty devices Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 336/357] md/raid1: intialise start_next_window for READ case to avoid hang Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 337/357] netfilter: xt_hashlimit: perform garbage collection from process context Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 338/357] ipvs: Maintain all DSCP and ECN bits for ipv6 tun forwarding Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 339/357] netfilter: x_tables: allow to use default cgroup match Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 340/357] ipvs: fix ipv6 hook registration for local replies Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 341/357] netfilter: nf_tables: dont update chain with unset counters Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 342/357] mmc: mmci: Reverse IRQ handling for the arm_variant Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 343/357] dmaengine: dw: introduce dwc_dostart_first_queued() helper Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 344/357] dmaengine: dw: dont perform DMA when dmaengine_submit is called Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 345/357] partitions: aix.c: off by one bug Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 346/357] cpufreq: update cpufreq_suspended after stopping governors Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 347/357] clk: ti: dra7-atl: Provide error check for incoming parameters in set_rate Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 348/357] clk: prevent erronous parsing of children during rate change Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 349/357] clk: ti: divider: Provide error check for incoming parameters in set_rate Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 350/357] ahci_xgene: Removing NCQ support from the APM X-Gene SoC AHCI SATA Host Controller driver Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 351/357] aio: block exit_aio() until all context requests are completed Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 352/357] ext4: propagate errors up to ext4_find_entry()s callers Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 353/357] ext4: avoid trying to kfree an ERR_PTR pointer Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 354/357] staging/lustre: disable virtual block device for 64K pages Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 355/357] clk: qcom: Fix MN frequency tables, parent map, and jpegd Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 356/357] clk: qcom: mdp_lut_clk is a child of mdp_src Greg Kroah-Hartman
2014-10-03 21:32 ` [PATCH 3.16 357/357] clk: qcom: Fix PLL rate configurations Greg Kroah-Hartman
2014-10-04  0:33 ` [PATCH 3.16 000/357] 3.16.4-stable review Shuah Khan
2014-10-04  1:42   ` Greg Kroah-Hartman
2014-10-04  3:18 ` Guenter Roeck
2014-10-05 20:37   ` Greg Kroah-Hartman
2014-10-04  8:23 ` Satoru Takeuchi
2014-10-05 20:38   ` Greg Kroah-Hartman
2014-10-04 12:38 ` Chuck Ebbert
2014-10-05 20:39   ` Greg Kroah-Hartman
2014-10-05 20:50     ` Chuck Ebbert
2014-10-05 21:47       ` Greg Kroah-Hartman

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=20141003212938.337402693@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dros@primarydata.com \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=trond.myklebust@primarydata.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.