mbox series

[V2,00/12] badblocks: bugfix and cleanup for badblocks

Message ID 20250227075507.151331-1-zhengqixing@huaweicloud.com (mailing list archive)
Headers show
Series badblocks: bugfix and cleanup for badblocks | expand

Message

Zheng Qixing Feb. 27, 2025, 7:54 a.m. UTC
From: Zheng Qixing <zhengqixing@huawei.com>

Hi,

during RAID feature implementation testing, we found several bugs
in badblocks.

This series contains bugfixes and cleanups for MD RAID badblocks
handling code.

V2:
        - patch 4: add a description of the issue
        - patch 5: add comment of parital setting
        - patch 6: add fix tag
        - patch 10: two code style modifications
        - patch 11: keep original functionality of rdev_clear_badblocks(),
          functionality was incorrectly modified in V1.
	- patch 1-10 and patch 12 are reviewed by Yu Kuai
	  <yukuai3@huawei.com>
	- patch 1, 3, 5, 6, 8, 9, 10, 12 are acked by Coly Li
	  <colyli@kernel.org>

Li Nan (8):
  badblocks: Fix error shitf ops
  badblocks: factor out a helper try_adjacent_combine
  badblocks: attempt to merge adjacent badblocks during
    ack_all_badblocks
  badblocks: return error directly when setting badblocks exceeds 512
  badblocks: return error if any badblock set fails
  badblocks: fix the using of MAX_BADBLOCKS
  badblocks: try can_merge_front before overlap_front
  badblocks: fix merge issue when new badblocks align with pre+1

Zheng Qixing (4):
  badblocks: fix missing bad blocks on retry in _badblocks_check()
  badblocks: return boolean from badblocks_set() and badblocks_clear()
  md: improve return types of badblocks handling functions
  badblocks: use sector_t instead of int to avoid truncation of
    badblocks length

 block/badblocks.c             | 322 +++++++++++++---------------------
 drivers/block/null_blk/main.c |  16 +-
 drivers/md/md.c               |  48 ++---
 drivers/md/md.h               |  14 +-
 drivers/md/raid1-10.c         |   2 +-
 drivers/md/raid1.c            |  10 +-
 drivers/md/raid10.c           |  14 +-
 drivers/nvdimm/badrange.c     |   2 +-
 drivers/nvdimm/nd.h           |   2 +-
 drivers/nvdimm/pfn_devs.c     |   7 +-
 drivers/nvdimm/pmem.c         |   2 +-
 include/linux/badblocks.h     |  10 +-
 12 files changed, 183 insertions(+), 266 deletions(-)