All of lore.kernel.org
 help / color / mirror / Atom feed
From: zhanghailiang <zhang.zhanghailiang@huawei.com>
To: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>,
	qemu-devel@nongnu.org
Cc: amit.shah@redhat.com, peter.huangpeng@huawei.com, quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH 4/5] migration: size_t'ify some of qemu-file
Date: Thu, 13 Aug 2015 20:15:00 +0800	[thread overview]
Message-ID: <55CC8A44.9010800@huawei.com> (raw)
In-Reply-To: <1439463094-5394-5-git-send-email-dgilbert@redhat.com>

On 2015/8/13 18:51, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> This is a start on using size_t more in qemu-file and friends;
> it fixes up QEMUFilePutBufferFunc and QEMUFileGetBufferFunc
> to take size_t lengths and return ssize_t return values (like read(2))
> and fixes up all the different implementations of them.
>
> Note that I've not yet followed this deeply into bdrv_ implementations.
>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---

Reviewed-by: zhanghailiang <zhang.zhanghailiang@huawei.com>

>   include/migration/qemu-file.h |  8 ++++----
>   migration/qemu-file-buf.c     |  7 ++++---
>   migration/qemu-file-stdio.c   | 11 ++++++-----
>   migration/qemu-file-unix.c    |  6 ++++--
>   migration/rdma.c              | 13 +++++++------
>   migration/savevm.c            |  7 ++++---
>   trace-events                  |  2 +-
>   7 files changed, 30 insertions(+), 24 deletions(-)
>
> diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
> index ea49f33..e1e2bab 100644
> --- a/include/migration/qemu-file.h
> +++ b/include/migration/qemu-file.h
> @@ -31,15 +31,15 @@
>    * The pos argument can be ignored if the file is only being used for
>    * streaming.  The handler should try to write all of the data it can.
>    */
> -typedef int (QEMUFilePutBufferFunc)(void *opaque, const uint8_t *buf,
> -                                    int64_t pos, int size);
> +typedef ssize_t (QEMUFilePutBufferFunc)(void *opaque, const uint8_t *buf,
> +                                        int64_t pos, size_t size);
>
>   /* Read a chunk of data from a file at the given position.  The pos argument
>    * can be ignored if the file is only be used for streaming.  The number of
>    * bytes actually read should be returned.
>    */
> -typedef int (QEMUFileGetBufferFunc)(void *opaque, uint8_t *buf,
> -                                    int64_t pos, int size);
> +typedef ssize_t (QEMUFileGetBufferFunc)(void *opaque, uint8_t *buf,
> +                                        int64_t pos, size_t size);
>
>   /* Close a file
>    *
> diff --git a/migration/qemu-file-buf.c b/migration/qemu-file-buf.c
> index 2de9330..1d9528e 100644
> --- a/migration/qemu-file-buf.c
> +++ b/migration/qemu-file-buf.c
> @@ -372,7 +372,8 @@ typedef struct QEMUBuffer {
>       bool qsb_allocated;
>   } QEMUBuffer;
>
> -static int buf_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
> +static ssize_t buf_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
> +                              size_t size)
>   {
>       QEMUBuffer *s = opaque;
>       ssize_t len = qsb_get_length(s->qsb) - pos;
> @@ -387,8 +388,8 @@ static int buf_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
>       return qsb_get_buffer(s->qsb, pos, len, buf);
>   }
>
> -static int buf_put_buffer(void *opaque, const uint8_t *buf,
> -                          int64_t pos, int size)
> +static ssize_t buf_put_buffer(void *opaque, const uint8_t *buf,
> +                              int64_t pos, size_t size)
>   {
>       QEMUBuffer *s = opaque;
>
> diff --git a/migration/qemu-file-stdio.c b/migration/qemu-file-stdio.c
> index 285068b..dc91137 100644
> --- a/migration/qemu-file-stdio.c
> +++ b/migration/qemu-file-stdio.c
> @@ -37,11 +37,11 @@ static int stdio_get_fd(void *opaque)
>       return fileno(s->stdio_file);
>   }
>
> -static int stdio_put_buffer(void *opaque, const uint8_t *buf, int64_t pos,
> -                            int size)
> +static ssize_t stdio_put_buffer(void *opaque, const uint8_t *buf, int64_t pos,
> +                                size_t size)
>   {
>       QEMUFileStdio *s = opaque;
> -    int res;
> +    size_t res;
>
>       res = fwrite(buf, 1, size, s->stdio_file);
>
> @@ -51,11 +51,12 @@ static int stdio_put_buffer(void *opaque, const uint8_t *buf, int64_t pos,
>       return res;
>   }
>
> -static int stdio_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
> +static ssize_t stdio_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
> +                                size_t size)
>   {
>       QEMUFileStdio *s = opaque;
>       FILE *fp = s->stdio_file;
> -    int bytes;
> +    ssize_t bytes;
>
>       for (;;) {
>           clearerr(fp);
> diff --git a/migration/qemu-file-unix.c b/migration/qemu-file-unix.c
> index bfbc086..adfe91a 100644
> --- a/migration/qemu-file-unix.c
> +++ b/migration/qemu-file-unix.c
> @@ -54,7 +54,8 @@ static int socket_get_fd(void *opaque)
>       return s->fd;
>   }
>
> -static int socket_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
> +static ssize_t socket_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
> +                                 size_t size)
>   {
>       QEMUFileSocket *s = opaque;
>       ssize_t len;
> @@ -138,7 +139,8 @@ static ssize_t unix_writev_buffer(void *opaque, struct iovec *iov, int iovcnt,
>       return total;
>   }
>
> -static int unix_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
> +static ssize_t unix_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
> +                              size_t size)
>   {
>       QEMUFileSocket *s = opaque;
>       ssize_t len;
> diff --git a/migration/rdma.c b/migration/rdma.c
> index 74876fd..fd430c7 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -2519,8 +2519,8 @@ static void *qemu_rdma_data_init(const char *host_port, Error **errp)
>    * SEND messages for control only.
>    * VM's ram is handled with regular RDMA messages.
>    */
> -static int qemu_rdma_put_buffer(void *opaque, const uint8_t *buf,
> -                                int64_t pos, int size)
> +static ssize_t qemu_rdma_put_buffer(void *opaque, const uint8_t *buf,
> +                                    int64_t pos, size_t size)
>   {
>       QEMUFileRDMA *r = opaque;
>       QEMUFile *f = r->file;
> @@ -2547,7 +2547,8 @@ static int qemu_rdma_put_buffer(void *opaque, const uint8_t *buf,
>           r->len = MIN(remaining, RDMA_SEND_INCREMENT);
>           remaining -= r->len;
>
> -        head.len = r->len;
> +        /* Guaranteed to fit due to RDMA_SEND_INCREMENT MIN above */
> +        head.len = (uint32_t)r->len;
>           head.type = RDMA_CONTROL_QEMU_FILE;
>
>           ret = qemu_rdma_exchange_send(rdma, &head, data, NULL, NULL, NULL);
> @@ -2564,7 +2565,7 @@ static int qemu_rdma_put_buffer(void *opaque, const uint8_t *buf,
>   }
>
>   static size_t qemu_rdma_fill(RDMAContext *rdma, uint8_t *buf,
> -                             int size, int idx)
> +                             size_t size, int idx)
>   {
>       size_t len = 0;
>
> @@ -2585,8 +2586,8 @@ static size_t qemu_rdma_fill(RDMAContext *rdma, uint8_t *buf,
>    * RDMA links don't use bytestreams, so we have to
>    * return bytes to QEMUFile opportunistically.
>    */
> -static int qemu_rdma_get_buffer(void *opaque, uint8_t *buf,
> -                                int64_t pos, int size)
> +static ssize_t qemu_rdma_get_buffer(void *opaque, uint8_t *buf,
> +                                    int64_t pos, size_t size)
>   {
>       QEMUFileRDMA *r = opaque;
>       RDMAContext *rdma = r->rdma;
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 6071215..1bd8827 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -138,14 +138,15 @@ static ssize_t block_writev_buffer(void *opaque, struct iovec *iov, int iovcnt,
>       return qiov.size;
>   }
>
> -static int block_put_buffer(void *opaque, const uint8_t *buf,
> -                           int64_t pos, int size)
> +static ssize_t block_put_buffer(void *opaque, const uint8_t *buf,
> +                                int64_t pos, size_t size)
>   {
>       bdrv_save_vmstate(opaque, buf, pos, size);
>       return size;
>   }
>
> -static int block_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
> +static ssize_t block_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
> +                                size_t size)
>   {
>       return bdrv_load_vmstate(opaque, buf, pos, size);
>   }
> diff --git a/trace-events b/trace-events
> index 1509e5b..1e7d9b6 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1428,7 +1428,7 @@ qemu_rdma_exchange_get_response_none(const char *desc, int type) "Surprise: got
>   qemu_rdma_exchange_send_issue_callback(void) ""
>   qemu_rdma_exchange_send_waiting(const char *desc) "Waiting for response %s"
>   qemu_rdma_exchange_send_received(const char *desc) "Response %s received."
> -qemu_rdma_fill(int64_t control_len, int size) "RDMA %" PRId64 " of %d bytes already in buffer"
> +qemu_rdma_fill(size_t control_len, size_t size) "RDMA %zd of %zd bytes already in buffer"
>   qemu_rdma_init_ram_blocks(int blocks) "Allocated %d local ram block structures"
>   qemu_rdma_poll_recv(const char *compstr, int64_t comp, int64_t id, int sent) "completion %s #%" PRId64 " received (%" PRId64 ") left %d"
>   qemu_rdma_poll_write(const char *compstr, int64_t comp, int left, uint64_t block, uint64_t chunk, void *local, void *remote) "completions %s (%" PRId64 ") left %d, block %" PRIu64 ", chunk: %" PRIu64 " %p %p"
>

  reply	other threads:[~2015-08-13 12:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-13 10:51 [Qemu-devel] [PATCH 0/5] Migration cleanups Dr. David Alan Gilbert (git)
2015-08-13 10:51 ` [Qemu-devel] [PATCH 1/5] migration/ram.c: Use RAMBlock rather than MemoryRegion Dr. David Alan Gilbert (git)
2015-08-13 12:46   ` Paolo Bonzini
2015-09-15 10:43   ` Amit Shah
2015-08-13 10:51 ` [Qemu-devel] [PATCH 2/5] Split out end of migration code from migration_thread Dr. David Alan Gilbert (git)
2015-08-13 12:14   ` zhanghailiang
2015-09-15 11:12   ` Amit Shah
2015-08-13 10:51 ` [Qemu-devel] [PATCH 3/5] Init page sizes in qtest Dr. David Alan Gilbert (git)
2015-08-13 10:51 ` [Qemu-devel] [PATCH 4/5] migration: size_t'ify some of qemu-file Dr. David Alan Gilbert (git)
2015-08-13 12:15   ` zhanghailiang [this message]
2015-09-15 11:39   ` Amit Shah
2015-08-13 10:51 ` [Qemu-devel] [PATCH 5/5] migration: qemu-file more size_t'ifying Dr. David Alan Gilbert (git)
2015-08-13 12:15   ` zhanghailiang
2015-09-15 11:42   ` Amit Shah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55CC8A44.9010800@huawei.com \
    --to=zhang.zhanghailiang@huawei.com \
    --cc=amit.shah@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=peter.huangpeng@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.