On Thu, Dec 19, 2024 at 05:29:08PM +0100, David Hildenbrand wrote: [...] > > > > If you check the code just above this patch, this > > mapping_writeback_indeterminate() check only happen for pages under > > writeback which is a temp state. Anyways, fuse folios should not be > > unmovable for their lifetime but only while under writeback which is > > same for all fs. > > But there, writeback is expected to be a temporary thing, not possibly: > "AS_WRITEBACK_INDETERMINATE", that is a BIG difference. > > I'll have to NACK anything that violates ZONE_MOVABLE / ALLOC_CMA > guarantees, and unfortunately, it sounds like this is the case here, unless > I am missing something important. > It might just be the name "AS_WRITEBACK_INDETERMINATE" is causing the confusion. The writeback state is not indefinite. A proper fuse fs, like anyother fs, should handle writeback pages appropriately. These additional checks and skips are for (I think) untrusted fuse servers. Personally I think waiting indefinitely on writeback, particularly for sync compaction, should be fine but fuse maintainers want to avoid scenarios where an untrusted fuse server can force such stalls in other jobs. Yes, this will not solve the untrusted fuse server causing fragmentation issue but that is the risk of running untrusted fuse server, IMHO.