Re: [PATCH v2 0/6] Enhance union-find with KUnit tests and optimization improvements

From: Waiman Long
Date: Wed Oct 09 2024 - 10:54:28 EST


On 10/9/24 10:13 AM, Kuan-Wei Chiu wrote:
On Wed, Oct 09, 2024 at 02:09:51AM -0700, Christoph Hellwig wrote:
On Mon, Oct 07, 2024 at 11:28:27PM +0800, Kuan-Wei Chiu wrote:
This patch series adds KUnit tests for the union-find implementation
and optimizes the path compression in the uf_find() function to achieve
a lower tree height and improved efficiency. Additionally, it modifies
uf_union() to return a boolean value indicating whether a merge
occurred, enhancing the process of calculating the number of groups in
the cgroup cpuset.
Given that this fairly special union find code is obly used in the
cpuset code, please move the code there rather adding more exports.
Even as-is it is bloating every kernel build even without cgroups
for no good reason.

I noticed that it was Michal who originally suggested putting the
union-find code to lib/ in an earlier email thread [1]. Before I send a v3
patch moving it to cpuset, I'd like to hear Michal, Tejun, and Waiman’s
thoughts on this change.

[1]: https://lore.kernel.org/lkml/wu4m2m5igc752s5vrmtsnd7ekaq6opeqdtrzegs7oxlwgypdcx@qhcnow5txxiv/

Regards,
Kuan-Wei

The current union_find code is pretty small. Putting it there in lib allows it to be used by other kernel subsystems when needed. I believe it should stay in lib. If a slight increase in kernel size is a concern, we can update the Makefile to make its build depend on CONFIG_CPUSETS which can be taken out when it is being used by another kernel subsystem.

Cheers,
Longman