qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v8 03/13] dump: add API to write header of flatt


From: Luiz Capitulino
Subject: Re: [Qemu-devel] [PATCH v8 03/13] dump: add API to write header of flatten format
Date: Mon, 10 Feb 2014 14:35:26 -0500

On Tue, 28 Jan 2014 14:21:56 +0800
qiaonuohan <address@hidden> wrote:

> flatten format will be used when writing kdump-compressed format. The format 
> is
> also used by makedumpfile, you can refer to the following URL to get more
> detailed information about flatten format of kdump-compressed format:
> http://sourceforge.net/projects/makedumpfile/
> 
> The two functions here are used to write start flat header and end flat header
> to vmcore, and they will be called later when flatten format is used.
> 
> struct MakedumpfileHeader stored at the head of vmcore is used to indicate the
> vmcore is in flatten format.
> 
> struct MakedumpfileHeader {
>     char signature[16];     /* = "makedumpfile" */
>     int64_t type;           /* = 1 */
>     int64_t version;        /* = 1 */
> };
> 
> And struct MakedumpfileDataHeader, with offset and buf_size set to -1, is used
> to indicate the end of vmcore in flatten format.
> 
> struct MakedumpfileDataHeader {
>     int64_t offset;         /* = -1 */
>     int64_t buf_size;       /* = -1 */
> };
> 
> Signed-off-by: Qiao Nuohan <address@hidden>
> Reviewed-by: Laszlo Ersek <address@hidden>

This patch breaks git bisect:

/home/lcapitulino/work/src/upstream/qmp-unstable/dump.c:689:12: error: 
‘write_start_flat_header’ defined but not used [-Werror=unused-function]
/home/lcapitulino/work/src/upstream/qmp-unstable/dump.c:715:12: error: 
‘write_end_flat_header’ defined but not used [-Werror=unused-function]
cc1: all warnings being treated as errors
make[1]: *** [dump.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [subdir-x86_64-softmmu] Error 2

> ---
>  dump.c                |   42 ++++++++++++++++++++++++++++++++++++++++++
>  include/sysemu/dump.h |   17 +++++++++++++++++
>  2 files changed, 59 insertions(+), 0 deletions(-)
> 
> diff --git a/dump.c b/dump.c
> index c9d3492..f233b3e 100644
> --- a/dump.c
> +++ b/dump.c
> @@ -686,6 +686,48 @@ static int create_vmcore(DumpState *s)
>      return 0;
>  }
>  
> +static int write_start_flat_header(int fd)
> +{
> +    uint8_t *buf;
> +    MakedumpfileHeader mh;
> +    int ret = 0;
> +
> +    memset(&mh, 0, sizeof(mh));
> +    strncpy(mh.signature, MAKEDUMPFILE_SIGNATURE,
> +            strlen(MAKEDUMPFILE_SIGNATURE));
> +
> +    mh.type = cpu_to_be64(TYPE_FLAT_HEADER);
> +    mh.version = cpu_to_be64(VERSION_FLAT_HEADER);
> +
> +    buf = g_malloc0(MAX_SIZE_MDF_HEADER);
> +    memcpy(buf, &mh, sizeof(mh));
> +
> +    size_t written_size;
> +    written_size = qemu_write_full(fd, buf, MAX_SIZE_MDF_HEADER);
> +    if (written_size != MAX_SIZE_MDF_HEADER) {
> +        ret = -1;
> +    }
> +
> +    g_free(buf);
> +    return ret;
> +}
> +
> +static int write_end_flat_header(int fd)
> +{
> +    MakedumpfileDataHeader mdh;
> +
> +    mdh.offset = END_FLAG_FLAT_HEADER;
> +    mdh.buf_size = END_FLAG_FLAT_HEADER;
> +
> +    size_t written_size;
> +    written_size = qemu_write_full(fd, &mdh, sizeof(mdh));
> +    if (written_size != sizeof(mdh)) {
> +        return -1;
> +    }
> +
> +    return 0;
> +}
> +
>  static ram_addr_t get_start_block(DumpState *s)
>  {
>      GuestPhysBlock *block;
> diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h
> index 19fafb2..b32b390 100644
> --- a/include/sysemu/dump.h
> +++ b/include/sysemu/dump.h
> @@ -14,12 +14,29 @@
>  #ifndef DUMP_H
>  #define DUMP_H
>  
> +#define MAKEDUMPFILE_SIGNATURE      "makedumpfile"
> +#define MAX_SIZE_MDF_HEADER         (4096) /* max size of 
> makedumpfile_header */
> +#define TYPE_FLAT_HEADER            (1)    /* type of flattened format */
> +#define VERSION_FLAT_HEADER         (1)    /* version of flattened format */
> +#define END_FLAG_FLAT_HEADER        (-1)
> +
>  typedef struct ArchDumpInfo {
>      int d_machine;  /* Architecture */
>      int d_endian;   /* ELFDATA2LSB or ELFDATA2MSB */
>      int d_class;    /* ELFCLASS32 or ELFCLASS64 */
>  } ArchDumpInfo;
>  
> +typedef struct QEMU_PACKED MakedumpfileHeader {
> +    char signature[16];     /* = "makedumpfile" */
> +    int64_t type;
> +    int64_t version;
> +} MakedumpfileHeader;
> +
> +typedef struct QEMU_PACKED MakedumpfileDataHeader {
> +    int64_t offset;
> +    int64_t buf_size;
> +} MakedumpfileDataHeader;
> +
>  struct GuestPhysBlockList; /* memory_mapping.h */
>  int cpu_get_dump_info(ArchDumpInfo *info,
>                        const struct GuestPhysBlockList *guest_phys_blocks);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]