[PATCH 1/1] dm verity: don't verity if readahead failed

From: Wu Bo
Date: Wed Nov 01 2023 - 00:17:45 EST


If the IO is marked as readahead. When it is failed, it would better
to pass it to upper layer to handle it.

Consender the following situation:
dm-verity is built over a dm device.
'dm_submit_bio()' will return IO error when dm device is suspended.
And IO get nothing, but it will goto FEC, and trigger more IO on the
suspended device. It's a vicious circle.

Signed-off-by: Wu Bo <bo.wu@xxxxxxxx>
---
drivers/md/dm-verity-target.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index 26adcfea0302..253e65b4160e 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -667,7 +667,9 @@ static void verity_end_io(struct bio *bio)
struct dm_verity_io *io = bio->bi_private;

if (bio->bi_status &&
- (!verity_fec_is_enabled(io->v) || verity_is_system_shutting_down())) {
+ (!verity_fec_is_enabled(io->v) ||
+ verity_is_system_shutting_down() ||
+ (bio->bi_opf & REQ_RAHEAD))) {
verity_finish_io(io, bio->bi_status);
return;
}
--
2.25.1