summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcem <cem@FreeBSD.org>2015-09-23 21:08:52 +0000
committercem <cem@FreeBSD.org>2015-09-23 21:08:52 +0000
commita0f74ba8d87dc37619a496eba97d41d48fc3faaf (patch)
treeb62bc5083acfdb6081bdb5cac884fa170349acab
parent8e99ed192a65bf667e183b27b80a4a88ed3ce3c8 (diff)
downloadFreeBSD-src-a0f74ba8d87dc37619a496eba97d41d48fc3faaf.zip
FreeBSD-src-a0f74ba8d87dc37619a496eba97d41d48fc3faaf.tar.gz
geom_dev: Use kenv 'dumpdev' in the same way as rc/etc.d/dumpon
Skip a /dev/ prefix, if one is present, when checking for matching device names for dump. Suggested by: avg Reviewed by: markj Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D3725
-rw-r--r--sys/geom/geom_dev.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/geom/geom_dev.c b/sys/geom/geom_dev.c
index 0d34ef5..789de4d 100644
--- a/sys/geom/geom_dev.c
+++ b/sys/geom/geom_dev.c
@@ -124,6 +124,7 @@ g_dev_fini(struct g_class *mp)
{
freeenv(dumpdev);
+ dumpdev = NULL;
}
static int
@@ -152,10 +153,16 @@ g_dev_setdumpdev(struct cdev *dev, struct thread *td)
static void
init_dumpdev(struct cdev *dev)
{
+ const char *devprefix = "/dev/", *devname;
+ size_t len;
if (dumpdev == NULL)
return;
- if (strcmp(devtoname(dev), dumpdev) != 0)
+ len = strlen(devprefix);
+ devname = devtoname(dev);
+ if (strcmp(devname, dumpdev) != 0 &&
+ (strncmp(dumpdev, devprefix, len) != 0 ||
+ strcmp(devname, dumpdev + len) != 0))
return;
if (g_dev_setdumpdev(dev, curthread) == 0) {
freeenv(dumpdev);
OpenPOWER on IntegriCloud