block: add blk_start_queue_async()
We currently only have an inline/sync helper to restart a stopped queue. If drivers need an async version, they have to roll their own. Add a generic helper instead. Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
@@ -206,6 +206,22 @@ void blk_delay_queue(struct request_queue *q, unsigned long msecs)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_delay_queue);
|
EXPORT_SYMBOL(blk_delay_queue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blk_start_queue_async - asynchronously restart a previously stopped queue
|
||||||
|
* @q: The &struct request_queue in question
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* blk_start_queue_async() will clear the stop flag on the queue, and
|
||||||
|
* ensure that the request_fn for the queue is run from an async
|
||||||
|
* context.
|
||||||
|
**/
|
||||||
|
void blk_start_queue_async(struct request_queue *q)
|
||||||
|
{
|
||||||
|
queue_flag_clear(QUEUE_FLAG_STOPPED, q);
|
||||||
|
blk_run_queue_async(q);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(blk_start_queue_async);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* blk_start_queue - restart a previously stopped queue
|
* blk_start_queue - restart a previously stopped queue
|
||||||
* @q: The &struct request_queue in question
|
* @q: The &struct request_queue in question
|
||||||
|
|||||||
@@ -797,6 +797,7 @@ extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t,
|
|||||||
extern int blk_queue_enter(struct request_queue *q, gfp_t gfp);
|
extern int blk_queue_enter(struct request_queue *q, gfp_t gfp);
|
||||||
extern void blk_queue_exit(struct request_queue *q);
|
extern void blk_queue_exit(struct request_queue *q);
|
||||||
extern void blk_start_queue(struct request_queue *q);
|
extern void blk_start_queue(struct request_queue *q);
|
||||||
|
extern void blk_start_queue_async(struct request_queue *q);
|
||||||
extern void blk_stop_queue(struct request_queue *q);
|
extern void blk_stop_queue(struct request_queue *q);
|
||||||
extern void blk_sync_queue(struct request_queue *q);
|
extern void blk_sync_queue(struct request_queue *q);
|
||||||
extern void __blk_stop_queue(struct request_queue *q);
|
extern void __blk_stop_queue(struct request_queue *q);
|
||||||
|
|||||||
Reference in New Issue
Block a user