I see there was a submission that was done sometime ago to use workqueues and was reverted https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e03a3d7a94e2485b6e2fa3fb630b9b3a30b65718 Hence used the approach of multiple workers this way. The current change by default uses the default behaviour of 1 worker and one can program the number of workers needed as a ioctl to scale as needed. On Tue, Jan 21, 2020 at 8:01 PM Bart Van Assche <bvanassche@xxxxxxx> wrote: > > On 2020-01-21 12:10, muraliraja.muniraju wrote: > > + for (i = 0; i < lo->num_loop_workers; i++) { > > + kthread_init_worker(&(lo->workers[i])); > > + lo->worker_tasks[i] = kthread_run( > > + loop_kthread_worker_fn, &(lo->workers[i]), > > + "loop%d(%d)", lo->lo_number, i); > > + if (IS_ERR((lo->worker_tasks[i]))) > > + goto err; > > + set_user_nice(lo->worker_tasks[i], MIN_NICE); > > + } > > Unless if there is a really good reason, the workqueue mechanism should > be used instead of creating kthreads. And again unless if there is a > really good reason, one of the system workqueues (e.g. system_wq) should > be used instead of creating dedicated workqueues. > > Bart.