mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
blk-mq: add non_owner variant of start_freeze/unfreeze queue APIs
Add non_owner variant of start_freeze/unfreeze queue APIs, so that the caller knows that what they are doing, and we can skip lockdep support for non_owner variant in per-call level. Prepare for supporting lockdep for freezing/unfreezing queue. Reviewed-by: Christoph Hellwig <hch@lst.de> Suggested-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20241025003722.3630252-2-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e203e20a8b
commit
8acdd0e7bf
@ -196,6 +196,26 @@ void blk_mq_unfreeze_queue(struct request_queue *q)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue);
|
EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* non_owner variant of blk_freeze_queue_start
|
||||||
|
*
|
||||||
|
* Unlike blk_freeze_queue_start, the queue doesn't need to be unfrozen
|
||||||
|
* by the same task. This is fragile and should not be used if at all
|
||||||
|
* possible.
|
||||||
|
*/
|
||||||
|
void blk_freeze_queue_start_non_owner(struct request_queue *q)
|
||||||
|
{
|
||||||
|
blk_freeze_queue_start(q);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(blk_freeze_queue_start_non_owner);
|
||||||
|
|
||||||
|
/* non_owner variant of blk_mq_unfreeze_queue */
|
||||||
|
void blk_mq_unfreeze_queue_non_owner(struct request_queue *q)
|
||||||
|
{
|
||||||
|
__blk_mq_unfreeze_queue(q, false);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(blk_mq_unfreeze_queue_non_owner);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: replace the scsi_internal_device_*block_nowait() calls in the
|
* FIXME: replace the scsi_internal_device_*block_nowait() calls in the
|
||||||
* mpt3sas driver such that this function can be removed.
|
* mpt3sas driver such that this function can be removed.
|
||||||
|
@ -919,6 +919,8 @@ void blk_freeze_queue_start(struct request_queue *q);
|
|||||||
void blk_mq_freeze_queue_wait(struct request_queue *q);
|
void blk_mq_freeze_queue_wait(struct request_queue *q);
|
||||||
int blk_mq_freeze_queue_wait_timeout(struct request_queue *q,
|
int blk_mq_freeze_queue_wait_timeout(struct request_queue *q,
|
||||||
unsigned long timeout);
|
unsigned long timeout);
|
||||||
|
void blk_mq_unfreeze_queue_non_owner(struct request_queue *q);
|
||||||
|
void blk_freeze_queue_start_non_owner(struct request_queue *q);
|
||||||
|
|
||||||
void blk_mq_map_queues(struct blk_mq_queue_map *qmap);
|
void blk_mq_map_queues(struct blk_mq_queue_map *qmap);
|
||||||
void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues);
|
void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues);
|
||||||
|
Loading…
Reference in New Issue
Block a user