Re: [PATCH 1/3] mm: Don't blindly assign fallback_migrate_page()
From: Michal Hocko
Date: Fri Jun 17 2016 - 12:28:12 EST
On Fri 17-06-16 09:41:38, Richard Weinberger wrote:
> Andrew,
>
> Am 17.06.2016 um 01:11 schrieb Andrew Morton:
> > On Thu, 16 Jun 2016 23:26:13 +0200 Richard Weinberger <richard@xxxxxx> wrote:
> >
> >> While block oriented filesystems use buffer_migrate_page()
> >> as page migration function other filesystems which don't
> >> implement ->migratepage() will automatically get fallback_migrate_page()
> >> assigned. fallback_migrate_page() is not as generic as is should
> >> be. Page migration is filesystem specific and a one-fits-all function
> >> is hard to achieve. UBIFS leaned this lection the hard way.
> >> It uses various page flags and fallback_migrate_page() does not
> >> handle these flags as UBIFS expected.
> >>
> >> To make sure that no further filesystem will get confused by
> >> fallback_migrate_page() disable the automatic assignment and
> >> allow filesystems to use this function explicitly if it is
> >> really suitable.
> >
> > hm, is there really much point in doing this? I assume it doesn't
> > actually affect any current filesystems?
>
> Well, we simply don't know which filesystems are affected by similar issues.
But doesn't this disable the page migration and so potentially reduce
the compaction success rate for the large pile of filesystems? Without
any hint about that?
$ git grep "\.migratepage[[:space:]]*=" -- fs | wc -l
16
out of
$ git grep "struct address_space_operations[[:space:]]*[a-zA-Z0-9_]*[[:space:]]*=" -- fs | wc -l
87
That just seems to be too conservative for something that even not might
be a problem, especially when considering the fallback migration code is
there for many years with only UBIFS seeing a problem.
Wouldn't it be safer to contact FS developers who might have have
similar issue and work with them to use a proper migration code?
--
Michal Hocko
SUSE Labs