From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TRdZN-0007HG-OQ for qemu-devel@nongnu.org; Fri, 26 Oct 2012 02:39:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TRdZM-0004n9-C3 for qemu-devel@nongnu.org; Fri, 26 Oct 2012 02:39:01 -0400 Received: from e23smtp04.au.ibm.com ([202.81.31.146]:60833) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TRdZL-0004iP-JV for qemu-devel@nongnu.org; Fri, 26 Oct 2012 02:39:00 -0400 Received: from /spool/local by e23smtp04.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 26 Oct 2012 16:34:36 +1000 Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q9Q6SW7n63307776 for ; Fri, 26 Oct 2012 17:28:35 +1100 Received: from d23av02.au.ibm.com (loopback [127.0.0.1]) by d23av02.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q9Q6cfKP014081 for ; Fri, 26 Oct 2012 17:38:41 +1100 Message-ID: <508A2FBD.1000601@linux.vnet.ibm.com> Date: Fri, 26 Oct 2012 14:37:49 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1350270787-24200-1-git-send-email-xiawenc@linux.vnet.ibm.com> In-Reply-To: <1350270787-24200-1-git-send-email-xiawenc@linux.vnet.ibm.com> Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH V8 0/4] libqblock qemu block layer library List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, aliguori@us.ibm.com, stefanha@gmail.com, qemu-devel@nongnu.org, blauwirbel@gmail.com, pbonzini@redhat.com Hi, Kevin Could u take a look at this patch to see if anything need to be improved, many thanks. > These patches introduce libqblock API, make libqblock.la and make > check-libqblock could build this library. > Functionalities: > 1 create a new image. > 2 sync access of an image. > 3 basic image information retrieving such as backing file. > 4 detect if a sector is allocated in an image. > Supported Formats: > ALL using file protocols. > > v2: > Insert reserved bytes into union. > Use uint64_t instead of size_t, offset. > Use const char * in filename pointer. > Initialization function removed and it was automatically executed when > library is loaded. > Added compile flag visibility=hidden, to avoid name space pollution. > Structure naming style changed. > Using byte unit instead of sector for every API. > Added a member in image static information structure, to report logical > sector size, which is always 512 now. > Read and write API can take request not aligned to 512 now. It returns the > byte number that have succeed in operation, but now either negative value > or the number requested would be returned, because qemu block sync I/O API > would not return such number. > Typo fix due to comments and improved documents. > > v3: > Removed the code about OOM error, introduced GError. > Used a table to map from string to enum types about format. > Use typedef for every structure. > Improved the gcc compiler macro to warn if gcc was not used. > Global variable name changed with prefix libqb_. > The struct QBlockStaticInfo was changed to folder full format related > information inside, and a new member with pointers pointing to the mostly used > members, such as backing file, virt size, was added. This would allow the user > to get full information about how it is created in the future. > Each patch in the serial can work with qemu now. > Typo fixes. > > v4: > Renamed QBroker to QBlockContext. > Removed tool objs out of libqblock. > Added a check in initialization about structure size for ABI. > Added a new helper API to duplicate protocol information, helps to open files > in a backing file chain. > Check-libqblock will not rebuild libqblock every time now. > Test case file renamed to "libqblock-[FMT].c". > Test use gtest framework now. > Test do random creation of test file now, added check for information API in > it. > Test do random sync io instead of fixed offset io now. > Test accept one parameter about where to place the test image, now it is > ./tests/libqblock/test_images. > > v5: > Makefile of libqblock was adjusted to be similar as libcacard, added spec > file and install section. > Removed warning when GCC was not found. > Structure names were changed to better ones. > Removed the union typedef that contain reserved bytes to reduce the folder > depth. > Some format related enum options was changed to better name. > Added accessors about image static information, hide indirect accessing > member detail in the structure. > Test Makefile do not create diretory now, test case create it themself. > Test build system do not use libtool now, and removed qtest-obj-y in its > dependency, make check will automatically execute test anyway now. > Removed "ifeq ($(LIBTOOL),)" in Makefile. > > v6: > Remove address pointer member in image static info structure. > > v7: > Support out of tree building. > > v8: > Fix a bug in out of tree building. > > Wenchao Xia (4): > libqblock build system > libqblock type defines > libqblock API > libqblock test example > > .gitignore | 2 + > Makefile | 14 +- > block.c | 2 +- > block.h | 1 + > configure | 4 +- > libqblock/Makefile | 72 +++ > libqblock/libqblock-error.c | 57 ++ > libqblock/libqblock-error.h | 49 ++ > libqblock/libqblock-internal.h | 75 +++ > libqblock/libqblock-types.h | 252 ++++++++ > libqblock/libqblock.c | 1191 +++++++++++++++++++++++++++++++++++++ > libqblock/libqblock.h | 341 +++++++++++ > libqblock/libqblock.pc.in | 13 + > tests/Makefile | 36 ++- > tests/libqblock/libqblock-qcow2.c | 392 ++++++++++++ > 15 files changed, 2496 insertions(+), 5 deletions(-) > create mode 100644 libqblock/Makefile > create mode 100644 libqblock/libqblock-error.c > create mode 100644 libqblock/libqblock-error.h > create mode 100644 libqblock/libqblock-internal.h > create mode 100644 libqblock/libqblock-types.h > create mode 100644 libqblock/libqblock.c > create mode 100644 libqblock/libqblock.h > create mode 100644 libqblock/libqblock.pc.in > create mode 100644 tests/libqblock/libqblock-qcow2.c > > -- Best Regards Wenchao Xia