|
 |
2c1b57 |
From 039df36231335fabe4da1a22fa3accb160d8bc1b Mon Sep 17 00:00:00 2001
|
|
 |
2c1b57 |
From: NeilBrown <neilb@suse.com>
|
|
 |
2c1b57 |
Date: Wed, 12 Apr 2017 16:29:04 +1000
|
|
 |
2c1b57 |
Subject: [RHEL7.5 PATCH 072/169] mdopen: use parameters/new_array to
|
|
 |
2c1b57 |
create arrays whenever possible.
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
In a sufficiently recent kernel, an md%d array can be
|
|
 |
2c1b57 |
created by writing to .../parameters/new_array.
|
|
 |
2c1b57 |
If mdadm does this consistently, then another new
|
|
 |
2c1b57 |
feature, disabling create_on_open, can be enabled.
|
|
 |
2c1b57 |
This avoids races on shutdown.
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
An added benefit of using new_array (where available)
|
|
 |
2c1b57 |
is that it allows md arrays with numbers larger than 511
|
|
 |
2c1b57 |
(e.g. md999) to be created. The old create_on_open
|
|
 |
2c1b57 |
mechanism doesn't support such devices since
|
|
 |
2c1b57 |
Commit: af5628f05db6 ("md: disable probing for md devices 512 and over.")
|
|
 |
2c1b57 |
in Linux 3.17.
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
After a few more mdadm releases it would be good to
|
|
 |
2c1b57 |
have mdadm disable create_on_open automatically.
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
Signed-off-by: NeilBrown <neilb@suse.com>
|
|
 |
2c1b57 |
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
|
 |
2c1b57 |
---
|
|
 |
2c1b57 |
mdopen.c | 12 ++++++++++++
|
|
 |
2c1b57 |
1 file changed, 12 insertions(+)
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
diff --git a/mdopen.c b/mdopen.c
|
|
 |
2c1b57 |
index fe240e5..82b97fc 100644
|
|
 |
2c1b57 |
--- a/mdopen.c
|
|
 |
2c1b57 |
+++ b/mdopen.c
|
|
 |
2c1b57 |
@@ -313,6 +313,18 @@ int create_mddev(char *dev, char *name, int autof, int trustworthy,
|
|
 |
2c1b57 |
if (n < 0)
|
|
 |
2c1b57 |
devnm[0] = 0;
|
|
 |
2c1b57 |
}
|
|
 |
2c1b57 |
+ if (num >= 0) {
|
|
 |
2c1b57 |
+ int fd;
|
|
 |
2c1b57 |
+ int n = -1;
|
|
 |
2c1b57 |
+ sprintf(devnm, "md%d", num);
|
|
 |
2c1b57 |
+ fd = open("/sys/module/md_mod/parameters/new_array", O_WRONLY);
|
|
 |
2c1b57 |
+ if (fd >= 0) {
|
|
 |
2c1b57 |
+ n = write(fd, devnm, strlen(devnm));
|
|
 |
2c1b57 |
+ close(fd);
|
|
 |
2c1b57 |
+ }
|
|
 |
2c1b57 |
+ if (n < 0)
|
|
 |
2c1b57 |
+ devnm[0] = 0;
|
|
 |
2c1b57 |
+ }
|
|
 |
2c1b57 |
if (devnm[0])
|
|
 |
2c1b57 |
;
|
|
 |
2c1b57 |
else if (num < 0) {
|
|
 |
2c1b57 |
--
|
|
 |
2c1b57 |
2.7.4
|
|
 |
2c1b57 |
|