]> granicus.if.org Git - zfs/commitdiff
Fix efi_get_info() zvol detection
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 13 Jun 2018 17:20:58 +0000 (10:20 -0700)
committerGitHub <noreply@github.com>
Wed, 13 Jun 2018 17:20:58 +0000 (10:20 -0700)
Partition detection for zvol devices was not working correctly
resulting inconsistent partitioning behavior when layering pools
on top of zvols.  This isn't a supported configuration but we'd
still like it to work properly.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #7624

lib/libefi/rdwr_efi.c

index 4b78cc58ea6a5b48d231c16741be848da97d66f8..08237237a9f43c62ccdf6204dfd3a066a3085caa 100644 (file)
@@ -278,8 +278,9 @@ efi_get_info(int fd, struct dk_cinfo *dki_info)
        } else if ((strncmp(dev_path, "/dev/zd", 7) == 0)) {
                strcpy(dki_info->dki_cname, "zd");
                dki_info->dki_ctype = DKC_MD;
-               rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu",
-                   dki_info->dki_dname,
+               strcpy(dki_info->dki_dname, "zd");
+               rval = sscanf(dev_path, "/dev/zd%[0-9]p%hu",
+                   dki_info->dki_dname + 2,
                    &dki_info->dki_partition);
        } else if ((strncmp(dev_path, "/dev/dm-", 8) == 0)) {
                strcpy(dki_info->dki_cname, "pseudo");