On Fri, Aug 15, 2025 at 11:53:16AM -0500, John Groves wrote: > On 25/08/14 04:36PM, Miklos Szeredi wrote: > > On Thu, 14 Aug 2025 at 15:36, Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > > > > I'm still hoping some common ground would benefit both interfaces. > > > Just not sure what it should be. > > > > Something very high level: > > > > - allow several map formats: say a plain one with a list of extents > > and a famfs one > > - allow several types of backing files: say regular and dax dev > > - querying maps has a common protocol, format of maps is opaque to this > > - maps are cached by a common facility > > - each type of mapping has a decoder module > > - each type of backing file has a module for handling I/O > > > > Does this make sense? > > > > This doesn't have to be implemented in one go, but for example > > GET_FMAP could be renamed to GET_READ_MAP with an added offset and > > size parameter. For famfs the offset/size would be set to zero/inf. > > I'd be content with that for now. > > Maybe GET_FILE_MAP or GET_FILE_IOMAP if we want to keep overloading > the term iomap. Maps are to backing-dev for regular file systems, > and to device memory (devdax) for famfs - in all cases both read > and write (when write is allowed). The calling model for fuse-iomap is the same as fs/iomap -- there's an IOMAP_BEGIN upcall to get a mapping from the filesystem, and an IOMAP_END upcall to tell the fuse server whatever it did with the mapping. Some filesystems will reserve delayed allocation reservations in iomap_begin for a pagecache write, and need to cancel those reservations if the write fails. For a pagecache write you need both a read and a write mapping because the caller's file range isn't guaranteed to be fsblock-aligned. famfs mappings are a subcase of iomappings -- the read & write mappings are the same, and they're always FUSE_IOMAP_TYPE_MAPPED. IOWs, I don't want "GET_FILE_IOMAP" because that's not how iomap works. (There's a separate FUSE_IOMAP_IOEND to pass along IO completions from storage) Given that famfs just calls dax_iomap_rw with an iomap_ops struct, I seriously wonder if I should just wire up fsdax for RFC v5 and then let's see how much code famfs actually needs on top of that. --D > Thanks, > John > >