qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v6 7/7] exec: add parameter errp to gethugepages


From: Peter Crosthwaite
Subject: Re: [Qemu-devel] [PATCH v6 7/7] exec: add parameter errp to gethugepagesize
Date: Thu, 7 Aug 2014 21:47:06 +1000

On Thu, Aug 7, 2014 at 7:10 PM, Hu Tao <address@hidden> wrote:
> Add parameter errp to gethugepagesize thus callers can handle errors.
>
> This patch fixes a problem that if user adds a memory-backend-file
> object using object_add command, specifying a non-existing directory
> for property mem-path, qemu will core dump with message:

Same long sentence issue here,

>
>   /nonexistingdir: No such file or directory
>   Bad ram offset fffffffffffff000
>   Aborted (core dumped)
>
> with this patch, qemu reports error message like:
>
>   qemu-system-x86_64: -object 
> memory-backend-file,mem-path=/nonexistingdir,id=mem-file0,size=128M:
>   failed to stat file /nonexistingdir: No such file or directory
>
> Signed-off-by: Hu Tao <address@hidden>

Otherwise:

Reviewed-by: Peter Crosthwaite <address@hidden>

> ---
>  exec.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/exec.c b/exec.c
> index 50cd510..fdef0f7 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -996,7 +996,7 @@ void qemu_mutex_unlock_ramlist(void)
>
>  #define HUGETLBFS_MAGIC       0x958458f6
>
> -static long gethugepagesize(const char *path)
> +static long gethugepagesize(const char *path, Error **errp)
>  {
>      struct statfs fs;
>      int ret;
> @@ -1006,7 +1006,8 @@ static long gethugepagesize(const char *path)
>      } while (ret != 0 && errno == EINTR);
>
>      if (ret != 0) {
> -        perror(path);
> +        error_setg_errno(errp, errno, "failed to get page size of file %s",
> +                         path);
>          return 0;
>      }
>
> @@ -1027,9 +1028,11 @@ static void *file_ram_alloc(RAMBlock *block,
>      void *area = NULL;
>      int fd;
>      uint64_t hpagesize;
> +    Error *local_err = NULL;
>
> -    hpagesize = gethugepagesize(path);
> -    if (!hpagesize) {
> +    hpagesize = gethugepagesize(path, &local_err);
> +    if (local_err) {
> +        error_propagate(errp, local_err);
>          goto error;
>      }
>
> --
> 1.9.3
>
>



reply via email to

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