All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
To: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Cc: kwolf@redhat.com, aliguori@us.ibm.com, stefanha@gmail.com,
	qemu-devel@nongnu.org, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH V20 00/10] libqblock qemu block layer library
Date: Mon, 04 Mar 2013 14:42:09 +0800	[thread overview]
Message-ID: <51344241.6060003@linux.vnet.ibm.com> (raw)
In-Reply-To: <1361934618-32026-1-git-send-email-xiawenc@linux.vnet.ibm.com>

Hi,
  any comments for this version?

>    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.
> 
> 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.
> 
> v14:
>    all: Rebased.
>    1/10, 2/10: automatically call subdir's clean command if subdir's Makefile
> added $SUBDIR_CLEAN_RULES, so tests/Makefile do not need to be always included,
> libqblock's rule can also use it.
>    3/10: seperated patch for configure support, modified as libcacard's style.
>    4/10: modifed as libcacard's rule.
>    5/10: seperated patch, also changed a bit to be a mirror as libcacard's rule.
>    8/10: use bdrv_pread/bdrv_pwrite, instead of handling the buf allignment by
> libqblock itself. Removed libqblock-aio.c because most function are in
> block-obj-y now.
>    9/10: seperated patch, use LINK instead of custom LT_LINK rule, and now
> libqblock.la is a dependence in the link rule of test program, to make
> LINK invoke libtool.
> 
> v15:
>    1/9: merged from 1/10, 2/10 of previous version, and use dependce of "clean"
> in sub Makefile instead of a intermedia variable.
>    2/9: drop $TOOLS adding in libqblock's Makefile, the rule is added in "all".
>    3/9: drop libqblock-y in Makefile.objs, directly add them in libqblock's
> Makfile.
>    6/9: use __visibility__ in special public marking macro, change macro name
> to LIBQB_DLL_PUBLIC to avoid confilict in name space, use sizeof(uint64_t)
> instead of magic number 8 in reserved member, spelling fix. Date of file was
> changed to 2013.
>    7/9: date of file was changed to 2013.
>    8/9: test rule was added to check-unit, drop correspond rule for
> check-libqblock, drop varible $LIBQBLOCK_LA.
> 
> v16:
>    7/9: remove *o_raw and correct the enum type to fix error in building.
> 
> v17:
>    Tested on Fedora 17, build pass on RH6.2, windows.
>    1/10: remove variable CHECK_CLEAN_TARGETS.
>    2/10: new added. Because libcacard share some .lo with libqblock and they
> are compiled differently with '-f visibility', so build sequence will affect
> the build result. This patch introduce macro QEMU_DLL_PULIC to hide symbols
> in all .lo file, so they can use same .lo files now, to avoid build failure.
> All symbols in libcacard.syms are marked as public.
>    3/10: only support libqblock on LINUX now, to avoid trouble on Windows. Add
> glib-thread and glib check in configure. Dependency library was set in
> configure instead of libqblock/Makefile.
>    4/10: remove variable LIBQBLOCK_CLEAN_TARGETS, removed -fvisibility flag
> because it is added in rules.mak before.
>    7/10: change name qb_fmt to qb_format, qb_loc to qb_location. Use macro
> QEMU_DLL_PUBLIC.
>    8/10: change name qb_fmt to qb_format, qb_loc to qb_location, use g_malloc0
> in qb_context_new(). Moved init code from __constructure__ function to
> qb_context_new, to avoid it get called before block layer init, related lock
> is added.
>    9/10: remove clean for check-libqblock-y, because it is added in check-unit-y.
> removed unused variale LIBQBLOCK_TEST_DIR, moved exe file adding rule to next
> patch to make build success in this patch.
>    10/10: add rule for itself in this patch. Default test dir is changed to
> /tmp/libqblock_test.
> 
> v18:
>    Tested on RH6.2.
>    3/10: using probing result before instead of re-probing for libqblock.
>    4/10: add comments about the reasion to filter out one .o file in stubs.
>    7/10:
>      error handlering:
>      remove qb_error_get_errno(), return a complete string which need to
> be freed in qb_error_get_human_str().
>      API and defines:
>      remove small macros QB_FREE and G_LIBQBLOCK_ERROR, rename
> g_libqblock_error_quark() to qb_error_quark(). Add comments about
> caching. Added reserved function pointers for every public structure,
> remove related helper functions for those public structure. Remove
> QBlockContext from public header, it is associated with QBlockImage
> now. Use QBlockImage* instead of QBlockImage** in qb_image_ref().
> remove "const" for filename in QBlockLocationInfo. Return 0 on success
> for qb_read()/qb_write(). Add comments about the flag usage in qb_create().
> use uint64_t for both length and *plenth in qb_check_allocation(). Spell
> fix.
>    8/10: related change for API.
>    10/10: related change for API. In information getting case, the code
> handle the public structure's allocation itself.
> 
> v19:
>    8/10: add static const flag for libqb_formatstr_table[], use ARRAY_SIZE
> instead of NULL condition in traversal, and directly use libqb_formatstr_table
> instead of *tb in qb_formattype2str() and qb_str2formattype(). add GCC_FMT_ATTR
> flag to set_context_err(), remove useless return in void functions.
>    10/10: remove useless return in void functions.
> 
> v20:
>    Rebased.
>    address Eric's comments:
>    07/10: add space around binrary operators in macro, drop comments for
> default sector_size, remove limitation of length for qb_check_allocation().
>    08/10: check multiple times with lower function in qb_check_allocation().
>    address Stefan's function:
>    08/10: use g-once for block init function.
> 
> Wenchao Xia (10):
>    1 build: add command check-clean
>    2 build: hide symbols in *.lo
>    3 libqblock: build: add configure support
>    4 libqblock: build: add rule for libqblock.la
>    5 libqblock: build: add packaging support
>    6 block: export function path_has_protocol()
>    7 libqblock: libqblock API design and type defines
>    8 libqblock: libqblock API implement
>    9 libqblock: build: add rules for test case
>    10 libqblock: test: libqblock test example
> 
>   Makefile                       |    4 +-
>   block.c                        |    2 +-
>   configure                      |   50 ++
>   include/block/block.h          |    2 +
>   include/qemu/sockets.h         |    1 +
>   include/qemu/thread.h          |    6 +
>   libcacard/cac.h                |    2 +
>   libcacard/card_7816.h          |    9 +
>   libcacard/vcard.h              |   22 +
>   libcacard/vcard_emul.h         |   12 +
>   libcacard/vcard_emul_type.h    |    3 +
>   libcacard/vcardt.h             |    8 +
>   libcacard/vevent.h             |    6 +
>   libcacard/vreader.h            |   23 +
>   libqblock/Makefile             |   54 +++
>   libqblock/libqblock-error.c    |   49 ++
>   libqblock/libqblock-error.h    |   35 ++
>   libqblock/libqblock-internal.h |   62 +++
>   libqblock/libqblock-types.h    |  264 +++++++++++
>   libqblock/libqblock.c          | 1005 ++++++++++++++++++++++++++++++++++++++++
>   libqblock/libqblock.h          |  245 ++++++++++
>   libqblock/libqblock.pc.in      |   13 +
>   rules.mak                      |    1 +
>   tests/Makefile                 |   19 +-
>   tests/check-libqblock-qcow2.c  |  385 +++++++++++++++
>   25 files changed, 2279 insertions(+), 3 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/check-libqblock-qcow2.c
> 
> 


-- 
Best Regards

Wenchao Xia

       reply	other threads:[~2013-03-04  6:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1361934618-32026-1-git-send-email-xiawenc@linux.vnet.ibm.com>
2013-03-04  6:42 ` Wenchao Xia [this message]
2013-03-05 12:04   ` [Qemu-devel] [PATCH V20 00/10] libqblock qemu block layer library Wenchao Xia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51344241.6060003@linux.vnet.ibm.com \
    --to=xiawenc@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.