On Thu, May 10, 2018 at 10:24:23AM -0600, Jens Axboe wrote: > From: Omar Sandoval <osandov@xxxxxx> > > The sbitmap queue wake batch is calculated such that once allocations > start blocking, all of the bits which are already allocated must be > enough to fulfill the batch counters of all of the waitqueues. However, > the shallow allocation depth can break this invariant, since we block > before our full depth is being utilized. Add > sbitmap_queue_min_shallow_depth(), which saves the minimum shallow depth > the sbq will use, and update sbq_calc_wake_batch() to take it into > account. > > Acked-by: Paolo Valente <paolo.valente@xxxxxxxxxx> > Signed-off-by: Omar Sandoval <osandov@xxxxxx> Reviewed -- haha, wait, thanks for picking this one up :) > Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> > --- > include/linux/sbitmap.h | 29 +++++++++++++++++++++++++++++ > lib/sbitmap.c | 49 ++++++++++++++++++++++++++++++++++++++++--------- > 2 files changed, 69 insertions(+), 9 deletions(-)