Commit 12907efd authored by Mike Snitzer's avatar Mike Snitzer
Browse files

dm verity: have verify_wq use WQ_HIGHPRI if "try_verify_in_tasklet"



Allow verify_wq to preempt softirq since verification in tasklet will
fall-back to using it for error handling (or if the bufio cache
doesn't have required hashes).

Suggested-by: default avatarNathan Huckleberry <nhuck@google.com>
Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
parent 43fa47cb
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -1151,6 +1151,7 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
	struct dm_verity_sig_opts verify_args = {0};
	struct dm_arg_set as;
	unsigned int num;
	unsigned int wq_flags;
	unsigned long long num_ll;
	int r;
	int i;
@@ -1388,7 +1389,16 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
	}

	/* WQ_UNBOUND greatly improves performance when running on ramdisk */
	v->verify_wq = alloc_workqueue("kverityd", WQ_MEM_RECLAIM | WQ_UNBOUND, num_online_cpus());
	wq_flags = WQ_MEM_RECLAIM | WQ_UNBOUND;
	if (v->use_tasklet) {
		/*
		 * Allow verify_wq to preempt softirq since verification in
		 * tasklet will fall-back to using it for error handling
		 * (or if the bufio cache doesn't have required hashes).
		 */
		wq_flags |= WQ_HIGHPRI;
	}
	v->verify_wq = alloc_workqueue("kverityd", wq_flags, num_online_cpus());
	if (!v->verify_wq) {
		ti->error = "Cannot allocate workqueue";
		r = -ENOMEM;