Add device files created with --auto to list of known device files.
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
This commit is contained in:
parent
bd72c2b2b8
commit
173fc51539
13
mdadm.h
13
mdadm.h
|
@ -200,6 +200,19 @@ struct supertype {
|
|||
extern struct supertype *super_by_version(int vers, int minor);
|
||||
extern struct supertype *guess_super(int fd);
|
||||
|
||||
#ifdef UCLIBC
|
||||
struct FTW {};
|
||||
# define FTW_PHYS 1
|
||||
#else
|
||||
# define __USE_XOPEN_EXTENDED
|
||||
# include <ftw.h>
|
||||
# ifdef __dietlibc__
|
||||
# define FTW_PHYS 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
extern int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s);
|
||||
|
||||
|
||||
extern int Manage_ro(char *devname, int fd, int readonly);
|
||||
extern int Manage_runstop(char *devname, int fd, int runstop, int quiet);
|
||||
|
|
4
mdopen.c
4
mdopen.c
|
@ -66,6 +66,8 @@ void make_parts(char *dev, int cnt)
|
|||
mknod(name, S_IFBLK | 0600, makedev(major, minor+i));
|
||||
chown(name, stb2.st_uid, stb2.st_gid);
|
||||
chmod(name, stb2.st_mode & 07777);
|
||||
stat(name, &stb2);
|
||||
add_dev(name, &stb2, 0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -205,6 +207,8 @@ int open_mddev(char *dev, int autof)
|
|||
chown(dev, stb.st_uid, stb.st_gid);
|
||||
chmod(dev, stb.st_mode & 07777);
|
||||
}
|
||||
stat(dev, &stb);
|
||||
add_dev(dev, &stb, 0, NULL);
|
||||
make_parts(dev,autof);
|
||||
}
|
||||
}
|
||||
|
|
25
util.c
25
util.c
|
@ -313,6 +313,9 @@ struct devmap {
|
|||
int devlist_ready = 0;
|
||||
|
||||
#ifdef UCLIBC
|
||||
int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s)
|
||||
{
|
||||
}
|
||||
char *map_dev(int major, int minor)
|
||||
{
|
||||
#if 0
|
||||
|
@ -322,15 +325,19 @@ char *map_dev(int major, int minor)
|
|||
return NULL;
|
||||
}
|
||||
#else
|
||||
#define __USE_XOPEN_EXTENDED
|
||||
#include <ftw.h>
|
||||
|
||||
|
||||
#ifndef __dietlibc__
|
||||
int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s)
|
||||
#else
|
||||
int add_dev(const char *name, const struct stat *stb, int flag)
|
||||
#ifdef __dietlibc__
|
||||
int add_dev_1(const char *name, const struct stat *stb, int flag)
|
||||
{
|
||||
return add_dev(name, stb, flag, NULL);
|
||||
}
|
||||
int nftw(const char *path, int (*han)(const char *name, const struct stat *stb, int flag, struct FTW *s), int nopenfd, int flags)
|
||||
{
|
||||
ftw(path, add_dev_1, nopenfd);
|
||||
}
|
||||
#endif
|
||||
|
||||
int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s)
|
||||
{
|
||||
if ((stb->st_mode&S_IFMT)== S_IFBLK) {
|
||||
char *n = strdup(name);
|
||||
|
@ -358,11 +365,7 @@ char *map_dev(int major, int minor)
|
|||
struct devmap *p;
|
||||
char *std = NULL, *nonstd=NULL;
|
||||
if (!devlist_ready) {
|
||||
#ifndef __dietlibc__
|
||||
nftw("/dev", add_dev, 10, FTW_PHYS);
|
||||
#else
|
||||
ftw("/dev", add_dev, 10);
|
||||
#endif
|
||||
devlist_ready=1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue