On Wed, 3 Mar 2010, Anthony Liguori wrote:

> This get the mount to work on the guest
> 
> [ki...@linux.vnet.ibm.com: malloc to qemu_malloc conversion]
> 
> Signed-off-by: Anthony Liguori <aligu...@us.ibm.com>
> Signed-off-by: Gautham R Shenoy <e...@in.ibm.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.vnet.ibm.com>
> ---
>  hw/virtio-9p-local.c |    7 ++
>  hw/virtio-9p.c       |  169 
> +++++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 174 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c
> index 204437c..9752f76 100644
> --- a/hw/virtio-9p-local.c
> +++ b/hw/virtio-9p-local.c
> @@ -72,9 +72,16 @@ static int local_setuid(void *opaque, uid_t uid)
>      return 0;
>  }
>  
> +static ssize_t local_readlink(void *opaque, const char *path,
> +                           char *buf, size_t bufsz)
> +{
> +    return readlink(rpath(path), buf, bufsz);
> +}
> +
>  static V9fsPosixFileOperations ops = {
>      .lstat = local_lstat,
>      .setuid = local_setuid,
> +    .readlink = local_readlink,
>  };
>  
>  V9fsPosixFileOperations *virtio_9p_init_local(const char *path)
> diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
> index c63ac80..10bcd89 100644
> --- a/hw/virtio-9p.c
> +++ b/hw/virtio-9p.c
> @@ -102,6 +102,21 @@ static int posix_setuid(V9fsState *s, uid_t uid)
>      return s->ops->setuid(s->ops->opaque, uid);
>  }
>  
> +static ssize_t posix_readlink(V9fsState *s, V9fsString *path, V9fsString 
> *buf)
> +{
> +    ssize_t len;
> +
> +    buf->data = qemu_malloc(1024);
> +
> +    len = s->ops->readlink(s->ops->opaque, path->data, buf->data, 1024 - 1);
> +    if (len > -1) {
> +     buf->size = len;
> +     buf->data[len] = 0;
> +    }
> +
> +    return len;
> +}
> +
>  static void v9fs_string_free(V9fsString *str)
>  {
>      free(str->data);

Should be qemu_free, no?

[..snip..]

-- 
mailto:av1...@comtv.ru


Reply via email to