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

openSUSE Build Service is sponsored by