Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1678937

[PATCH 04/10] lightnvm: pblk: schedule if data is not ready

From "Javier González" <jg@lightnvm.io>
Newsgroups linux.kernel
Subject [PATCH 04/10] lightnvm: pblk: schedule if data is not ready
Date 2017-06-30 18:00 +0200
Message-ID <tY6uS-7l1-23@gated-at.bofh.it> (permalink)
References <tY6uS-7l1-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


When user threads place data into the write buffer, they reserve space
and do the memory copy out of the lock. As a consequence, when the write
thread starts persisting data, there is a chance that it is not copied
yet. In this case, avoid polling, and schedule before retrying.

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
---
 drivers/lightnvm/pblk-rb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/lightnvm/pblk-rb.c b/drivers/lightnvm/pblk-rb.c
index 665a4ccfe7f5..2dda874af890 100644
--- a/drivers/lightnvm/pblk-rb.c
+++ b/drivers/lightnvm/pblk-rb.c
@@ -578,8 +578,10 @@ unsigned int pblk_rb_read_to_bio(struct pblk_rb *rb, struct nvm_rq *rqd,
 		 */
 try:
 		flags = READ_ONCE(entry->w_ctx.flags);
-		if (!(flags & PBLK_WRITTEN_DATA))
+		if (!(flags & PBLK_WRITTEN_DATA)) {
+			io_schedule();
 			goto try;
+		}
 
 		page = virt_to_page(entry->data);
 		if (!page) {
-- 
2.7.4

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/10] lightnvm: pblk fixes for 4.13 "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 04/10] lightnvm: pblk: schedule if data is not ready "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 07/10] lightnvm: pblk: remove target using async. I/Os "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 06/10] lightnvm: pblk: use vmalloc for GC data buffer "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 09/10] lightnvm: pblk: verify that cache read is still valid "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 02/10] lightnvm: pblk: fix double-free on pblk init "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 03/10] lightnvm: pblk: remove unused return variable "Javier González" <jg@lightnvm.io> - 2017-06-30 18:00 +0200
  [PATCH 01/10] lightnvm: pblk: fix bad le64 assignations "Javier González" <jg@lightnvm.io> - 2017-06-30 18:10 +0200

csiph-web