Messages in this thread | | | From | David Howells <> | Subject | Re: [PATCH v4 00/10] fscache: Replace and remove old I/O API | Date | Fri, 29 Oct 2021 19:51:34 +0100 |
| |
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> But: > > > However, if you would rather I just removed all of fscache and (most of[*]) > > cachefiles, that I can do. > > I assume and think that if you just do that part first, then the > "convert to netfslib" of afs and ceph at that later stage will mean > that the fallback code will never be needed?
The netfslib coversions for afs and ceph are already in your tree and I have a patch here to do that for 9p (if you're willing to take that in the upcoming merge window?).
The issue is cifs[*] and nfs. I could leave caching in those disabled, pending approved patches for those filesystems. This would mean that I wouldn't need the fallback code.
An alternative is that I could move the "fallback" code into fs/nfs/fscache.c and fs/cifs/fscache.c if that would be easier and merge it into the functions there. The problem will come when the cache wants to do I/O in larger units than page size to suit its own block size[**].
David
[*] As it happens, it turns out that cifs seems to have a bug in it that causes the entire cache for a superblock to be discarded each time that superblock is mounted.
[**] At some point the cache *has* to start keeping track of what data it is holding rather than relying on bmap/SEEK_DATA/SEEK_HOLE to get round the extent-bridging problem. I'm trying to take a leaf out of the book of other caching filesystems and use larger block sizes (e.g. 256K) to reduce the overhead of cache metadata.
| |