Message ID | 1388906864-1083-4-git-send-email-qiaonuohan@cn.fujitsu.com |
---|---|
State | New |
Headers | show |
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 <qiaonuohan@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 <lersek@redhat.com>
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.
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;
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 <qiaonuohan@cn.fujitsu.com> --- dump.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-)