summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2008-05-27 09:18:33 +1000
committerNeil Brown <neilb@suse.de>2008-05-27 09:18:33 +1000
commit8c21018330e6adc15f347bd7c9e924866b8ca608 (patch)
tree446b39a87645a1a4f3711109ef84b2f522df9670
parent2318b9f0dc98b03d3e3374e41b2ca6f85b18f922 (diff)
downloadmdadm-8c21018330e6adc15f347bd7c9e924866b8ca608.tar.gz
mdadm-8c21018330e6adc15f347bd7c9e924866b8ca608.tar.xz
mdadm-8c21018330e6adc15f347bd7c9e924866b8ca608.zip
Alway use a unique file name for opendev
Else mdadm and mdmon running in parallel can tread on each other.
-rw-r--r--util.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/util.c b/util.c
index c627382..8e4e60d 100644
--- a/util.c
+++ b/util.c
@@ -770,7 +770,8 @@ int dev_open(char *dev, int flags)
if (e > dev && *e == ':' && e[1] &&
(minor = strtoul(e+1, &e, 0)) >= 0 &&
*e == 0) {
- snprintf(devname, sizeof(devname), "/dev/.tmp.md.%d:%d", major, minor);
+ 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);