[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RESEND PATCH] xen/blkfront: convert to blk-mq APIs
On 07/11/2015 03:57 AM, Konrad Rzeszutek Wilk wrote: > On Mon, Jul 06, 2015 at 05:56:48PM +0800, Bob Liu wrote: >> From: Arianna Avanzini <avanzini.arianna@xxxxxxxxx> >> >> This patch converts xen-blkfront driver to use the block multiqueue APIs. >> Only one hardware queue is used now, so there is no performance change. >> >> The legacy non-mq code was deleted completely which is the same as other >> drivers >> like virtio, mtip, and nvme. >> >> Also dropped unnecessary holding of info->io_lock when calling into blk-mq >> APIs. > > Yeey! > > Two points: > > - The io_lock is now used to guard against concurrent access to the ring. > We should rename it to 'ring_lock'. > Sure. > - The kick_pending_request_queues should have an extra argument - 'bool > locked'. > This is so that you don't drop and immediately grab the lock from the > blkif_interrupt. > Then where to drop the lock? In kick_pending_request_queues(), the lock have to be dropped before calling blk_mq_start_stopped_hw_queues(). static void kick_pending_request_queues(struct blkfront_info *info) { + unsigned long flags; + + spin_lock_irqsave(&info->io_lock, flags); if (!RING_FULL(&info->ring)) { - /* Re-enable calldowns. */ - blk_start_queue(info->rq); - /* Kick things off immediately. */ - do_blkif_request(info->rq); + spin_unlock_irqrestore(&info->io_lock, flags); + blk_mq_start_stopped_hw_queues(info->rq, true); + return; } > See: > >> @@ -1243,9 +1243,8 @@ static irqreturn_t blkif_interrupt(int irq, void >> *dev_id) >> } else >> info->ring.sring->rsp_event = i + 1; >> >> - kick_pending_request_queues(info); >> - >> spin_unlock_irqrestore(&info->io_lock, flags); >> + kick_pending_request_queues(info); >> >> return IRQ_HANDLED; >> } > > Otherwise Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > -- Regards, -Bob _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |