Re: [RFC/REFACT] Refactoring and significantly reducing code complexity

From: Steffen Klassert
Date: Mon Oct 16 2023 - 06:47:41 EST


Hi,

On Thu, Sep 28, 2023 at 04:53:38PM +0800, Wang Jinchao wrote:
> This is a refactored version with the following main changes:
>
> - The parallel workqueue no longer uses the WQ_UNBOUND attribute
> - Removal of CPU-related logic, sysfs-related interfaces
> - removal of structures like padata_cpumask, and deletion of parallel_data
> - Using completion to maintain sequencing
> - no longer using lists
> - removing structures like padata_list and padata_serial_queue
> - Removal of padata_do_serial()
> - padata automatically ensures the calling sequence.
>
> Testing was conducted using ltp's pcrypt_aead01, and the execution time
> comparison between the old and new versions is as follows:
>
> Old Version:
> real 0m27.451s
> user 0m0.031s
> sys 0m0.260s
>
> New Version:
> real 0m21.351s
> user 0m0.023s
> sys 0m0.260s
>
> Signed-off-by: Wang Jinchao <wangjinchao@xxxxxxxxxxx>
> ---
> crypto/pcrypt.c | 34 +-
> include/linux/padata.h | 95 +----
> kernel/padata.c | 815 ++---------------------------------------
> 3 files changed, 43 insertions(+), 901 deletions(-)

...

>
> -static int pcrypt_sysfs_add(struct padata_instance *pinst, const char *name)
> -{
> - int ret;
> -
> - pinst->kobj.kset = pcrypt_kset;
> - ret = kobject_add(&pinst->kobj, NULL, "%s", name);
> - if (!ret)
> - kobject_uevent(&pinst->kobj, KOBJ_ADD);
> -
> - return ret;
> -}

Users might rely on the existence of that sysfs files,
so removing this might be dangerous.

> static void padata_serial_worker(struct work_struct *serial_work)
> {
> - struct padata_serial_queue *squeue;
> - struct parallel_data *pd;
> - LIST_HEAD(local_list);
> - int cnt;
> -
> - local_bh_disable();

Note that the networking RX path must run with BHs off.
The call to padata_do_parallel might come with BHs off
and the serialization callback should also called with
BHs off.

Please make sure that the networking usecase continues
to work with that refactorization.

Thanks!