Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: md: the bitmap code needs to use blk_plug_device_unlocked() block: add a blk_plug_device_unlocked() that grabs the queue lock
This commit is contained in:
commit
b17b3d479c
|
@ -212,6 +212,24 @@ void blk_plug_device(struct request_queue *q)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_plug_device);
|
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
|
* remove the queue from the plugged list, if present. called with
|
||||||
* queue lock held and interrupts disabled.
|
* queue lock held and interrupts disabled.
|
||||||
|
|
|
@ -1234,7 +1234,7 @@ int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, unsigned long sect
|
||||||
case 0:
|
case 0:
|
||||||
bitmap_file_set_bit(bitmap, offset);
|
bitmap_file_set_bit(bitmap, offset);
|
||||||
bitmap_count_page(bitmap,offset, 1);
|
bitmap_count_page(bitmap,offset, 1);
|
||||||
blk_plug_device(bitmap->mddev->queue);
|
blk_plug_device_unlocked(bitmap->mddev->queue);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case 1:
|
case 1:
|
||||||
*bmc = 2;
|
*bmc = 2;
|
||||||
|
|
|
@ -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_insert_request(struct request_queue *, struct request *, int, void *);
|
||||||
extern void blk_requeue_request(struct request_queue *, struct request *);
|
extern void blk_requeue_request(struct request_queue *, struct request *);
|
||||||
extern void blk_plug_device(struct request_queue *);
|
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 int blk_remove_plug(struct request_queue *);
|
||||||
extern void blk_recount_segments(struct request_queue *, struct bio *);
|
extern void blk_recount_segments(struct request_queue *, struct bio *);
|
||||||
extern int scsi_cmd_ioctl(struct file *, struct request_queue *,
|
extern int scsi_cmd_ioctl(struct file *, struct request_queue *,
|
||||||
|
|
Loading…
Reference in New Issue