Blob Blame History Raw
From: Liu Bo <bo.li.liu@oracle.com>
Date: Fri, 3 Nov 2017 11:24:44 -0600
Subject: [PATCH] badblocks: fix wrong return value in badblocks_set if
 badblocks are disabled
Git-commit: 39b4954c0a1556f8f7f1fdcf59a227117fcd8a0b
Patch-mainline: v4.15-rc1
References: git-fixes,bsc#1104967,FATE#325924

MD's rdev_set_badblocks() expects that badblocks_set() returns 1 if
badblocks are disabled, otherwise, rdev_set_badblocks() will record
superblock changes and return success in that case and md will fail to
report an IO error which it should.

This bug has existed since badblocks were introduced in commit
9e0e252a048b ("badblocks: Add core badblock management code").

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Acked-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>

---
 block/badblocks.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/block/badblocks.c
+++ b/block/badblocks.c
@@ -178,7 +178,7 @@ int badblocks_set(struct badblocks *bb,
 
 	if (bb->shift < 0)
 		/* badblocks are disabled */
-		return 0;
+		return 1;
 
 	if (bb->shift) {
 		/* round the start down, and the end up */