~ubuntu-branches/ubuntu/hardy/mdadm/hardy-updates

« back to all changes in this revision

Viewing changes to {arch}/++pristine-trees/unlocked/mdadm/mdadm--upstream/mdadm--upstream--1.12.0/pkg-mdadm-devel@lists.alioth.debian.org--2005/mdadm--upstream--1.12.0--patch-1/mdassemble.c

  • Committer: Package Import Robot
  • Author(s): Scott James Remnant
  • Date: 2006-07-11 17:23:21 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20060711172321-070tz7lox9adujtw
Tags: 2.4.1-6ubuntu1
* Merge from debian unstable, remaining changes:
  - integration with initramfs-tools,
  - autocreate devices when udev is in use,
  - use lstat in mdopen.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * mdassemble - assemble Linux "md" devices aka RAID arrays.
3
 
 *
4
 
 * Copyright (C) 2001-2002 Neil Brown <neilb@cse.unsw.edu.au>
5
 
 * Copyright (C) 2003 Luca Berra <bluca@vodka.it>
6
 
 *
7
 
 *
8
 
 *    This program is free software; you can redistribute it and/or modify
9
 
 *    it under the terms of the GNU General Public License as published by
10
 
 *    the Free Software Foundation; either version 2 of the License, or
11
 
 *    (at your option) any later version.
12
 
 *
13
 
 *    This program is distributed in the hope that it will be useful,
14
 
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 
 *    GNU General Public License for more details.
17
 
 *
18
 
 *    You should have received a copy of the GNU General Public License
19
 
 *    along with this program; if not, write to the Free Software
20
 
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21
 
 *
22
 
 *    Author: Neil Brown
23
 
 *    Email: <neilb@cse.unsw.edu.au>
24
 
 *    Paper: Neil Brown
25
 
 *           School of Computer Science and Engineering
26
 
 *           The University of New South Wales
27
 
 *           Sydney, 2052
28
 
 *           Australia
29
 
 */
30
 
 
31
 
#include "mdadm.h"
32
 
#include "md_p.h"
33
 
 
34
 
/* from readme.c */
35
 
mapping_t pers[] = {
36
 
        { "linear", -1},
37
 
        { "raid0", 0},
38
 
        { "0", 0},
39
 
        { "stripe", 0},
40
 
        { "raid1", 1},
41
 
        { "1", 1},
42
 
        { "mirror", 1},
43
 
        { "raid4", 4},
44
 
        { "4", 4},
45
 
        { "raid5", 5},
46
 
        { "5", 5},
47
 
        { "multipath", -4},
48
 
        { "mp", -4},
49
 
        { "raid6", 6},
50
 
        { "6", 6},
51
 
        { "raid10", 10},
52
 
        { "10", 10},
53
 
        { NULL, 0}
54
 
};
55
 
 
56
 
#ifndef MDASSEMBLE_AUTO
57
 
/* from mdadm.c */
58
 
int open_mddev(char *dev, int autof/*unused */)
59
 
{
60
 
        int mdfd = open(dev, O_RDWR, 0);
61
 
        if (mdfd < 0)
62
 
                fprintf(stderr, Name ": error opening %s: %s\n",
63
 
                        dev, strerror(errno));
64
 
        else if (md_get_version(mdfd) <= 0) {
65
 
                fprintf(stderr, Name ": %s does not appear to be an md device\n",
66
 
                        dev);
67
 
                close(mdfd);
68
 
                mdfd = -1;
69
 
        }
70
 
        return mdfd;
71
 
}
72
 
#endif
73
 
 
74
 
char *configfile = NULL;
75
 
int rv;
76
 
int mdfd = -1;
77
 
int runstop = 0;
78
 
int readonly = 0;
79
 
int verbose = 0;
80
 
int force = 0;
81
 
 
82
 
int main() {
83
 
        mddev_ident_t array_list =  conf_get_ident(configfile, NULL);
84
 
        if (!array_list) {
85
 
                fprintf(stderr, Name ": No arrays found in config file\n");
86
 
                rv = 1;
87
 
        } else
88
 
                for (; array_list; array_list = array_list->next) {
89
 
                        mdu_array_info_t array;
90
 
                        mdfd = open_mddev(array_list->devname, array_list->autof);
91
 
                        if (mdfd < 0) {
92
 
                                rv |= 1;
93
 
                                continue;
94
 
                        }
95
 
                        if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0)
96
 
                                /* already assembled, skip */
97
 
                                continue;
98
 
                        rv |= Assemble(array_list->devname, mdfd,
99
 
                                           array_list, configfile,
100
 
                                           NULL,
101
 
                                           readonly, runstop, NULL, verbose, force);
102
 
                }
103
 
}