linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH-v2 1/3] NFS: track direct IO left bytes
@ 2012-08-13 14:39 Peng Tao
  2012-08-13 14:39 ` [PATCH-v2 2/3] NFS41: send real write size in layoutget Peng Tao
  2012-08-13 14:39 ` [PATCH-v2 3/3] NFS41: send real read " Peng Tao
  0 siblings, 2 replies; 9+ messages in thread
From: Peng Tao @ 2012-08-13 14:39 UTC (permalink / raw)
  To: Trond.Myklebust; +Cc: linux-nfs, bharrosh, Peng Tao

Signed-off-by: Peng Tao <tao.peng@emc.com>
---
 fs/nfs/direct.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 34a6282..c39f775 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -78,6 +78,7 @@ struct nfs_direct_req {
 	atomic_t		io_count;	/* i/os we're waiting for */
 	spinlock_t		lock;		/* protect completion state */
 	ssize_t			count,		/* bytes actually processed */
+				bytes_left,	/* bytes left to be sent */
 				error;		/* any reported error */
 	struct completion	completion;	/* wait for i/o completion */
 
@@ -390,6 +391,7 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_pageio_descriptor *de
 			user_addr += req_len;
 			pos += req_len;
 			count -= req_len;
+			dreq->bytes_left -= req_len;
 		}
 		/* The nfs_page now hold references to these pages */
 		nfs_direct_release_pages(pagevec, npages);
@@ -456,6 +458,7 @@ static ssize_t nfs_direct_read(struct kiocb *iocb, const struct iovec *iov,
 		goto out;
 
 	dreq->inode = inode;
+	dreq->bytes_left = iov_length(iov, nr_segs);
 	dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
 	dreq->l_ctx = nfs_get_lock_context(dreq->ctx);
 	if (dreq->l_ctx == NULL)
@@ -706,6 +709,7 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_pageio_descriptor *d
 			user_addr += req_len;
 			pos += req_len;
 			count -= req_len;
+			dreq->bytes_left -= req_len;
 		}
 		/* The nfs_page now hold references to these pages */
 		nfs_direct_release_pages(pagevec, npages);
@@ -855,6 +859,7 @@ static ssize_t nfs_direct_write(struct kiocb *iocb, const struct iovec *iov,
 		goto out;
 
 	dreq->inode = inode;
+	dreq->bytes_left = count;
 	dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
 	dreq->l_ctx = nfs_get_lock_context(dreq->ctx);
 	if (dreq->l_ctx == NULL)
-- 
1.7.1.262.g5ef3d


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-08-14 11:22 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-13 14:39 [PATCH-v2 1/3] NFS: track direct IO left bytes Peng Tao
2012-08-13 14:39 ` [PATCH-v2 2/3] NFS41: send real write size in layoutget Peng Tao
2012-08-13 23:53   ` Boaz Harrosh
2012-08-14 10:05     ` Peng, Tao
2012-08-14  0:42   ` Myklebust, Trond
2012-08-14 10:08     ` Peng, Tao
2012-08-14 10:57     ` Boaz Harrosh
2012-08-14 11:21       ` Peng, Tao
2012-08-13 14:39 ` [PATCH-v2 3/3] NFS41: send real read " Peng Tao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).