From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThYsZ-0002A4-Ln for qemu-devel@nongnu.org; Sat, 08 Dec 2012 23:52:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ThYsY-0001Ox-7x for qemu-devel@nongnu.org; Sat, 08 Dec 2012 23:52:39 -0500 Received: from e28smtp03.in.ibm.com ([122.248.162.3]:50567) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThYsX-0001Ok-ES for qemu-devel@nongnu.org; Sat, 08 Dec 2012 23:52:38 -0500 Received: from /spool/local by e28smtp03.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sun, 9 Dec 2012 10:22:17 +0530 Received: from d28relay01.in.ibm.com (d28relay01.in.ibm.com [9.184.220.58]) by d28dlp02.in.ibm.com (Postfix) with ESMTP id 39A1B394004C for ; Sun, 9 Dec 2012 10:22:29 +0530 (IST) Received: from d28av01.in.ibm.com (d28av01.in.ibm.com [9.184.220.63]) by d28relay01.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id qB94qRoB31850610 for ; Sun, 9 Dec 2012 10:22:27 +0530 Received: from d28av01.in.ibm.com (loopback [127.0.0.1]) by d28av01.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id qB94qSdx022486 for ; Sun, 9 Dec 2012 04:52:28 GMT Message-ID: <50C418F3.8010900@linux.vnet.ibm.com> Date: Sun, 09 Dec 2012 12:52:03 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1354256243-8375-1-git-send-email-xiawenc@linux.vnet.ibm.com> In-Reply-To: <1354256243-8375-1-git-send-email-xiawenc@linux.vnet.ibm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v13 0/7] libqblock qemu block layer library List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org Hi, Paolo Do you think this version still needs more improvement? > These patches introduce libqblock API, make subdir-libqblock 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. > > Patch 1 to 3 prepares qemu to accept libqblock. > > 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. > > v9: > Rebase and splitted out small fix patch for qemu. > > v10: > Rebased to upstream, adjusted libqblock build system according to Paolo's > comments. > > v11: > Adjusting code in patch 4 to 7, details are in the child patch's commit > message. > > v12: > Split a patch to add a function in stubs, other change are in patch 4 to 7 > commit messages. > > v13: > Moved another function into stubs, added xml rule in tests/makefile, little > changes in patch 4, 6, 7. > > Wenchao Xia (7): > Build system clean tests directory clearly > block export function path_has_protocol > stubs add set_fd_handler and signalfd_available > libqblock build system > libqblock API design and type defines > libqblock API implement > libqblock test example > > .gitignore | 2 + > Makefile | 31 +- > block.c | 2 +- > block.h | 2 + > configure | 41 ++- > libqblock/Makefile | 75 +++ > libqblock/libqblock-aio.c | 78 +++ > libqblock/libqblock-aio.h | 8 + > libqblock/libqblock-error.c | 57 ++ > libqblock/libqblock-error.h | 49 ++ > libqblock/libqblock-internal.h | 68 +++ > libqblock/libqblock-types.h | 245 +++++++++ > libqblock/libqblock.c | 1180 ++++++++++++++++++++++++++++++++++++++++ > libqblock/libqblock.h | 355 ++++++++++++ > libqblock/libqblock.pc.in | 13 + > rules.mak | 4 + > stubs/Makefile.objs | 1 + > stubs/set-fd-handler.c | 8 + > stubs/signalfd.c | 7 + > tests/Makefile | 38 ++- > tests/check-libqblock-qcow2.c | 392 +++++++++++++ > 21 files changed, 2645 insertions(+), 11 deletions(-) > create mode 100644 libqblock/Makefile > create mode 100644 libqblock/libqblock-aio.c > create mode 100644 libqblock/libqblock-aio.h > 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 stubs/signalfd.c > create mode 100644 tests/check-libqblock-qcow2.c > > -- Best Regards Wenchao Xia