From 9dc7d3576a2c0be1b113088ef1841bbfe24374a6 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 7 Jan 2013 10:38:46 +1100 Subject: [PATCH] dev_open - don't bother trying map_dev map_dev can be slow, and doesn't really provide a better result than just creating a temporary device. So discard it and use mknod/open/unlink to open a major:minor device. Signed-off-by: NeilBrown --- util.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/util.c b/util.c index 70ab6f12..fc9043bf 100644 --- a/util.c +++ b/util.c @@ -882,18 +882,14 @@ int dev_open(char *dev, int flags) if (e > dev && *e == ':' && e[1] && (minor = strtoul(e+1, &e, 0)) >= 0 && *e == 0) { - char *path = map_dev(major, minor, 0); - if (path) - fd = open(path, flags); - if (fd < 0) { - snprintf(devname, sizeof(devname), "/dev/.tmp.md.%d:%d:%d", - (int)getpid(), major, minor); - if (mknod(devname, S_IFBLK|0600, makedev(major, minor)) == 0) { - fd = open(devname, flags); - unlink(devname); - } + snprintf(devname, sizeof(devname), "/dev/.tmp.md.%d:%d:%d", + (int)getpid(), major, minor); + if (mknod(devname, S_IFBLK|0600, makedev(major, minor)) == 0) { + fd = open(devname, flags); + unlink(devname); } if (fd < 0) { + /* Try /tmp as /dev appear to be read-only */ snprintf(devname, sizeof(devname), "/tmp/.tmp.md.%d:%d:%d", (int)getpid(), major, minor); if (mknod(devname, S_IFBLK|0600, makedev(major, minor)) == 0) { -- 2.39.2