From: NeilBrown Date: Sun, 6 Jan 2013 23:38:46 +0000 (+1100) Subject: dev_open - don't bother trying map_dev X-Git-Tag: mdadm-3.3-rc1~132 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9dc7d3576a2c0be1b113088ef1841bbfe24374a6;p=thirdparty%2Fmdadm.git 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 --- 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) {