Index: sys/geom/geom_dev.c =================================================================== --- sys/geom/geom_dev.c +++ sys/geom/geom_dev.c @@ -111,19 +111,24 @@ "delete request sent to the provider. Larger requests are chunked " "so they can be interrupted. (0 = disable chunking)"); +static char *env_dumpdev = NULL; static char *dumpdev = NULL; static void g_dev_init(struct g_class *mp) { + static const char *devprefix = "/dev/"; - dumpdev = kern_getenv("dumpdev"); + dumpdev = env_dumpdev = kern_getenv("dumpdev"); + if (strncmp(dumpdev, devprefix, strlen(devprefix)) == 0) + dumpdev += strlen(devprefix); } static void g_dev_fini(struct g_class *mp) { - freeenv(dumpdev); + freeenv(env_dumpdev); + dumpdev = env_dumpdev = NULL; } static int @@ -158,8 +163,8 @@ if (strcmp(devtoname(dev), dumpdev) != 0) return; if (g_dev_setdumpdev(dev, curthread) == 0) { - freeenv(dumpdev); - dumpdev = NULL; + freeenv(env_dumpdev); + dumpdev = env_dumpdev = NULL; } }