ctx->num_reading.dec();
dout(20) << __func__ << " read op successfully" << dendl;
if (nvme_completion_is_error(completion))
- task->read_code = -1; // FIXME
+ task->return_code = -1; // FIXME
else
- task->read_code = 0;
+ task->return_code = 0;
Mutex::Locker l(ctx->lock);
ctx->cond.Signal();
}
derr << __func__ << " failed to do write command" << dendl;
assert(0);
}
- t = t->next;
+ t = t->prev;
}
break;
}
if (r < 0) {
derr << __func__ << " failed to read" << dendl;
t->ctx->num_reading.dec();
- t->read_code = r;
+ t->return_code = r;
Mutex::Locker l(t->ctx->lock);
t->ctx->cond.Signal();
}
t->offset = off;
t->len = len;
t->device = this;
- if (ioc->backend_priv) {
- Task *prev = static_cast<Task*>(ioc->backend_priv);
+ Task *prev = static_cast<Task*>(ioc->backend_priv);
+ t->prev = prev;
+ if (prev)
prev->next = t;
- } else {
- ioc->backend_priv = t;
- }
+ ioc->backend_priv = t;
t->next = nullptr;
ioc->num_pending.inc();
t->offset = off;
t->len = len;
t->device = this;
- t->read_code = 1;
+ t->return_code = 1;
assert(!ioc->backend_priv);
ioc->num_reading.inc();;
{
{
Mutex::Locker l(ioc->lock);
- while (t->read_code > 0)
+ while (t->return_code > 0)
ioc->cond.Wait(ioc->lock);
}
memcpy(p.c_str(), t->buf, len);
pbl->clear();
pbl->push_back(p);
- r = t->read_code;
+ r = t->return_code;
rte_free(t->buf);
out: