diff options
author | Neil Brown <neilb@suse.de> | 2006-12-21 17:10:52 +1100 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-12-21 17:10:52 +1100 |
commit | 8382f19bdcc6d2d1de92154e11129acdcaab10fa (patch) | |
tree | 3b3c93a6ad6189d6354de81714fc8959de8378f5 /Manage.c | |
parent | 350f29f90d1f6bb3ddfafea368327911f9e8b27c (diff) | |
download | mdadm-8382f19bdcc6d2d1de92154e11129acdcaab10fa.tar.gz mdadm-8382f19bdcc6d2d1de92154e11129acdcaab10fa.tar.xz mdadm-8382f19bdcc6d2d1de92154e11129acdcaab10fa.zip |
Add new mode: --incremental
--incremental allows arrays to be assembled one device at a time.
This is expected to be used with udev.
Diffstat (limited to 'Manage.c')
-rw-r--r-- | Manage.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -106,7 +106,11 @@ int Manage_runstop(char *devname, int fd, int runstop, int quiet) devname, strerror(errno)); return 1; } + if (quiet <= 0) + fprintf(stderr, Name ": started %s\n", devname); } else if (runstop < 0){ + struct map_ent *map = NULL; + struct stat stb; if (ioctl(fd, STOP_ARRAY, NULL)) { if (quiet==0) fprintf(stderr, Name ": fail to stop array %s: %s\n", @@ -115,6 +119,16 @@ int Manage_runstop(char *devname, int fd, int runstop, int quiet) } if (quiet <= 0) fprintf(stderr, Name ": stopped %s\n", devname); + if (fstat(fd, &stb) == 0) { + int devnum; + if (major(stb.st_rdev) == MD_MAJOR) + devnum = minor(stb.st_rdev); + else + devnum = -1-(minor(stb.st_rdev)>>6); + map_delete(&map, devnum); + map_write(map); + map_free(map); + } } return 0; } |