X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=lib%2Flibzfs%2Flibzfs_util.c;h=982a6f05fd97d87fea28ad1bec6b83208f42a34c;hb=6a0936babc14a44986265a12f206c41999bd48c3;hp=5f6763c49010ae2c126b55a82d0c4834954f2543;hpb=3132cb397ad1b60cac548b35ad8bbd4c7183fde4;p=zfs.git diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c index 5f6763c..982a6f0 100644 --- a/lib/libzfs/libzfs_util.c +++ b/lib/libzfs/libzfs_util.c @@ -821,16 +821,29 @@ int zfs_resolve_shortname(const char *name, char *path, size_t pathlen) { int i, err; - char dirs[5][9] = {"by-id", "by-label", "by-path", "by-uuid", "zpool"}; + char dirs[6][9] = {"by-id", "by-label", "by-path", "by-uuid", "zpool", + "by-vdev"}; + /* /dev/ */ (void) snprintf(path, pathlen, "%s/%s", DISK_ROOT, name); err = access(path, F_OK); - for (i = 0; i < 5 && err < 0; i++) { + if (err == 0) + return (err); + + /* /dev/mapper/ */ + (void) snprintf(path, pathlen, "%s/mapper/%s", DISK_ROOT, name); + err = access(path, F_OK); + if (err == 0) + return (err); + + /* /dev/disk// */ + for (i = 0; i < 6 && err < 0; i++) { (void) snprintf(path, pathlen, "%s/%s/%s", UDISK_ROOT, dirs[i], name); err = access(path, F_OK); } - return err; + + return (err); } /*