diff options
Diffstat (limited to 'drivers/md/dm-verity-target.c')
-rw-r--r-- | drivers/md/dm-verity-target.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c index e8437ea49e8e67..63b588541496b0 100644 --- a/drivers/md/dm-verity-target.c +++ b/drivers/md/dm-verity-target.c @@ -728,7 +728,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; } @@ -890,6 +892,9 @@ static void verity_status(struct dm_target *ti, status_type_t type, DMEMIT("%02x", v->salt[x]); if (v->mode != DM_VERITY_MODE_EIO) args++; + if (v->error_behavior >= DM_VERITY_ERROR_BEHAVIOR_EIO && + v->error_behavior <= DM_VERITY_ERROR_BEHAVIOR_NOTIFY) + args += 2; if (verity_fec_is_enabled(v)) args += DM_VERITY_OPTS_FEC; if (v->zero_digest) @@ -917,6 +922,9 @@ static void verity_status(struct dm_target *ti, status_type_t type, BUG(); } } + if (v->error_behavior >= DM_VERITY_ERROR_BEHAVIOR_EIO && + v->error_behavior <= DM_VERITY_ERROR_BEHAVIOR_NOTIFY) + DMEMIT(" " DM_VERITY_OPT_ERROR_BEHAVIOR " %d", v->error_behavior); if (v->zero_digest) DMEMIT(" " DM_VERITY_OPT_IGN_ZEROES); if (v->validated_blocks) |