[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC
From: |
Jes Sorensen |
Subject: |
[Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC |
Date: |
Fri, 21 Jan 2011 17:40:54 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Lightning/1.0b3pre Thunderbird/3.1.7 |
On 01/17/11 14:15, Michael Roth wrote:
> Add RPC to retrieve a guest file. This interface is intended
> for smaller reads like peeking at logs and /proc and such.
>
> Signed-off-by: Michael Roth <address@hidden>
> ---
> virtagent-server.c | 59
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 59 insertions(+), 0 deletions(-)
>
> diff --git a/virtagent-server.c b/virtagent-server.c
> index c38a9e0..af4b940 100644
> --- a/virtagent-server.c
> +++ b/virtagent-server.c
> @@ -62,12 +62,71 @@ out:
> return ret;
> }
>
> +/* RPC functions common to guest/host daemons */
> +
> +/* va_getfile(): return file contents
> + * rpc return values:
> + * - base64-encoded file contents
> + */
> +static xmlrpc_value *va_getfile(xmlrpc_env *env,
> + xmlrpc_value *params,
> + void *user_data)
> +{
> + const char *path;
> + char *file_contents = NULL;
> + char buf[VA_FILEBUF_LEN];
malloc()!
> + int fd, ret, count = 0;
> + xmlrpc_value *result = NULL;
> +
> + /* parse argument array */
> + xmlrpc_decompose_value(env, params, "(s)", &path);
> + if (env->fault_occurred) {
> + return NULL;
> + }
> +
> + SLOG("va_getfile(), path:%s", path);
> +
> + fd = open(path, O_RDONLY);
> + if (fd == -1) {
> + LOG("open failed: %s", strerror(errno));
> + xmlrpc_faultf(env, "open failed: %s", strerror(errno));
> + return NULL;
> + }
> +
> + while ((ret = read(fd, buf, VA_FILEBUF_LEN)) > 0) {
> + file_contents = qemu_realloc(file_contents, count + VA_FILEBUF_LEN);
> + memcpy(file_contents + count, buf, ret);
Sorry, I brought this up before. This realloc() stuff is a disaster
waiting to happen. Please remove it from the patch series, until you
have an implementation that copies over a page of the time.
> + count += ret;
Cheers,
Jes
- [Qemu-devel] Re: [RFC][PATCH v6 09/23] virtagent: add agent_viewfile qmp/hmp command, (continued)
[Qemu-devel] [RFC][PATCH v6 12/23] virtagent: add va.shutdown RPC, Michael Roth, 2011/01/17
[Qemu-devel] [RFC][PATCH v6 11/23] virtagent: add agent_viewdmesg qmp/hmp commands, Michael Roth, 2011/01/17
[Qemu-devel] [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Michael Roth, 2011/01/17
- [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC,
Jes Sorensen <=
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Daniel P. Berrange, 2011/01/21
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Michael Roth, 2011/01/21
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Richard W.M. Jones, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Richard W.M. Jones, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Anthony Liguori, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Richard W.M. Jones, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Anthony Liguori, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Michael Roth, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Anthony Liguori, 2011/01/24
- Re: [Qemu-devel] Re: [RFC][PATCH v6 08/23] virtagent: add va.getfile RPC, Richard W.M. Jones, 2011/01/25