On 2025-01-28 10:40:09 [-1000], Tejun Heo wrote: > On Tue, Jan 28, 2025 at 09:42:26AM +0100, Sebastian Andrzej Siewior wrote: > > Using RCU lifetime rules to access kernfs_node::name can avoid the > > trouble kernfs_rename_lock in kernfs_name() and kernfs_path_from_node() > > if the fs was created with KERNFS_ROOT_INVARIANT_PARENT. This is useful > > as it allows to implement kernfs_path_from_node() only with RCU > > protection and avoiding kernfs_rename_lock. The lock is only required if > > the __parent node can be changed and the function requires an unchanged > > hierarchy while it iterates from the node to its parent. > > A short mention of how avoiding kernfs_rename_lock matters would be great - > ie. where did this show up? I extended it: | Using RCU lifetime rules to access kernfs_node::name can avoid the | trouble with kernfs_rename_lock in kernfs_name() and kernfs_path_from_node() | if the fs was created with KERNFS_ROOT_INVARIANT_PARENT. This is usefull | as it allows to implement kernfs_path_from_node() only with RCU | protection and avoiding kernfs_rename_lock. The lock is only required if | the __parent node can be changed and the function requires an unchanged | hierarchy while it iterates from the node to its parent. starting here-> | The change is needed to allow the lookup of the node's path | (kernfs_path_from_node()) from context which runs always with disabled | preemption and or interrutps even on PREEMPT_RT. The problem is that | kernfs_rename_lock becomes a sleeping lock on PREEMPT_RT. Sebastian