Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1678937
| 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 |
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
[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