δΊ 2012-10-13 18:49, Blue Swirl ει: > 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 > On my machine config-host.h was generated before in source code directory, So I missed that. Fixed and tested again as following: mkdir testbuild cd testbuild ../configure make libqblock Thanks for your sustained concern.
>> >> 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 >> >> >> >