Message ID | 20170927221317.31237-1-bo.li.liu@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Shaohua, Given it's related to md, can you please take this thru your tree? Thanks, -liubo On Wed, Sep 27, 2017 at 04:13:17PM -0600, Liu Bo wrote: > 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> > --- > block/badblocks.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block/badblocks.c b/block/badblocks.c > index 43c7116..91f7bcf 100644 > --- a/block/badblocks.c > +++ b/block/badblocks.c > @@ -178,7 +178,7 @@ int badblocks_set(struct badblocks *bb, sector_t s, int sectors, > > if (bb->shift < 0) > /* badblocks are disabled */ > - return 0; > + return 1; > > if (bb->shift) { > /* round the start down, and the end up */ > -- > 2.9.4 >
On Fri, Nov 03, 2017 at 10:13:38AM -0600, Liu Bo wrote: > Hi Shaohua, > > Given it's related to md, can you please take this thru your tree? Yes, the patch makes sense. Can you resend the patch to me? I can't find it in my inbox Thanks, Shaohua > Thanks, > > -liubo > > On Wed, Sep 27, 2017 at 04:13:17PM -0600, Liu Bo wrote: > > 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> > > --- > > block/badblocks.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/block/badblocks.c b/block/badblocks.c > > index 43c7116..91f7bcf 100644 > > --- a/block/badblocks.c > > +++ b/block/badblocks.c > > @@ -178,7 +178,7 @@ int badblocks_set(struct badblocks *bb, sector_t s, int sectors, > > > > if (bb->shift < 0) > > /* badblocks are disabled */ > > - return 0; > > + return 1; > > > > if (bb->shift) { > > /* round the start down, and the end up */ > > -- > > 2.9.4 > >
diff --git a/block/badblocks.c b/block/badblocks.c index 43c7116..91f7bcf 100644 --- a/block/badblocks.c +++ b/block/badblocks.c @@ -178,7 +178,7 @@ int badblocks_set(struct badblocks *bb, sector_t s, int sectors, if (bb->shift < 0) /* badblocks are disabled */ - return 0; + return 1; if (bb->shift) { /* round the start down, and the end up */
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> --- block/badblocks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)