On Mon, Jun 09, 2025 at 08:49:25PM -0700, Christoph Hellwig wrote: > On Mon, Jun 09, 2025 at 09:57:41AM -0700, Darrick J. Wong wrote: > > > It might also be worth stating what you don't use. One big thing > > > that springs to mind is ioends. Which are really useful if you > > > need more than one request to handle a folio, something that is > > > pretty common in network file systems. I guess you don't need > > > that for fuse? > > > > My initial thought was "I wonder if Joanne would be better off with a > > totally separate iomap_writepage_map_blocks implementation" > > I think that's basically what the patches do, right? Yes. > > since I > > *think* fuse just needs a callback from iomap to initiate FUSE_WRITE > > calls on the dirty range(s) of a folio, and then fuse can call > > mapping_set_error and iomap_finish_folio_write when those FUSE_WRITE > > calls complete. There are no bios, so I don't see much point in using > > the ioend machinery. > > Note that the mapping_set_error in iomap_writepage_map is only for > synchronous errors for mapping setup anyway, all the actual I/O error > are handled asynchronously anyway. Similar, clearing the writeback > bit only happens for synchronous erorr, or the rare case of (almost) > synchronous I/O. Heheh, my brain has gotten fuzzy on all that pagecache error handling changes over the years. --D