From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46282) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBH7Q-0000ou-CP for qemu-devel@nongnu.org; Mon, 10 Sep 2012 23:26:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TBH7P-0002lh-AO for qemu-devel@nongnu.org; Mon, 10 Sep 2012 23:26:32 -0400 Received: from e28smtp04.in.ibm.com ([122.248.162.4]:46596) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBH7O-0002lA-N0 for qemu-devel@nongnu.org; Mon, 10 Sep 2012 23:26:31 -0400 Received: from /spool/local by e28smtp04.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 11 Sep 2012 08:56:27 +0530 Received: from d28av02.in.ibm.com (d28av02.in.ibm.com [9.184.220.64]) by d28relay03.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q8B3QOTl40501388 for ; Tue, 11 Sep 2012 08:56:25 +0530 Received: from d28av02.in.ibm.com (loopback [127.0.0.1]) by d28av02.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q8B3QNM7008077 for ; Tue, 11 Sep 2012 13:26:24 +1000 Message-ID: <504EAF55.7020802@linux.vnet.ibm.com> Date: Tue, 11 Sep 2012 11:26:13 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1347265586-17698-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1347265586-17698-3-git-send-email-xiawenc@linux.vnet.ibm.com> <504E5B34.1000604@redhat.com> In-Reply-To: <504E5B34.1000604@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH V2 2/6] libqblock type and structure defines List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: kwolf@redhat.com, aliguori@us.ibm.com, stefanha@gmail.com, qemu-devel@nongnu.org, blauwirbel@gmail.com, pbonzini@redhat.com 于 2012-9-11 5:27, Eric Blake 写道: > On 09/10/2012 02:26 AM, Wenchao Xia wrote: >> This patch contains type and defines used in APIs, one file for public usage >> by user, one for libqblock internal usage. >> >> Signed-off-by: Wenchao Xia >> --- >> libqblock/libqblock-internal.h | 50 ++++++++ >> libqblock/libqblock-types.h | 251 ++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 301 insertions(+), 0 deletions(-) >> create mode 100644 libqblock/libqblock-internal.h >> create mode 100644 libqblock/libqblock-types.h >> > > As mentioned in 1/6, this should come earlier in the series, as it lays > the fundamentals used by other new files. > OK. >> diff --git a/libqblock/libqblock-internal.h b/libqblock/libqblock-internal.h >> new file mode 100644 >> index 0000000..fa27ed4 >> --- /dev/null >> +++ b/libqblock/libqblock-internal.h >> @@ -0,0 +1,50 @@ > >> + >> +#define QB_ERR_STRING_SIZE (1024) >> +struct QBroker { >> + /* last error */ >> + char err_msg[QB_ERR_STRING_SIZE]; > > Is this fixed-width struct going to bite us in the future? Suppose I > pass in a file name that is already 1000 bytes long; it seems like I > might be able to get you to overflow this buffer if your error message > includes the name of my offending file. > Yes it will, thanks for mention me. The resource will always have a limit, I guess I can just increase the size to 4k to solve the issue. >> +++ b/libqblock/libqblock-types.h >> +/* this library is designed around this core struct. */ >> +struct QBlockState; >> + >> +/* every thread would have a broker. */ > > s/would/should/ > OK. >> + >> +/** >> + * QBlockStaticInfo: information about the block image. >> + * >> + * @loc: location info. >> + * @fmt_type: format type. >> + * @virt_size: virtual size in bytes. >> + * @backing_loc: backing file location, its type is QB_PROT_NONE if not exist. >> + * @encrypt: encrypt flag. >> + * @sector_size: how many bytes in a sector, it is 512 usually. >> + */ >> +struct QBlockStaticInfo { >> + struct QBlockProtInfo loc; >> + enum QBlockFmtType fmt_type; >> + uint64_t virt_size; >> + /* advance info */ >> + struct QBlockProtInfo backing_loc; >> + bool encrypt; >> + int sector_size; >> +}; > > No reserved space for potential growth in this structure? > It could have or not. If new members are added in the tail, then reserved bytes is not needed, for that this structure's instance will be allocated in libqblock API. -- Best Regards Wenchao Xia