[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] xen-blkfront: introduce blkif_set_queue_limits()
On Fri, Jul 15, 2016 at 05:31:48PM +0800, Bob Liu wrote: > blk_mq_update_nr_hw_queues() reset all queue limits to default which it's not > as xen-blkfront expected, introducing blkif_set_queue_limits() to reset limits > with initial correct values. Hm, great, and as usual in Linux there isn't even a comment in the function that explains what it is supposed to do, or what are the side-effects of calling blk_mq_update_nr_hw_queues. > Signed-off-by: Bob Liu <bob.liu@xxxxxxxxxx> > > drivers/block/xen-blkfront.c | 91 > ++++++++++++++++++++++++-------------------- > 1 file changed, 50 insertions(+), 41 deletions(-) > > diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c > index 032fc94..10f46a8 100644 > --- a/drivers/block/xen-blkfront.c > +++ b/drivers/block/xen-blkfront.c > @@ -189,6 +189,8 @@ struct blkfront_info > struct mutex mutex; > struct xenbus_device *xbdev; > struct gendisk *gd; > + u16 sector_size; > + unsigned int physical_sector_size; > int vdevice; > blkif_vdev_t handle; > enum blkif_state connected; > @@ -913,9 +915,45 @@ static struct blk_mq_ops blkfront_mq_ops = { > .map_queue = blk_mq_map_queue, > }; > > +static void blkif_set_queue_limits(struct blkfront_info *info) > +{ > + struct request_queue *rq = info->rq; > + struct gendisk *gd = info->gd; > + unsigned int segments = info->max_indirect_segments ? : > + BLKIF_MAX_SEGMENTS_PER_REQUEST; > + > + queue_flag_set_unlocked(QUEUE_FLAG_VIRT, rq); > + > + if (info->feature_discard) { > + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, rq); > + blk_queue_max_discard_sectors(rq, get_capacity(gd)); > + rq->limits.discard_granularity = info->discard_granularity; > + rq->limits.discard_alignment = info->discard_alignment; > + if (info->feature_secdiscard) > + queue_flag_set_unlocked(QUEUE_FLAG_SECDISCARD, rq); > + } AFAICT, at the point this function is called (in blkfront_resume), the value of info->feature_discard is still from the old backend, maybe this should be called from blkif_recover after blkfront_gather_backend_features? Roger. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |