Fix parse_dataset error handling
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 3 Jul 2013 16:16:46 +0000 (09:16 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 3 Jul 2013 16:20:52 +0000 (09:20 -0700)
A mount failure was accidentally introduced by commit 0c1171d
which reworked the parse_dataset() function to read pool names
from devices.  The error case where a label is read from the
device but the pool name/value pair doesn't exist was not
handled properly.  In this case we should fall back to the
previous behavior.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1560

cmd/mount_zfs/mount_zfs.c

index 27a9014..4db33ed 100644 (file)
@@ -246,11 +246,13 @@ parse_dataset(char *dataset)
 
                error = nvlist_lookup_string(config,
                    ZPOOL_CONFIG_POOL_NAME, &name);
-               if (error == 0)
+               if (error) {
+                       nvlist_free(config);
+               } else {
                        dataset = strdup(name);
-
-               nvlist_free(config);
-               return (dataset);
+                       nvlist_free(config);
+                       return (dataset);
+               }
        }
 out:
        /*