X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=Manage.c;h=b323fd3c241b514c24a3138b7f332e09c8841fd8;hp=883509549118972559daee567730d520b8591caa;hb=d7eaf49f65ecb99e24255026331b0af7a9245cc2;hpb=b568741513da4cc6284815345473f67f7cdee1df diff --git a/Manage.c b/Manage.c index 88350954..b323fd3c 100644 --- a/Manage.c +++ b/Manage.c @@ -194,6 +194,14 @@ int Manage_subdevs(char *devname, int fd, return 1; case 'a': /* add the device - hot or cold */ + /* Make sure it isn' in use (in 2.6 or later) */ + fd = open(dv->devname, O_RDONLY|O_EXCL); + if (fd < 0) { + fprintf(stderr, Name ": Cannot open %s: %s\n", + dv->devname, strerror(errno)); + return 1; + } + close(fd); if (ioctl(fd, HOT_ADD_DISK, (unsigned long)stb.st_rdev)==0) { fprintf(stderr, Name ": hot added %s\n", dv->devname);