]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Make "--write-mostly" effective when re-adding a device to an array.
authorNeil Brown <neilb@suse.de>
Mon, 24 Sep 2007 03:14:13 +0000 (13:14 +1000)
committerNeil Brown <neilb@suse.de>
Mon, 24 Sep 2007 03:14:13 +0000 (13:14 +1000)
Fixes Debian Bug 442874

When we discover that we can 're-add' a drive, we forget to check the
write-mostly flag.
This highlights the fact that you cannot turn 'off' the write-mostly
flag at this point.  I wonder if that is a problem...

Manage.c

index d857c99ea568c0f391c19649897d003f8dfd50fa..7a96d4509a513e9ecda638b93bb04f6baada1b0c 100644 (file)
--- a/Manage.c
+++ b/Manage.c
@@ -384,9 +384,9 @@ int Manage_subdevs(char *devname, int fd,
                                else if (osuper) {
                                        st->ss->uuid_from_super(ouuid, osuper);
                                        if (memcmp(duuid, ouuid, sizeof(ouuid))==0) {
-                                               /* look close enough for now.  Kernel
-                                                * will worry about where a bitmap
-                                                * based reconstruct is possible
+                                               /* looks close enough for now.  Kernel
+                                                * will worry about whether a bitmap
+                                                * based reconstruction is possible.
                                                 */
                                                struct mdinfo mdi;
                                                st->ss->getinfo_super(&mdi, osuper);
@@ -395,6 +395,8 @@ int Manage_subdevs(char *devname, int fd,
                                                disc.number = mdi.disk.number;
                                                disc.raid_disk = mdi.disk.raid_disk;
                                                disc.state = mdi.disk.state;
+                                               if (dv->writemostly)
+                                                       disc.state |= 1 << MD_DISK_WRITEMOSTLY;
                                                if (ioctl(fd, ADD_NEW_DISK, &disc) == 0) {
                                                        if (verbose >= 0)
                                                                fprintf(stderr, Name ": re-added %s\n", dv->devname);