Commit 569e7859 authored by Eric Biggers's avatar Eric Biggers Committed by Mikulas Patocka
Browse files

dm-verity: consolidate the BH and normal work structs



Since each dm_verity_io is never on both the BH and normal workqueues at
the same time, there's no need for two different work_structs.  Replace
the 'bh_work' and 'work' fields with just 'work'.

Note: this is correct even though it means 'work' may be reused while
verity_bh_work() is running.  The workqueue API allows work functions to
reuse or free their work_struct, and many workqueue users rely on that.

Signed-off-by: default avatarEric Biggers <ebiggers@kernel.org>
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
parent d4880868
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -651,7 +651,7 @@ static void verity_work(struct work_struct *w)

static void verity_bh_work(struct work_struct *w)
{
	struct dm_verity_io *io = container_of(w, struct dm_verity_io, bh_work);
	struct dm_verity_io *io = container_of(w, struct dm_verity_io, work);
	int err;

	io->in_bh = true;
@@ -690,10 +690,10 @@ static void verity_end_io(struct bio *bio)
	if (static_branch_unlikely(&use_bh_wq_enabled) && io->v->use_bh_wq &&
		verity_use_bh(bytes, ioprio)) {
		if (in_hardirq() || irqs_disabled()) {
			INIT_WORK(&io->bh_work, verity_bh_work);
			queue_work(system_bh_wq, &io->bh_work);
			INIT_WORK(&io->work, verity_bh_work);
			queue_work(system_bh_wq, &io->work);
		} else {
			verity_bh_work(&io->bh_work);
			verity_bh_work(&io->work);
		}
	} else {
		INIT_WORK(&io->work, verity_work);
+0 −1
Original line number Diff line number Diff line
@@ -109,7 +109,6 @@ struct dm_verity_io {
#endif

	struct work_struct work;
	struct work_struct bh_work;

	u8 tmp_digest[HASH_MAX_DIGESTSIZE];