Merge branch 'master' into devel-3.0
Conflicts: super0.c super1.c
This commit is contained in:
commit
3b435195fc
10
Manage.c
10
Manage.c
|
@ -441,11 +441,15 @@ int Manage_subdevs(char *devname, int fd,
|
|||
} else {
|
||||
j = 0;
|
||||
|
||||
if (stat(dv->devname, &stb)) {
|
||||
tfd = dev_open(dv->devname, O_RDONLY);
|
||||
if (tfd < 0 || fstat(tfd, &stb) != 0) {
|
||||
fprintf(stderr, Name ": cannot find %s: %s\n",
|
||||
dv->devname, strerror(errno));
|
||||
if (tfd >= 0)
|
||||
close(tfd);
|
||||
return 1;
|
||||
}
|
||||
close(tfd);
|
||||
if ((stb.st_mode & S_IFMT) != S_IFBLK) {
|
||||
fprintf(stderr, Name ": %s is not a "
|
||||
"block device.\n",
|
||||
|
@ -467,7 +471,7 @@ int Manage_subdevs(char *devname, int fd,
|
|||
return 1;
|
||||
}
|
||||
/* Make sure it isn't in use (in 2.6 or later) */
|
||||
tfd = open(dv->devname, O_RDONLY|O_EXCL|O_DIRECT);
|
||||
tfd = dev_open(dv->devname, O_RDONLY|O_EXCL|O_DIRECT);
|
||||
if (tfd < 0) {
|
||||
fprintf(stderr, Name ": Cannot open %s: %s\n",
|
||||
dv->devname, strerror(errno));
|
||||
|
@ -623,7 +627,7 @@ int Manage_subdevs(char *devname, int fd,
|
|||
int dfd;
|
||||
if (dv->writemostly == 1)
|
||||
disc.state |= 1 << MD_DISK_WRITEMOSTLY;
|
||||
dfd = open(dv->devname, O_RDWR | O_EXCL|O_DIRECT);
|
||||
dfd = dev_open(dv->devname, O_RDWR | O_EXCL|O_DIRECT);
|
||||
if (tst->ss->add_to_super(tst, &disc, dfd,
|
||||
dv->devname)) {
|
||||
close(dfd);
|
||||
|
|
19
Monitor.c
19
Monitor.c
|
@ -480,16 +480,25 @@ int Monitor(mddev_dev_t devlist,
|
|||
}
|
||||
}
|
||||
if (dev > 0) {
|
||||
if (ioctl(fd2, HOT_REMOVE_DISK,
|
||||
(unsigned long)dev) == 0) {
|
||||
if (ioctl(fd1, HOT_ADD_DISK,
|
||||
(unsigned long)dev) == 0) {
|
||||
struct mddev_dev_s devlist;
|
||||
char devname[20];
|
||||
devlist.next = NULL;
|
||||
devlist.used = 0;
|
||||
devlist.re_add = 0;
|
||||
devlist.writemostly = 0;
|
||||
devlist.devname = devname;
|
||||
sprintf(devname, "%d:%d", major(dev), minor(dev));
|
||||
|
||||
devlist.disposition = 'r';
|
||||
if (Manage_subdevs(st2->devname, fd2, &devlist, -1) == 0) {
|
||||
devlist.disposition = 'a';
|
||||
if (Manage_subdevs(st->devname, fd1, &devlist, -1) == 0) {
|
||||
alert("MoveSpare", st->devname, st2->devname, mailaddr, mailfrom, alert_cmd, dosyslog);
|
||||
close(fd1);
|
||||
close(fd2);
|
||||
break;
|
||||
}
|
||||
else ioctl(fd2, HOT_ADD_DISK, (unsigned long) dev);
|
||||
else Manage_subdevs(st2->devname, fd2, &devlist, -1);
|
||||
}
|
||||
}
|
||||
close(fd1);
|
||||
|
|
Loading…
Reference in New Issue