mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 11:16:11 +00:00
block: add a blk_plug_device_unlocked() that grabs the queue lock
blk_plug_device() must be called with the queue lock held, so callers often just grab and release the lock for that purpose. Add a helper that does just that. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
94ad374a07
commit
6c5e0c4d51
2 changed files with 19 additions and 0 deletions
|
@ -212,6 +212,24 @@ void blk_plug_device(struct request_queue *q)
|
|||
}
|
||||
EXPORT_SYMBOL(blk_plug_device);
|
||||
|
||||
/**
|
||||
* blk_plug_device_unlocked - plug a device without queue lock held
|
||||
* @q: The &struct request_queue to plug
|
||||
*
|
||||
* Description:
|
||||
* Like @blk_plug_device(), but grabs the queue lock and disables
|
||||
* interrupts.
|
||||
**/
|
||||
void blk_plug_device_unlocked(struct request_queue *q)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(q->queue_lock, flags);
|
||||
blk_plug_device(q);
|
||||
spin_unlock_irqrestore(q->queue_lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(blk_plug_device_unlocked);
|
||||
|
||||
/*
|
||||
* remove the queue from the plugged list, if present. called with
|
||||
* queue lock held and interrupts disabled.
|
||||
|
|
|
@ -655,6 +655,7 @@ extern struct request *blk_get_request(struct request_queue *, int, gfp_t);
|
|||
extern void blk_insert_request(struct request_queue *, struct request *, int, void *);
|
||||
extern void blk_requeue_request(struct request_queue *, struct request *);
|
||||
extern void blk_plug_device(struct request_queue *);
|
||||
extern void blk_plug_device_unlocked(struct request_queue *);
|
||||
extern int blk_remove_plug(struct request_queue *);
|
||||
extern void blk_recount_segments(struct request_queue *, struct bio *);
|
||||
extern int scsi_cmd_ioctl(struct file *, struct request_queue *,
|
||||
|
|
Loading…
Reference in a new issue