md: add bad block support for external metadata
authorTomasz Majchrzak <tomasz.majchrzak@intel.com>
Fri, 21 Oct 2016 14:26:57 +0000 (16:26 +0200)
committerShaohua Li <shli@fb.com>
Mon, 7 Nov 2016 23:08:20 +0000 (15:08 -0800)
commit35b785f7691aa82c4b0b262392439cfa6f22816d
tree4b2a1c50cf44346f09ce7753f3bd769c8882808c
parentb9bf33a8bd9d8c506f214543e341144cd978c13e
md: add bad block support for external metadata

Add new rdev flag which external metadata handler can use to switch
on/off bad block support. If new bad block is encountered, notify it via
rdev 'unacknowledged_bad_blocks' sysfs file. If bad block has been
cleared, notify update to rdev 'bad_blocks' sysfs file.

When bad blocks support is being removed, just clear rdev flag. It is
not necessary to reset badblocks->shift field. If there are bad blocks
cleared or added at the same time, it is ok for those changes to be
applied to the structure. The array is in blocked state and the drive
which cannot handle bad blocks any more will be removed from the array
before it is unlocked.

Simplify state_show function by adding a separator at the end of each
string and overwrite last separator with new line.

Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@intel.com>
Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: Shaohua Li <shli@fb.com>
drivers/md/md.c
drivers/md/md.h