On Wed, Mar 02, 2016 at 02:45:04PM +0100, Pino Toscano wrote:
 If there are no labels set for the disks, the directory with the
 symlinks will not even exists, causing list-disk-labels to fail with
 ENOENT.  In this situation, act as if the directory was there, but
 empty.
 ---
  daemon/devsparts.c   |  7 +++++++
  generator/actions.ml | 12 ++++++++++++
  2 files changed, 19 insertions(+)
 
 diff --git a/daemon/devsparts.c b/daemon/devsparts.c
 index 7b92bf6..7c690f8 100644
 --- a/daemon/devsparts.c
 +++ b/daemon/devsparts.c
 @@ -316,6 +316,13 @@ do_list_disk_labels (void)
  
    dir = opendir (GUESTFSDIR);
    if (!dir) {
 +    if (errno == ENOENT) {
 +      /* The directory does not exist, and usually this happens when
 +       * there are no labels set.  In this case, act as if the directory
 +       * was empty.
 +       */
 +      return empty_list ();
 +    }
      reply_with_perror ("opendir: %s", GUESTFSDIR);
      return NULL;
    }
 diff --git a/generator/actions.ml b/generator/actions.ml
 index 9c34463..287d7f5 100644
 --- a/generator/actions.ml
 +++ b/generator/actions.ml
 @@ -11336,6 +11336,18 @@ silently create an ext2 filesystem instead." };
      name = "list_disk_labels"; added = (1, 19, 49);
      style = RHashtable "labels", [], [];
      proc_nr = Some 369;
 +    tests = [
 +      (* The test disks have no labels, so we can be sure there are
 +       * no labels.  See in tests/disk-labels/ for tests checking
 +       * for actual disk labels.
 +       *
 +       * Also, we make use of the assumption that RHashtable is a
 +       * char*[] in C, so an empty hash has just a NULL element.
 +       *)
 +      InitScratchFS, Always, TestResult (
 +        [["list_disk_labels"]],
 +        "is_string_list (ret, 0)"), [];
 +    ];
      shortdesc = "mapping of disk labels to devices";
      longdesc = "\
  If you add drives using the optional C<label> parameter
 --  
ACK.
Rich.
-- 
Richard Jones, Virtualization Group, Red Hat 
http://people.redhat.com/~rjones
Read my programming and virtualization blog: 
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html