aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/udev/zvol_id.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/openzfs/udev/zvol_id.c')
-rw-r--r--sys/contrib/openzfs/udev/zvol_id.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/contrib/openzfs/udev/zvol_id.c b/sys/contrib/openzfs/udev/zvol_id.c
index 5960b978787a..609349594767 100644
--- a/sys/contrib/openzfs/udev/zvol_id.c
+++ b/sys/contrib/openzfs/udev/zvol_id.c
@@ -51,7 +51,7 @@ const char *__asan_default_options(void) {
int
main(int argc, const char *const *argv)
{
- if (argc != 2) {
+ if (argc != 2 || strncmp(argv[1], "/dev/zd", 7) != 0) {
fprintf(stderr, "usage: %s /dev/zdX\n", argv[0]);
return (1);
}
@@ -72,9 +72,10 @@ main(int argc, const char *const *argv)
return (1);
}
- unsigned int dev_part = minor(sb.st_rdev) % ZVOL_MINORS;
- if (dev_part != 0)
- sprintf(zvol_name + strlen(zvol_name), "-part%u", dev_part);
+ const char *dev_part = strrchr(dev_name, 'p');
+ if (dev_part != NULL) {
+ sprintf(zvol_name + strlen(zvol_name), "-part%s", dev_part + 1);
+ }
for (size_t i = 0; i < strlen(zvol_name); ++i)
if (isblank(zvol_name[i]))