qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.9] qga: don't fail if mount doesn't have s


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH for-2.9] qga: don't fail if mount doesn't have slave devices
Date: Thu, 30 Mar 2017 18:44:51 +0100

On 30 March 2017 at 17:54, Michael Roth <address@hidden> wrote:
> In some cases the slave devices of a virtual block device are tracked
> by the parent in the corresponding sysfs node. For instance, if we
> have a loop-back mount of the form:
>
>   /dev/loop3p1 on /home/mdroth/mnt type ext4 (rw,relatime,data=ordered)
>
> this will be reflected in sysfs as:
>
>   /sys/devices/virtual/block/loop3/
>   ...
>   /sys/devices/virtual/block/loop3/slaves
>   /sys/devices/virtual/block/loop3/loop3p1
>
> The current code however assumes the mounted virtual block device,
> loop3p1 in this case, contains the slaves directory, and reports an
> error otherwise. This breaks 'make check' in certain environments.
>
> Fix this by simply skipping attempts to generate disk topology
> information in these cases. Since this information is documented
> in QAPI as optionally-reported, this should be ok from an API
> perspective.
>
> In the future, this can possibly be improved upon by collecting
> topology information from the parent in these cases.
>
> Reported-by: Peter Maydell <address@hidden>
> Cc: Peter Maydell <address@hidden>
> Signed-off-by: Michael Roth <address@hidden>
> ---
>  qga/commands-posix.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> index 73d93eb..915df9e 100644
> --- a/qga/commands-posix.c
> +++ b/qga/commands-posix.c
> @@ -999,7 +999,9 @@ static void build_guest_fsinfo_for_virtual_device(char 
> const *syspath,
>      dirpath = g_strdup_printf("%s/slaves", syspath);
>      dir = opendir(dirpath);
>      if (!dir) {
> -        error_setg_errno(errp, errno, "opendir(\"%s\")", dirpath);
> +        if (errno != ENOENT) {
> +            error_setg_errno(errp, errno, "opendir(\"%s\")", dirpath);
> +        }
>          g_free(dirpath);
>          return;
>      }
> --
> 2.7.4

Tested-by: Peter Maydell <address@hidden>

though only confirming that the test now passes on this sparc box.

thanks
-- PMM



reply via email to

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