mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-06 22:58:29 +00:00
lightnvm: pblk: schedule if data is not ready
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> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
653cbb8472
commit
1088812978
1 changed files with 3 additions and 1 deletions
|
@ -578,8 +578,10 @@ unsigned int pblk_rb_read_to_bio(struct pblk_rb *rb, struct nvm_rq *rqd,
|
||||||
*/
|
*/
|
||||||
try:
|
try:
|
||||||
flags = READ_ONCE(entry->w_ctx.flags);
|
flags = READ_ONCE(entry->w_ctx.flags);
|
||||||
if (!(flags & PBLK_WRITTEN_DATA))
|
if (!(flags & PBLK_WRITTEN_DATA)) {
|
||||||
|
io_schedule();
|
||||||
goto try;
|
goto try;
|
||||||
|
}
|
||||||
|
|
||||||
page = virt_to_page(entry->data);
|
page = virt_to_page(entry->data);
|
||||||
if (!page) {
|
if (!page) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue