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_verity_sig_opts verify_args = {0};
|
||||||
struct dm_arg_set as;
|
struct dm_arg_set as;
|
||||||
unsigned int num;
|
unsigned int num;
|
||||||
|
unsigned int wq_flags;
|
||||||
unsigned long long num_ll;
|
unsigned long long num_ll;
|
||||||
int r;
|
int r;
|
||||||
int i;
|
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 */
|
/* 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) {
|
if (!v->verify_wq) {
|
||||||
ti->error = "Cannot allocate workqueue";
|
ti->error = "Cannot allocate workqueue";
|
||||||
r = -ENOMEM;
|
r = -ENOMEM;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user