diff mbox series

[3/5] rq-qos: don't reset has_sleepers on spurious wakeups

Message ID 20190716201929.79142-4-josef@toxicpanda.com
State New, archived
Headers show
Series rq-qos memory barrier shenanigans | expand

Commit Message

Josef Bacik July 16, 2019, 8:19 p.m. UTC
If we raced with somebody else getting an inflight counter we could fail
to get an inflight counter with no sleepers on the list, and thus need
to go to sleep.  In this case has_sleepers should be true because we are
now relying on the waker to get our inflight counter for us.  And in the
case of spurious wakeups we'd still want this to be the case.  So set
has_sleepers to true if we went to sleep to make sure we're woken up the
proper way.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
 block/blk-rq-qos.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox series


diff --git a/block/blk-rq-qos.c b/block/blk-rq-qos.c
index 67a0a4c07060..69a0f0b77795 100644
--- a/block/blk-rq-qos.c
+++ b/block/blk-rq-qos.c
@@ -261,7 +261,7 @@  void rq_qos_wait(struct rq_wait *rqw, void *private_data,
-		has_sleeper = false;
+		has_sleeper = true;
 	} while (1);
 	finish_wait(&rqw->wait, &data.wq);