From 232dd8b956703bcc774524e78110d13de93dd5bd Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 13 Jun 2018 10:20:58 -0700 Subject: [PATCH] Fix efi_get_info() zvol detection 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 Signed-off-by: Brian Behlendorf Closes #7624 --- lib/libefi/rdwr_efi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/libefi/rdwr_efi.c b/lib/libefi/rdwr_efi.c index 4b78cc58ea..08237237a9 100644 --- a/lib/libefi/rdwr_efi.c +++ b/lib/libefi/rdwr_efi.c @@ -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");