From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50475) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e03WR-0008C2-RY for qemu-devel@nongnu.org; Thu, 05 Oct 2017 06:36:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e03WQ-0006gR-VS for qemu-devel@nongnu.org; Thu, 05 Oct 2017 06:36:55 -0400 References: <20170925135801.144261-1-vsementsov@virtuozzo.com> <20170925135801.144261-9-vsementsov@virtuozzo.com> <9c3e29b4-3ec9-4fd7-3d80-122f908d059f@virtuozzo.com> From: Paolo Bonzini Message-ID: Date: Thu, 5 Oct 2017 12:36:36 +0200 MIME-Version: 1.0 In-Reply-To: <9c3e29b4-3ec9-4fd7-3d80-122f908d059f@virtuozzo.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [Qemu-block] [PATCH 8/8] nbd: Minimal structured read for client List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladimir Sementsov-Ogievskiy , Eric Blake , qemu-devel@nongnu.org, qemu-block@nongnu.org Cc: kwolf@redhat.com, den@openvz.org, mreitz@redhat.com On 05/10/2017 12:02, Vladimir Sementsov-Ogievskiy wrote: > 03.10.2017 17:06, Paolo Bonzini wrote: >> On 03/10/2017 15:35, Vladimir Sementsov-Ogievskiy wrote: >>>>> In the end this probably means that you have a read_chunk_header >>>>> function and a read_chunk function.=C2=A0 READ has a loop that call= s >>>>> read_chunk_header followed by direct reading into the QEMUIOVector, >>>>> while everyone else calls read_chunk. >>>> accordingly to spec, we can receive several error reply chunks to an= y >>>> request, >>>> so loop, receiving them should be common for all requests I think >>> as well as handling error chunks should be common.. >> Yes, reading error chunks should be part of read_chunk_header. >> >> Paolo >=20 > So, you want a loop in READ, and separate loop for other commands? Then > we will have separate loop for BLOCK_STATUS and for all future commands > with specific replies? There should be a separate loop for each command. The only difference between READ and other commands is that READ receives directly in QEMUIOVector, while other commands can use a common function to to receive each structured reply chunk into malloc-ed memory. Paolo