On 10/28/22 00:55, Jens Axboe wrote:
On 10/27/22 5:27 PM, Jens Axboe wrote:
On 10/27/22 4:14 PM, Pavel Begunkov wrote:
There are ways to deprive bioset mempool of requests using pcpu caches
and never return them back, which breaks forward progress guarantees bioset
tried to provide. Fix it.
Pavel Begunkov (2):
mempool: introduce mempool_is_saturated
bio: don't rob bios from starving bioset
block/bio.c | 2 ++
include/linux/mempool.h | 5 +++++
2 files changed, 7 insertions(+)
This isn't really a concern for 6.1 and earlier, because the caching is
just for polled IO. Polled IO will not be grabbing any of the reserved
inflight units on the mempool side, which is what guarantees the forward
progress.
And after looking it up, apparently it can allocate from reserves.
It'll be a concern for the 6.2 irq based general caching, so it would
need to be handled there. So perhaps this can be a pre-series for a
reposting of that patchset.
Just a followup, since we had some out-of-band discussion. This is
a potential concern on the bio side, though not on the request side.
But this approach is racy, we'll figure something else out.
I agree that it _may_ be, but I can't think of an counter example
for arches w/ strong ordering and would need to think more if there
is an issue in the looser ephemeral world.
--
Pavel Begunkov