Hello Matthew, Thanks for reviewing this, On 3/3/2023 3:14 am, Matthew Wilcox wrote: > On Thu, Mar 02, 2023 at 03:32:01PM +1100, Imran Khan wrote: >> +++ b/fs/kernfs/kernfs-internal.h >> @@ -47,6 +47,7 @@ struct kernfs_root { >> >> wait_queue_head_t deactivate_waitq; >> struct rw_semaphore kernfs_rwsem; >> + struct rw_semaphore kernfs_iattr_rwsem; >> }; >> >> /* +1 to avoid triggering overflow warning when negating it */ > > Can you explain why we want one iattr rwsem per kernfs_root instead of > one rwsem per kernfs_node? Having an iattr rwsem per kernfs_node would increase memory usage due to kobjects. I had tried per kernfs_node approach for a couple of other global locks earlier [1], but that approach was not encouraged because it would impact ability to use sysfs on low memory (especially 32 bit) systems. This was the reason for keeping iattr rwsem in kernfs_root. Thanks, Imran [1]: https://lore.kernel.org/all/YdLH6qQNxa11YmRO@xxxxxxxxx/