On 25/08/14 03:58PM, Miklos Szeredi wrote: > On Thu, 3 Jul 2025 at 20:54, John Groves <j...@groves.net> wrote: > > > > * The new GET_DAXDEV message/response is enabled > > * The command it triggered by the update_daxdev_table() call, if there > > are any daxdevs in the subject fmap that are not represented in the > > daxdev_dable yet. > > This is rather convoluted, the server *should know* which dax devices > it has registered, hence it shouldn't need to be explicitly asked.
That's not impossible, but it's also a bit harder than the current approach for the famfs user space - which I think would need to become stateful as to which daxdevs had been pushed into the kernel. The famfs user space is as unstateful as possible ;) > > And there's already an API for registering file descriptors: > FUSE_DEV_IOC_BACKING_OPEN. Is there a reason that interface couldn't > be used by famfs? FUSE_DEV_IOC_BACKING_OPEN looks pretty specific to passthrough. The procedure for opening a daxdev is stolen from the way xfs does it in fs-dax mode. It calls fs_dax_get() rather then open(), and passes in 'famfs_fuse_dax_holder_ops' to 1) effect exclusivity, and 2) receive callbacks in the event of memory errors. See famfs_fuse_get_daxdev()... A *similar* ioctl could be added to push in a daxdev, but that would still add statefulness that isn't required in the current implementation. I didn't go there because there are so few IOCTLs currently (the overall model is more 'pull' than 'push'). Keep in mind that the baseline case with famfs will be files that are interleaved across strips from many daxdevs. We commonly create files that are striped across 16 daxdevs, selected at random from a significantly larger pool. Because interleaving is essential to memory performance... There is no "device mapper" analog for memory, so famfs really does have to span daxdevs. As Darrick commented somewhere, famfs fmaps do repeating patterns well (i.e. striping)... I think there is a certain elegance to the current approach, but if you feel strongly I will change it. Thanks! John