On Mon, Jul 17, 2023 at 9:55 PM Stephen Brennan <
stephen.s.bren...@oracle.com> wrote:

> For the next patch, we need a reference to DumpState when writing data.
>
> Signed-off-by: Stephen Brennan <stephen.s.bren...@oracle.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>


> ---
>  dump/dump.c           | 40 ++++++++++++++++++++--------------------
>  include/sysemu/dump.h |  2 +-
>  2 files changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/dump/dump.c b/dump/dump.c
> index 1f1a6edcab..2708ddc135 100644
> --- a/dump/dump.c
> +++ b/dump/dump.c
> @@ -809,7 +809,7 @@ static void create_vmcore(DumpState *s, Error **errp)
>      dump_end(s, errp);
>  }
>
> -static int write_start_flat_header(int fd)
> +static int write_start_flat_header(DumpState *s)
>  {
>      MakedumpfileHeader *mh;
>      int ret = 0;
> @@ -824,7 +824,7 @@ static int write_start_flat_header(int fd)
>      mh->version = cpu_to_be64(VERSION_FLAT_HEADER);
>
>      size_t written_size;
> -    written_size = qemu_write_full(fd, mh, MAX_SIZE_MDF_HEADER);
> +    written_size = qemu_write_full(s->fd, mh, MAX_SIZE_MDF_HEADER);
>      if (written_size != MAX_SIZE_MDF_HEADER) {
>          ret = -1;
>      }
> @@ -833,7 +833,7 @@ static int write_start_flat_header(int fd)
>      return ret;
>  }
>
> -static int write_end_flat_header(int fd)
> +static int write_end_flat_header(DumpState *s)
>  {
>      MakedumpfileDataHeader mdh;
>
> @@ -841,7 +841,7 @@ static int write_end_flat_header(int fd)
>      mdh.buf_size = END_FLAG_FLAT_HEADER;
>
>      size_t written_size;
> -    written_size = qemu_write_full(fd, &mdh, sizeof(mdh));
> +    written_size = qemu_write_full(s->fd, &mdh, sizeof(mdh));
>      if (written_size != sizeof(mdh)) {
>          return -1;
>      }
> @@ -849,7 +849,7 @@ static int write_end_flat_header(int fd)
>      return 0;
>  }
>
> -static int write_buffer(int fd, off_t offset, const void *buf, size_t
> size)
> +static int write_buffer(DumpState *s, off_t offset, const void *buf,
> size_t size)
>  {
>      size_t written_size;
>      MakedumpfileDataHeader mdh;
> @@ -857,12 +857,12 @@ static int write_buffer(int fd, off_t offset, const
> void *buf, size_t size)
>      mdh.offset = cpu_to_be64(offset);
>      mdh.buf_size = cpu_to_be64(size);
>
> -    written_size = qemu_write_full(fd, &mdh, sizeof(mdh));
> +    written_size = qemu_write_full(s->fd, &mdh, sizeof(mdh));
>      if (written_size != sizeof(mdh)) {
>          return -1;
>      }
>
> -    written_size = qemu_write_full(fd, buf, size);
> +    written_size = qemu_write_full(s->fd, buf, size);
>      if (written_size != size) {
>          return -1;
>      }
> @@ -982,7 +982,7 @@ static void create_header32(DumpState *s, Error **errp)
>  #endif
>      dh->status = cpu_to_dump32(s, status);
>
> -    if (write_buffer(s->fd, 0, dh, size) < 0) {
> +    if (write_buffer(s, 0, dh, size) < 0) {
>          error_setg(errp, "dump: failed to write disk dump header");
>          goto out;
>      }
> @@ -1012,7 +1012,7 @@ static void create_header32(DumpState *s, Error
> **errp)
>      kh->offset_note = cpu_to_dump64(s, offset_note);
>      kh->note_size = cpu_to_dump32(s, s->note_size);
>
> -    if (write_buffer(s->fd, DISKDUMP_HEADER_BLOCKS *
> +    if (write_buffer(s, DISKDUMP_HEADER_BLOCKS *
>                       block_size, kh, size) < 0) {
>          error_setg(errp, "dump: failed to write kdump sub header");
>          goto out;
> @@ -1027,7 +1027,7 @@ static void create_header32(DumpState *s, Error
> **errp)
>      if (*errp) {
>          goto out;
>      }
> -    if (write_buffer(s->fd, offset_note, s->note_buf,
> +    if (write_buffer(s, offset_note, s->note_buf,
>                       s->note_size) < 0) {
>          error_setg(errp, "dump: failed to write notes");
>          goto out;
> @@ -1093,7 +1093,7 @@ static void create_header64(DumpState *s, Error
> **errp)
>  #endif
>      dh->status = cpu_to_dump32(s, status);
>
> -    if (write_buffer(s->fd, 0, dh, size) < 0) {
> +    if (write_buffer(s, 0, dh, size) < 0) {
>          error_setg(errp, "dump: failed to write disk dump header");
>          goto out;
>      }
> @@ -1123,7 +1123,7 @@ static void create_header64(DumpState *s, Error
> **errp)
>      kh->offset_note = cpu_to_dump64(s, offset_note);
>      kh->note_size = cpu_to_dump64(s, s->note_size);
>
> -    if (write_buffer(s->fd, DISKDUMP_HEADER_BLOCKS *
> +    if (write_buffer(s, DISKDUMP_HEADER_BLOCKS *
>                       block_size, kh, size) < 0) {
>          error_setg(errp, "dump: failed to write kdump sub header");
>          goto out;
> @@ -1139,7 +1139,7 @@ static void create_header64(DumpState *s, Error
> **errp)
>          goto out;
>      }
>
> -    if (write_buffer(s->fd, offset_note, s->note_buf,
> +    if (write_buffer(s, offset_note, s->note_buf,
>                       s->note_size) < 0) {
>          error_setg(errp, "dump: failed to write notes");
>          goto out;
> @@ -1204,7 +1204,7 @@ static int set_dump_bitmap(uint64_t last_pfn,
> uint64_t pfn, bool value,
>      while (old_offset < new_offset) {
>          /* calculate the offset and write dump_bitmap */
>          offset_bitmap1 = s->offset_dump_bitmap + old_offset;
> -        if (write_buffer(s->fd, offset_bitmap1, buf,
> +        if (write_buffer(s, offset_bitmap1, buf,
>                           bitmap_bufsize) < 0) {
>              return -1;
>          }
> @@ -1212,7 +1212,7 @@ static int set_dump_bitmap(uint64_t last_pfn,
> uint64_t pfn, bool value,
>          /* dump level 1 is chosen, so 1st and 2nd bitmap are same */
>          offset_bitmap2 = s->offset_dump_bitmap + s->len_dump_bitmap +
>                           old_offset;
> -        if (write_buffer(s->fd, offset_bitmap2, buf,
> +        if (write_buffer(s, offset_bitmap2, buf,
>                           bitmap_bufsize) < 0) {
>              return -1;
>          }
> @@ -1380,7 +1380,7 @@ out:
>  static void prepare_data_cache(DataCache *data_cache, DumpState *s,
>                                 off_t offset)
>  {
> -    data_cache->fd = s->fd;
> +    data_cache->state = s;
>      data_cache->data_size = 0;
>      data_cache->buf_size = 4 * dump_bitmap_get_bufsize(s);
>      data_cache->buf = g_malloc0(data_cache->buf_size);
> @@ -1399,11 +1399,11 @@ static int write_cache(DataCache *dc, const void
> *buf, size_t size,
>      /*
>       * if flag_sync is set, synchronize data in dc->buf into vmcore.
>       * otherwise check if the space is enough for caching data in buf, if
> not,
> -     * write the data in dc->buf to dc->fd and reset dc->buf
> +     * write the data in dc->buf to dc->state->fd and reset dc->buf
>       */
>      if ((!flag_sync && dc->data_size + size > dc->buf_size) ||
>          (flag_sync && dc->data_size > 0)) {
> -        if (write_buffer(dc->fd, dc->offset, dc->buf, dc->data_size) < 0)
> {
> +        if (write_buffer(dc->state, dc->offset, dc->buf, dc->data_size) <
> 0) {
>              return -1;
>          }
>
> @@ -1644,7 +1644,7 @@ static void create_kdump_vmcore(DumpState *s, Error
> **errp)
>       *  +------------------------------------------+
>       */
>
> -    ret = write_start_flat_header(s->fd);
> +    ret = write_start_flat_header(s);
>      if (ret < 0) {
>          error_setg(errp, "dump: failed to write start flat header");
>          return;
> @@ -1665,7 +1665,7 @@ static void create_kdump_vmcore(DumpState *s, Error
> **errp)
>          return;
>      }
>
> -    ret = write_end_flat_header(s->fd);
> +    ret = write_end_flat_header(s);
>      if (ret < 0) {
>          error_setg(errp, "dump: failed to write end flat header");
>          return;
> diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h
> index 7008d43d04..e27af8fb34 100644
> --- a/include/sysemu/dump.h
> +++ b/include/sysemu/dump.h
> @@ -137,7 +137,7 @@ typedef struct QEMU_PACKED KdumpSubHeader64 {
>  } KdumpSubHeader64;
>
>  typedef struct DataCache {
> -    int fd;             /* fd of the file where to write the cached data
> */
> +    DumpState *state;   /* dump state related to this data */
>      uint8_t *buf;       /* buffer for cached data */
>      size_t buf_size;    /* size of the buf */
>      size_t data_size;   /* size of cached data in buf */
> --
> 2.39.2
>
>

Reply via email to