On Mon, Jan 07, 2013 at 03:28:06PM +0800, Wenchao Xia wrote: > This patch switch to internal common API to take group external > snapshots from qmp_transaction interface. qmp layer simply does > a translation from user input. > > Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> > --- > blockdev.c | 215 > ++++++++++++++++++++++++------------------------------------ > 1 files changed, 87 insertions(+), 128 deletions(-)
An internal API for snapshots is not necessary. qmp_transaction() is already usable both from the monitor and C code. The QAPI code generator creates structs that can be accessed directly from C. qmp_transaction(), BlockdevAction, and BlockdevActionList *is* the snapshot API. It just doesn't support internal snapshots yet, which is what you are trying to add. To add internal snapshot support, define a BlockdevInternalSnapshot type in qapi-schema.json and add internal snapshot support in qmp_transaction(). qmp_transaction() was designed with this in mind from the beginning and dispatches based on BlockdevAction->kind. The patch series will become much smaller while still adding internal snapshot support. Stefan