File 0017-config-new-option-to-suppress-adding-bad-block-lists.patch of Package mdadm.5365
From e2efe9e7bc73307f74a4c2e2197d6d4498dd46f0 Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@suse.de>
Date: Thu, 7 Aug 2014 12:23:45 +1000
Subject: [PATCH 024/359] config: new option to suppress adding bad block
lists.
References: bsc#1081910
CREATE bbl=no
in mdadm.conf will cause any devices added to an array
to not have a bad block list. By default they do for 1.x
metadata.
This is useful if you are suspicious of the bad-block-list
implementation.
Reported-by: Ethan Wilson <ethan.wilson@shiftmail.org>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Coly Li <colyli@suse.de>
---
config.c | 5 +++++
mdadm.conf.5 | 14 ++++++++++++--
mdadm.h | 1 +
super1.c | 4 ++++
4 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/config.c b/config.c
index a35807c..909f83f 100644
--- a/config.c
+++ b/config.c
@@ -187,6 +187,7 @@ struct createinfo createinfo = {
.autof = 2, /* by default, create devices with standard names */
.symlinks = 1,
.names = 0, /* By default, stick with numbered md devices. */
+ .bblist = 1, /* Use a bad block list by default */
#ifdef DEBIAN
.gid = 6, /* disk */
.mode = 0660,
@@ -306,6 +307,10 @@ static void createline(char *line)
createinfo.names = 1;
else if (strncasecmp(w, "names=no", 11) == 0)
createinfo.names = 0;
+ else if (strncasecmp(w, "bbl=no", 11) == 0)
+ createinfo.bblist = 0;
+ else if (strncasecmp(w, "bbl=yes", 11) == 0)
+ createinfo.bblist = 1;
else {
pr_err("unrecognised word on CREATE line: %s\n",
w);
diff --git a/mdadm.conf.5 b/mdadm.conf.5
index 61267b6..18512cb 100644
--- a/mdadm.conf.5
+++ b/mdadm.conf.5
@@ -293,8 +293,8 @@ line and it should be give only one program.
.B CREATE
The
.B create
-line gives default values to be used when creating arrays and device entries for
-arrays.
+line gives default values to be used when creating arrays, new members
+of arrays, and device entries for arrays.
These include:
.RS 4
@@ -365,6 +365,16 @@ is given, then non-numeric
device names will not be used even if the default changes in a future
release of
.IR mdadm .
+
+.TP
+.B bbl=no
+By default,
+.I mdadm
+will reserve space for a bad block list (bbl) on all devices
+included in or added to any array that supports them. Setting
+.B bbl=no
+will prevent this, so newly added devices will not have a bad
+block log.
.RE
.TP
diff --git a/mdadm.h b/mdadm.h
index 02a9288..dc3c107 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -258,6 +258,7 @@ struct createinfo {
int mode;
int symlinks;
int names;
+ int bblist;
struct supertype *supertype;
};
diff --git a/super1.c b/super1.c
index 7fba9be..9834594 100644
--- a/super1.c
+++ b/super1.c
@@ -1688,6 +1688,10 @@ static int write_init_super1(struct supertype *st)
rv = -EINVAL;
goto out;
}
+ if (conf_get_create_info()->bblist == 0) {
+ sb->bblog_size = 0;
+ sb->bblog_offset = 0;
+ }
sb->sb_csum = calc_sb_1_csum(sb);
rv = store_super1(st, di->fd);
--
2.16.1