On Wed, Jun 08, 2022 at 11:59:31AM +0200, David Hildenbrand wrote: > On 07.06.22 21:21, Matthew Wilcox wrote: > > On Tue, Jun 07, 2022 at 03:24:15PM +0100, Matthew Wilcox wrote: > >> On Tue, Jun 07, 2022 at 09:36:21AM +0200, David Hildenbrand wrote: > >>> On 06.06.22 22:40, Matthew Wilcox (Oracle) wrote: > >>>> const struct address_space_operations balloon_aops = { > >>>> - .migratepage = balloon_page_migrate, > >>>> + .migrate_folio = balloon_migrate_folio, > >>>> .isolate_page = balloon_page_isolate, > >>>> .putback_page = balloon_page_putback, > >>>> }; > >>> > >>> I assume you're working on conversion of the other callbacks as well, > >>> because otherwise, this ends up looking a bit inconsistent and confusing :) > >> > >> My intention was to finish converting aops for the next merge window. > >> > >> However, it seems to me that we goofed back in 2016 by merging > >> commit bda807d44454. isolate_page() and putback_page() should > >> never have been part of address_space_operations. > >> > >> I'm about to embark on creating a new migrate_operations struct > >> for drivers to use that contains only isolate/putback/migrate. > >> No filesystem uses isolate/putback, so those can just be deleted. > >> Both migrate_operations & address_space_operations will contain a > >> migrate callback. > > That makes sense to me. I wonder if there was a design > decision/discussion behind that. CCing Rafael. > None that I recollect. If memory still serves me, I think the idea behind bda807d44454 and friends was to provide a generic way to allow page mobility for drivers without adding complexity to the page isolation / putback paths, and since the migration callback was already part of the aops struct those new callbacks just followed suit. -- Rafael