From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60117) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1StgEs-0004Pd-UZ for qemu-devel@nongnu.org; Tue, 24 Jul 2012 10:37:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1StgEk-0003Z1-T6 for qemu-devel@nongnu.org; Tue, 24 Jul 2012 10:37:30 -0400 Received: from paradis.irqsave.net ([109.190.18.76]:49773) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1StgEk-0003Yl-GM for qemu-devel@nongnu.org; Tue, 24 Jul 2012 10:37:22 -0400 Date: Tue, 24 Jul 2012 16:37:09 +0200 From: =?iso-8859-1?Q?Beno=EEt?= Canet Message-ID: <20120724143708.GA2371@irqsave.net> References: <1343053380-12133-1-git-send-email-benoit@irqsave.net> <1343053380-12133-2-git-send-email-benoit@irqsave.net> <20120723141501.735465ca@doriath.home> <20120724101039.GA2118@irqsave.net> <20120724095548.2bf348d8@doriath.home> <500EA327.7040107@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <500EA327.7040107@redhat.com> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH V4 1/3] block: Add bdrv_are_busy() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: =?iso-8859-1?Q?Beno=EEt?= Canet , Anthony Liguori , benoit.canet@gmail.com, stefanha@linux.vnet.ibm.com, stefanha@gmail.com, qemu-devel@nongnu.org, Luiz Capitulino , pbonzini@redhat.com Le Tuesday 24 Jul 2012 =E0 15:29:11 (+0200), Kevin Wolf a =E9crit : > Am 24.07.2012 14:55, schrieb Luiz Capitulino: > > On Tue, 24 Jul 2012 12:10:39 +0200 > > Beno=EEt Canet wrote: > >=20 > >> Le Monday 23 Jul 2012 =E0 14:15:01 (-0300), Luiz Capitulino a =E9cri= t : > >>> On Mon, 23 Jul 2012 16:22:58 +0200 > >>> benoit.canet@gmail.com wrote: > >>> > >>>> From: Beno=EEt Canet > >>>> > >>>> bdrv_are_busy will be used to check if any of the bs are in use > >>>> or if one of them have a running block job. > >>>> > >>>> The first user will be qmp_migrate(). > >>>> > >>>> Signed-off-by: Benoit Canet > >>>> --- > >>>> block.c | 13 +++++++++++++ > >>>> block.h | 2 ++ > >>>> 2 files changed, 15 insertions(+) > >>>> > >>>> diff --git a/block.c b/block.c > >>>> index ce7eb8f..bc8f160 100644 > >>>> --- a/block.c > >>>> +++ b/block.c > >>>> @@ -4027,6 +4027,19 @@ out: > >>>> return ret; > >>>> } > >>>> =20 > >>>> +int bdrv_are_busy(void) > >>>> +{ > >>>> + BlockDriverState *bs; > >>>> + > >>>> + QTAILQ_FOREACH(bs, &bdrv_states, list) { > >>>> + if (bs->job || bdrv_in_use(bs)) { > >>>> + return -EBUSY; > >>>> + } > >>>> + } > >>> > >>> IMO, this should return true/false. The name is a bit misleading to= o, as it > >>> gives the impression that are existing bdrvs are busy. I'd call it > >>> bdrv_any_busy() or bdrv_any_in_use(). > >> > >> Hello Anthony, > >> > >> Stefanha is in favor of returning -EBUSY and Luiz Capitulino would p= refer > >> the function to return a boolean. > >> Could you decide which option is the best ? > >=20 > > Stefan's opnion certainly has precedence over mine on block layer stu= ff, > > this was just an IMO. > >=20 > > Stefan, did you consider returning a boolean? >=20 > I'm with you in this point, Luiz (as well as with the rename to > bdrv_is_any_busy). And actually I think Beno=EEt may have misunderstood > and Stefan is as well. What he said is: >=20 > > I think bdrv_have_block_jobs() is too specific and would use > > bdrv_in_use(bs) here to give basically an EBUSY-type error. >=20 > I don't think this was about bool vs. -errno, but more about checking > only block jobs vs. all kinds of things that can have a block device in= use. >=20 > Anyway, I believe we came to the conclusion that even the intention of > the series is wrong, as in many cases migrating while an image is being > streamed is perfectly fine. So the details don't really matter any more= . >=20 Just to be sure. In case of a migration with shared storage the migration stops the stream= ing when the switch between vm is done. So starting a streaming after the begining of a migration is also right. Is that correct ? Beno=EEt