On Fri, Nov 22, 2024 at 09:29:39AM -0800, Elliot Berman wrote: > A few near-term features are coming to guest_memfd which make sense to > create a built-in library. You haven't created a library, you've created a middle-layer. This file primarily consists of functions which redispatch to a function pointer. I think you'd be better off creating a library! That is, have the consumers register their own address_space_operations and have functions in this library which provide useful implementations. That's, eg, how iomap works: const struct address_space_operations xfs_address_space_operations = { .read_folio = xfs_vm_read_folio, .readahead = xfs_vm_readahead, .writepages = xfs_vm_writepages, .dirty_folio = iomap_dirty_folio, .release_folio = iomap_release_folio, .invalidate_folio = iomap_invalidate_folio, .bmap = xfs_vm_bmap, .migrate_folio = filemap_migrate_folio, .is_partially_uptodate = iomap_is_partially_uptodate, .error_remove_folio = generic_error_remove_folio, .swap_activate = xfs_iomap_swapfile_activate, }; Some of these functions are xfs specific, some are iomap specific and some are the generic VFS implementations.