On Tue, Aug 16, 2022 at 04:14:38PM -0400, Jan Harkes wrote: > On Tue, Aug 16, 2022 at 03:35:46PM -0400, Matthew Wilcox wrote: > > fs/coda/dir.c: .iterate = coda_readdir, > > > > Would anyone notice if we broke CODA? Maintainers cc'd anyway. > > Ha, yes I think I would notice, but probably not until after the changes > got released and trickled down to the distributions ;) I'm sorry about that. I got confused with Intermezzo, which we already deleted in 2004. > So good to know in advance a change like this is coming. I'll have to > educate myself on this shared vs non-shared filldir. >From Documentation/filesystems/porting.rst: ->iterate_shared() is added; it's a parallel variant of ->iterate(). Exclusion on struct file level is still provided (as well as that between it and lseek on the same struct file), but if your directory has been opened several times, you can get these called in parallel. Exclusion between that method and all directory-modifying ones is still provided, of course. Often enough ->iterate() can serve as ->iterate_shared() without any changes - it is a read-only operation, after all. If you have any per-inode or per-dentry in-core data structures modified by ->iterate(), you might need something to serialize the access to them. If you do dcache pre-seeding, you'll need to switch to d_alloc_parallel() for that; look for in-tree examples. Old method is only used if the new one is absent; eventually it will be removed. Switch while you still can; the old one won't stay. --- That's probably the best documentation we have about it.