diff options
author | Bill Nottingham <notting@redhat.com> | 2008-05-05 19:44:01 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-05-05 19:44:01 +1000 |
commit | 62552fdfccf7db17edb136e504703e6b18cec72a (patch) | |
tree | 864cea076e7945a5a33990bf5ceb19709fa444a1 | |
parent | 02b76eeacee92c83c94f66350bf66c80b4c4317e (diff) | |
download | mdadm-62552fdfccf7db17edb136e504703e6b18cec72a.tar.gz mdadm-62552fdfccf7db17edb136e504703e6b18cec72a.tar.xz mdadm-62552fdfccf7db17edb136e504703e6b18cec72a.zip |
Create /dev/md if needed and it doesn't exist.
From: Bill Nottingham <notting@redhat.com>
-rw-r--r-- | mdopen.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -333,6 +333,20 @@ int open_mddev_devnum(char *devname, int devnum, char *name, char *chosen_name) return -1; } } else { + /* special case: if --incremental is suggesting a name + * in /dev/md/, we make sure the directory exists. + */ + if (strncmp(chosen_name, "/dev/md/", 8) == 0) { + struct createinfo *ci = conf_get_create_info(); + if (mkdir("/dev/md",0700)==0) { + if (chown("/dev/md", ci->uid, ci->gid)) + perror("chown /dev/md"); + if (chmod("/dev/md", ci->mode| + ((ci->mode>>2) & 0111))) + perror("chmod /dev/md"); + } + } + if (mknod(chosen_name, S_IFBLK | 0600, makedev(major_num, minor_num)) != 0) { return -1; |