summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2021-03-18 02:34:54 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2021-03-18 02:34:54 -0700
commit9278e31eba93a3fda47c81e77590656c5b8451e2 (patch)
treefe307c6b412515c04b20b8738af88b95718acf02
parent4197511bc352d71f1bc78b09e9852dd7e22bc7c7 (diff)
parent46d65055583685de8ac2ea342190e22b3e8157f5 (diff)
Merge "dm verity: skip verity work on I/O errors when system is shutting down"
-rw-r--r--drivers/md/dm-verity-target.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index ae6fd58d6349..130860714dda 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -63,6 +63,14 @@ struct dm_verity_prefetch_work {
struct buffer_aux {
int hash_verified;
};
+/*
+ * While system shutdown, skip verity work for I/O error.
+ */
+static inline bool verity_is_system_shutting_down(void)
+{
+ return system_state == SYSTEM_HALT || system_state == SYSTEM_POWER_OFF
+ || system_state == SYSTEM_RESTART;
+}
/*
* Initialize struct buffer_aux for a freshly created buffer.
@@ -509,7 +517,8 @@ static void verity_end_io(struct bio *bio)
{
struct dm_verity_io *io = bio->bi_private;
- if (bio->bi_error && !verity_fec_is_enabled(io->v)) {
+ if (bio->bi_error &&
+ (!verity_fec_is_enabled(io->v) || verity_is_system_shutting_down())) {
verity_finish_io(io, bio->bi_error);
return;
}