On Sat, Oct 13, 2012 at 5:10 AM, Wenchao Xia <xiaxia34...@163.com> wrote: > From: Wenchao Xia <xiaw...@linux.vnet.ibm.com> > > 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.
Still does not work: lt CC libqblock/libqblock.lo In file included from /src/qemu/qemu-common.h:6, from /src/qemu/qemu-aio.h:17, from /src/qemu/block.h:4, from /src/qemu/libqblock/libqblock-internal.h:19, from /src/qemu/libqblock/libqblock.c:18: /src/qemu/compiler.h:6:25: error: config-host.h: No such file or directory > > 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 > > >