On Thu, Jan 14, 2021 at 10:45:06AM +0000, David Howells wrote: > However, there've been some objections to the approach I've taken to > implementing this. The way I've done it is to disable the use of fscache by > the five network filesystems that use it, remove much of the old code, put in > the reimplementation, then cut the filesystems over. I.e. rip-and-replace. > It leaves unported filesystems unable to use it - but three of the five are > done (afs, ceph, nfs), and I've supplied partially-done patches for the other > two (9p, cifs). > > It's been suggested that it's too hard to review this way and that either I > should go for a gradual phasing in or build the new one in parallel. The > first is difficult because I want to change how almost everything in there > works - but the parts are tied together; the second is difficult because there > are areas that would *have* to overlap (the UAPI device file, the cache > storage, the cache size limits and at least some state for managing these), so > there would have to be interaction between the two variants. One refinement > of the latter would be to make the two implementations mutually exclusive: you > can build one or the other, but not both. My reservation with "build fscache2" is that it's going to take some time to do, and I really want rid of ->readpages as soon as possible. What I'd like to see is netfs_readahead() existing as soon as possible, built on top of the current core. Then filesystems can implement netfs_read_request_ops one by one, and they become insulated from the transition.