On Wed 25-02-26 07:20:38, Ackerley Tng wrote:
> Add .unaccount_folio callback to allow filesystems to do accounting-related
> updates to the inode or struct address_space mapping, when the folio is
> about to be removed from the filemap/page_cache.
>
> .free_folio cannot be used since .free_folio cannot assume that struct
> address_space mapping still exists.
I agree .free_folio isn't the right place.
> From the name, .invalidate_folio and .release_folio seem suitable, but
> those are meant only to handle freeing of a folio's private
> data. .release_folio is also not called in the truncation path.
But this I don't quite understand. .invalidate_folio is called when
the file is truncated (or when the whole inode is being evicted from
memory). Filesystem can do whatever it wishes there, not just free folio
private data. Are you pointing at folio_needs_release() check? But you can
mark your mappings with mapping_release_always() - it's there exactly for
such usecases... Am I missing something?
Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR