From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751914AbcGUJq0 (ORCPT ); Thu, 21 Jul 2016 05:46:26 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:22624 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751126AbcGUJqY (ORCPT ); Thu, 21 Jul 2016 05:46:24 -0400 Message-ID: <57909985.9070505@oracle.com> Date: Thu, 21 Jul 2016 17:44:37 +0800 From: Bob Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4 MIME-Version: 1.0 To: =?ISO-8859-1?Q?Roger_Pau_Monn=E9?= CC: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, konrad.wilk@oracle.com, jgross@suse.com Subject: Re: [PATCH 2/3] xen-blkfront: introduce blkif_set_queue_limits() References: <1468575109-12209-1-git-send-email-bob.liu@oracle.com> <1468575109-12209-2-git-send-email-bob.liu@oracle.com> <20160721082913.ahsy5a63ymfoymqv@mac> In-Reply-To: <20160721082913.ahsy5a63ymfoymqv@mac> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Source-IP: aserv0021.oracle.com [141.146.126.233] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/21/2016 04:29 PM, Roger Pau Monné wrote: > 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 >> >> 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? > Thank you for pointing out, will be fixed. -- Regards, -Bob