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: Nathan Huckleberry <nhuck@google.com> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
This commit is contained in:
parent
43fa47cb11
commit
12907efde6
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user