sbitmap.c (678418c6128f112fc5584beb5cdd21fbc225badf) sbitmap.c (b5fcf7871acb7f9a3a8ed341a68bd86aba3e254a)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2016 Facebook
4 * Copyright (C) 2013-2014 Jens Axboe
5 */
6
7#include <linux/sched.h>
8#include <linux/random.h>

--- 443 unchanged lines hidden (view full) ---

452 if (sbq->wake_batch != wake_batch)
453 WRITE_ONCE(sbq->wake_batch, wake_batch);
454}
455
456void sbitmap_queue_recalculate_wake_batch(struct sbitmap_queue *sbq,
457 unsigned int users)
458{
459 unsigned int wake_batch;
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2016 Facebook
4 * Copyright (C) 2013-2014 Jens Axboe
5 */
6
7#include <linux/sched.h>
8#include <linux/random.h>

--- 443 unchanged lines hidden (view full) ---

452 if (sbq->wake_batch != wake_batch)
453 WRITE_ONCE(sbq->wake_batch, wake_batch);
454}
455
456void sbitmap_queue_recalculate_wake_batch(struct sbitmap_queue *sbq,
457 unsigned int users)
458{
459 unsigned int wake_batch;
460 unsigned int min_batch;
461 unsigned int depth = (sbq->sb.depth + users - 1) / users;
462
460 unsigned int depth = (sbq->sb.depth + users - 1) / users;
461
463 min_batch = sbq->sb.depth >= (4 * SBQ_WAIT_QUEUES) ? 4 : 1;
464
465 wake_batch = clamp_val(depth / SBQ_WAIT_QUEUES,
462 wake_batch = clamp_val(depth / SBQ_WAIT_QUEUES,
466 min_batch, SBQ_WAKE_BATCH);
463 1, SBQ_WAKE_BATCH);
467
468 WRITE_ONCE(sbq->wake_batch, wake_batch);
469}
470EXPORT_SYMBOL_GPL(sbitmap_queue_recalculate_wake_batch);
471
472void sbitmap_queue_resize(struct sbitmap_queue *sbq, unsigned int depth)
473{
474 sbitmap_queue_update_wake_batch(sbq, depth);

--- 299 unchanged lines hidden ---
464
465 WRITE_ONCE(sbq->wake_batch, wake_batch);
466}
467EXPORT_SYMBOL_GPL(sbitmap_queue_recalculate_wake_batch);
468
469void sbitmap_queue_resize(struct sbitmap_queue *sbq, unsigned int depth)
470{
471 sbitmap_queue_update_wake_batch(sbq, depth);

--- 299 unchanged lines hidden ---