summaryrefslogtreecommitdiffstats
path: root/mdopen.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-05-26 01:40:53 +0000
committerNeil Brown <neilb@suse.de>2006-05-26 01:40:53 +0000
commite7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d (patch)
treef4a8fbc18ab7fb30698f8179b938dcb527d41f81 /mdopen.c
parentda6b5ca9bd6962ea70dfa750f3d85ac1657fb9cf (diff)
downloadmdadm-e7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d.tar.gz
mdadm-e7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d.tar.xz
mdadm-e7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d.zip
Choose better devnumbers and tidy up some issues with finding names.
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'mdopen.c')
-rw-r--r--mdopen.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/mdopen.c b/mdopen.c
index b6dbbe9..5cca179 100644
--- a/mdopen.c
+++ b/mdopen.c
@@ -183,7 +183,10 @@ int open_mddev(char *dev, int autof)
if (num < 0) {
/* need to pick an unused number */
mdlist = mdstat_read(0, 0);
- for (num = 0 ; ; num++) {
+ /* Choose a large number. Start from 127 and search down,
+ * but if nothing is found, start really big
+ */
+ for (num = 127 ; num != 128 ; num = num ? num-1 : (1<<22)-1) {
struct mdstat_ent *me;
int devnum = num;
if (major != MD_MAJOR)
@@ -193,7 +196,7 @@ int open_mddev(char *dev, int autof)
if (me->devnum == devnum)
break;
if (!me) {
- /* doesn't exist if mdstat.
+ /* doesn't exist in mdstat.
* make sure it is new to /dev too
*/
char *dn;