I just found it weird that there is a proprietary implementation of a linked list while surely the kernel already offers well established data structures. IMO, the current code is a bit hard to understand, especially the addition of a new struct to the list in the line "*p = fs" after find_filesystem returned the last member. Correct, I'm not familiar with all the use cases of the code. I'm not sure that XArray is a good choice since there is no notion of an index attached to the pointer, it's really just a linked list of pointers. Tell me if you think there is any way to improve my suggestion. Thanks for you attention. On Sat, May 4, 2019 at 4:45 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > On Sat, May 04, 2019 at 05:45:48AM -0400, Carmeli Tamir wrote: > > Changed file_system_type next field to list_head and refactored > > the code to use list.h functions. > > What might be interesting is getting rid of this list and using an XArray > instead. This would be a more in-depth change; getting rid of the rwlock > in favour of using RCU accesses for the read-side and the xa_lock for > write accesses to the filesystem list.