Hi all, this series adds a new configurable block error injection facility. We already have a few to inject block errors, but unfortunately most of them are either not very useful or hard to use, or both:
- The fail_make_request failure injection point can't distinguish different commands, different ranges in the file and can only injection plain I/O errors. - the should_fail_bio 'dynamic' failure injection has all the same issues as fail_make_request - dm-error can only fail all command in the table using BLK_STS_IOERR and requires setting up a new block device - dm-flakey and dm-dust allow all kinds of configurability, but still don't have good error selection, no good support for non-read/write commands and are limited to the dm table alignment requirements, which for zoned devices enforces setting them up for an entire zone. They also once again require setting up a stacked block device, which is really annoying in harnesses like xfstests This series adds a new debugfs-based block layer error injection that allows to configure what operations and ranges the injection applied to, and what status to return. It also allows to configure a failure ratio similar to the xfs errortag injection. As part of this the should_fail_bio is removed, as the should_fail_bio function really gets in the way in it's current form, and the injection of an errno which always gets turned into BLK_STS_IOERR doesn't make much sense. This required adjusting the bpf test suite as it attached to this function as it assumed it to be present. Diffstat: Documentation/block/error-injection.rst | 59 ++ Documentation/block/index.rst | 1 block/Kconfig | 6 block/Makefile | 1 block/blk-core.c | 128 ++--- block/blk-merge.c | 5 block/blk-mq.c | 3 block/blk-sysfs.c | 4 block/blk.h | 24 block/error-injection.c | 329 +++++++++++++ block/genhd.c | 4 include/linux/blk_types.h | 2 include/linux/blkdev.h | 5 lib/Kconfig.debug | 6 tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 7 15 files changed, 507 insertions(+), 77 deletions(-)
