diff --git a/src/blockstore_impl.cpp b/src/blockstore_impl.cpp index 24329944..f1e96e40 100644 --- a/src/blockstore_impl.cpp +++ b/src/blockstore_impl.cpp @@ -142,7 +142,6 @@ void blockstore_impl_t::loop() continue; } } - unsigned ring_space = ringloop->space_left(); unsigned prev_sqe_pos = ringloop->save(); // 0 = can't submit // 1 = in progress @@ -212,7 +211,6 @@ void blockstore_impl_t::loop() ringloop->restore(prev_sqe_pos); if (PRIV(op)->wait_for == WAIT_SQE) { - PRIV(op)->wait_detail = 1 + ring_space; // ring is full, stop submission break; } @@ -282,7 +280,7 @@ void blockstore_impl_t::check_wait(blockstore_op_t *op) { if (PRIV(op)->wait_for == WAIT_SQE) { - if (ringloop->space_left() < PRIV(op)->wait_detail) + if (ringloop->sqes_left() < PRIV(op)->wait_detail) { // stop submission if there's still no free space #ifdef BLOCKSTORE_DEBUG diff --git a/src/blockstore_impl.h b/src/blockstore_impl.h index 037636e1..e77933c6 100644 --- a/src/blockstore_impl.h +++ b/src/blockstore_impl.h @@ -58,6 +58,7 @@ if (ringloop->sqes_left() < (n))\ {\ /* Pause until there are more requests available */\ + PRIV(op)->wait_detail = (n);\ PRIV(op)->wait_for = WAIT_SQE;\ return 0;\ } @@ -71,6 +72,7 @@ if (!sqe)\ {\ /* Pause until there are more requests available */\ + PRIV(op)->wait_detail = 1;\ PRIV(op)->wait_for = WAIT_SQE;\ return 0;\ } @@ -80,6 +82,7 @@ if (!sqe)\ {\ /* Pause until there are more requests available */\ + PRIV(op)->wait_detail = 1;\ PRIV(op)->wait_for = WAIT_SQE;\ return 0;\ }