Linus Torvalds writes: (Summary)
In the page bit-wait queues, we actually did this change
_intentionally_ a few months ago (see commits
_intentionally_ a few months ago (see commits
3510ca20ece0 Minor page waitqueue cleanups
9c3a815f471a page waitqueue: always add new entries at the end 9c3a815f471a page waitqueue: always add new entries at the end but there it was intentional: an exclusive waiter on the bit wait-queues is going to acquire the bit lock, which in turn means that they'll eventually release the bit lock and then wake up any subsequent non-exclusive waiters, so the non-exclusive ones _will_ get woken up eventually (and in a fair order).
woken up eventually (and in a fair order).
Sadly, when it comes to wait-queues in general, we don't have those kinds of guarantees.
_intentionally_ a few months ago (see commits
3510ca20ece0 Minor page waitqueue cleanups
9c3a815f471a page waitqueue: always add new entries at the end 9c3a815f471a page waitqueue: always add new entries at the end but there it was intentional: an exclusive waiter on the bit wait-queues is going to acquire the bit lock, which in turn means that they'll eventually release the bit lock and then wake up any subsequent non-exclusive waiters, so the non-exclusive ones _will_ get woken up eventually (and in a fair order).
woken up eventually (and in a fair order).
Sadly, when it comes to wait-queues in general, we don't have those kinds of guarantees.