]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdadm: ask user if bitmap is not set
authorYu Kuai <yukuai3@huawei.com>
Mon, 2 Dec 2024 01:59:12 +0000 (09:59 +0800)
committerMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Tue, 3 Dec 2024 14:55:15 +0000 (15:55 +0100)
Instead of auto-forcing bitmap only for large arrays, it is more
reasonable to let user do the chooice if bimtap is not set.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Create.c
mdadm.c

index 140a70988c5f9afd63bb45222c483d024ae920c4..f6d14f76659d2119bf2fca81625d59fdbbccb3c5 100644 (file)
--- a/Create.c
+++ b/Create.c
@@ -949,18 +949,6 @@ int Create(struct supertype *st, struct mddev_ident *ident, int subdevs,
                }
        }
 
-       if (!s->bitmap_file &&
-           !st->ss->external &&
-           s->level >= 1 &&
-           st->ss->add_internal_bitmap &&
-           s->journaldisks == 0 &&
-           (s->consistency_policy != CONSISTENCY_POLICY_RESYNC &&
-            s->consistency_policy != CONSISTENCY_POLICY_PPL) &&
-           (s->write_behind || s->size > 100*1024*1024ULL)) {
-               if (c->verbose > 0)
-                       pr_err("automatically enabling write-intent bitmap on large array\n");
-               s->bitmap_file = "internal";
-       }
        if (s->bitmap_file && str_is_none(s->bitmap_file) == true)
                s->bitmap_file = NULL;
 
diff --git a/mdadm.c b/mdadm.c
index 8cb4ba66ac202398bfeeb864e54a87460303c590..b7bcb3368722eed80530e2de4b2f3d818217aef2 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -1535,6 +1535,14 @@ int main(int argc, char *argv[])
                        break;
                }
 
+               if (!s.bitmap_file) {
+                       if (c.runstop != 1 && s.level >= 1 &&
+                           ask("To optimalize recovery speed, it is recommended to enable write-indent bitmap, do you want to enable it now?"))
+                               s.bitmap_file = "internal";
+                       else
+                               s.bitmap_file = "none";
+               }
+
                rv = Create(ss, &ident, devs_found - 1, devlist->next, &s, &c);
                break;
        case MISC: