Re: [Qemu-devel] [PATCH v6 03/11] dump: Add API to write vmcore
On 01/05/14 08:27, Qiao Nuohan wrote: Function is used to write vmcore. If flag_flatten is specified, flatten format will be used. In flatten format, data is written block by block in vmcore. struct MakedumpfileDataHeader is used to indicate the offset and size of a data block. struct MakedumpfileDataHeader { int64_t offset; int64_t buf_size; }; Signed-off-by: Qiao Nuohan qiaonuo...@cn.fujitsu.com --- dump.c | 28 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/dump.c b/dump.c index 89baeab..764db39 100644 --- a/dump.c +++ b/dump.c @@ -726,6 +726,34 @@ static int write_end_flat_header(int fd) return 0; } +static int write_buffer(int fd, bool flag_flatten, off_t offset, void *buf, +size_t size) +{ You might have wanted to const-qualify *buf here, but it certainly doesn't warrant a respin. Reviewed-by: Laszlo Ersek ler...@redhat.com
Re: [Qemu-devel] [PATCH v6 03/11] dump: Add API to write vmcore
On 01/07/2014 02:12 AM, Laszlo Ersek wrote: @@ -726,6 +726,34 @@ static int write_end_flat_header(int fd) return 0; } +static int write_buffer(int fd, bool flag_flatten, off_t offset, void *buf, +size_t size) +{ You might have wanted to const-qualify *buf here, but it certainly doesn't warrant a respin. Acked, I will reflect it in later version. -- Regards Qiao Nuohan
[Qemu-devel] [PATCH v6 03/11] dump: Add API to write vmcore
Function is used to write vmcore. If flag_flatten is specified, flatten format will be used. In flatten format, data is written block by block in vmcore. struct MakedumpfileDataHeader is used to indicate the offset and size of a data block. struct MakedumpfileDataHeader { int64_t offset; int64_t buf_size; }; Signed-off-by: Qiao Nuohan qiaonuo...@cn.fujitsu.com --- dump.c | 28 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/dump.c b/dump.c index 89baeab..764db39 100644 --- a/dump.c +++ b/dump.c @@ -726,6 +726,34 @@ static int write_end_flat_header(int fd) return 0; } +static int write_buffer(int fd, bool flag_flatten, off_t offset, void *buf, +size_t size) +{ +size_t written_size; +MakedumpfileDataHeader mdh; + +if (flag_flatten) { +mdh.offset = cpu_to_be64(offset); +mdh.buf_size = cpu_to_be64(size); + +written_size = qemu_write_full(fd, mdh, sizeof(mdh)); +if (written_size != sizeof(mdh)) { +return -1; +} +} else { +if (lseek(fd, offset, SEEK_SET) 0) { +return -1; +} +} + +written_size = qemu_write_full(fd, buf, size); +if (written_size != size) { +return -1; +} + +return 0; +} + static ram_addr_t get_start_block(DumpState *s) { GuestPhysBlock *block; -- 1.7.1