On Mon, Apr 29, 2024 at 09:24:19PM -0500, John Groves wrote: > On 24/04/29 07:08PM, Kent Overstreet wrote: > > On Mon, Apr 29, 2024 at 07:32:55PM +0100, Matthew Wilcox wrote: > > > On Mon, Apr 29, 2024 at 12:04:16PM -0500, John Groves wrote: > > > > This patch set introduces famfs[1] - a special-purpose fs-dax file system > > > > for sharable disaggregated or fabric-attached memory (FAM). Famfs is not > > > > CXL-specific in anyway way. > > > > > > > > * Famfs creates a simple access method for storing and sharing data in > > > > sharable memory. The memory is exposed and accessed as memory-mappable > > > > dax files. > > > > * Famfs supports multiple hosts mounting the same file system from the > > > > same memory (something existing fs-dax file systems don't do). > > > > > > Yes, but we do already have two filesystems that support shared storage, > > > and are rather more advanced than famfs -- GFS2 and OCFS2. What are > > > the pros and cons of improving either of those to support DAX rather > > > than starting again with a new filesystem? > > > > I could see a shared memory filesystem as being a completely different > > beast than a shared block storage filesystem - and I've never heard > > anyone talking about gfs2 or ocfs2 as codebases we particularly liked. > > Thanks for your attention on famfs, Kent. > > I think of it as a completely different beast. See my reply to Willy re: > famfs being more of a memory allocator with the benefit of allocations > being accessible (and memory-mappable) as files. That's pretty much what I expected. I would suggest talking to RDMA people; RDMA does similar things with exposing address spaces across machine, and an "external" memory allocator is a basic building block there as well - it'd be great if we could get that turned into some clean library code. GPU people as well, possibly. > The famfs user space repo has some good documentation as to the on- > media structure of famfs. Scroll down on [1] (the documentation from > the famfs user space repo). There is quite a bit of info in the docs > from that repo. Ok, looking through that now. So youv've got a metadata log; that looks more like a conventional filesystem than a conventional purely in-memory thing. But you say it's a shared filesystem, and it doesn't say anything about that. Inter node locking? Perhaps the ocfs2/gfs2 comparison is appropriate, after all.