extern struct mdstat_ent *mdstat_read(int hold, int start);
extern void free_mdstat(struct mdstat_ent *ms);
extern void mdstat_wait(int seconds);
-extern void mdstat_wait_fd(int fd);
+extern void mdstat_wait_fd(int fd, const sigset_t *sigmask);
extern int mddev_busy(int devnum);
struct map_ent {
/* extra stuff used by mdmon */
struct active_array *arrays;
- int devfd;
int sock; /* listen to external programs */
int mgr_pipe[2]; /* communicate between threads */
int mon_pipe[2]; /* communicate between threads */
* external:/md0/12
*/
int devcnt;
+ char *device_name; /* e.g. /dev/md/whatever */
struct mdinfo *devs;
extern int get_mdp_major(void);
extern int dev_open(char *dev, int flags);
+extern int open_dev_excl(int devnum);
extern int is_standard(char *dev, int *nump);
extern int parse_auto(char *str, char *msg, int config);
char *chosen_name, int parts);
extern int open_container(int fd);
+extern int mdmon_running(int devnum);
+extern int signal_mdmon(int devnum);
+
extern char *devnum2devname(int num);
extern int fd2devnum(int fd);
+static inline int dev2major(int d)
+{
+ if (d >= 0)
+ return MD_MAJOR;
+ else
+ return get_mdp_major();
+}
+
+static inline int dev2minor(int d)
+{
+ if (d >= 0)
+ return d;
+ return (-1-d) << MdpMinorShift;
+}
+
#define LEVEL_MULTIPATH (-4)
#define LEVEL_LINEAR (-1)
#define LEVEL_FAULTY (-5)