From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60035) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vr2gW-0002h1-UF for qemu-devel@nongnu.org; Thu, 12 Dec 2013 04:35:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vr2gV-0007IE-PI for qemu-devel@nongnu.org; Thu, 12 Dec 2013 04:35:56 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51702) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vr2gV-0007I6-Fj for qemu-devel@nongnu.org; Thu, 12 Dec 2013 04:35:55 -0500 Date: Thu, 12 Dec 2013 10:35:45 +0100 From: Kevin Wolf Message-ID: <20131212093545.GE10007@dhcp-200-207.str.redhat.com> References: <1386796109-15264-1-git-send-email-kwolf@redhat.com> <1386796109-15264-2-git-send-email-kwolf@redhat.com> <52A954FB.7090603@kamp.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52A954FB.7090603@kamp.de> Subject: Re: [Qemu-devel] [PATCH 01/22] block: Move initialisation of BlockLimits to bdrv_refresh_limits() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com Am 12.12.2013 um 07:17 hat Peter Lieven geschrieben: > Am 11.12.2013 22:08, schrieb Kevin Wolf: > > This function separates filling the BlockLimits from bdrv_open(), which > > allows it to call it from other operations which may change the limits > > (e.g. modifications to the backing file chain or bdrv_reopen) > > > > Signed-off-by: Kevin Wolf > > +static int iscsi_refresh_limits(BlockDriverState *bs) > > +{ > > + IscsiLun *iscsilun = bs->opaque; > > + struct scsi_task *task = NULL; > > + int ret; > > + > > + memset(&bs->bl, 0, sizeof(bs->bl)); > > + > you do that memset in bdrv_refresh_limits already. Right, I'll drop it here. > > if (iscsilun->lbp.lbpu || iscsilun->lbp.lbpws) { > > struct scsi_inquiry_block_limits *inq_bl; > > task = iscsi_do_inquiry(iscsilun->iscsi, iscsilun->lun, 1, > > @@ -1462,48 +1512,14 @@ static int iscsi_open(BlockDriverState *bs, QDict *options, int flags, > > iscsi_do_inquiry does a sync call to request the pages from the target. > you can only do that here if you can guarantee that iscsi_refresh_limits will > be called with no pending requests in-flight otherwise this will end in a mess. > > otherwise i would propose to leave the inquiry call ins iscsi_open and just fill > the bs->bl struc tin iscsi_refresh_limits. the problem is if we make this async > we have to handle all possible I/O callbacks whiile in iscsi_refresh_limits. > i do not see how an iscsi target can change its limits while a target is mounted. Yes, I'll just split the block in two, leaving the actual request in iscsi_open(). Thanks for your review. Kevin