• Vitaly Wool's avatar
    mm/z3fold.c: support page migration · 1f862989
    Vitaly Wool authored
    Now that we are not using page address in handles directly, we can make
    z3fold pages movable to decrease the memory fragmentation z3fold may
    create over time.
    
    This patch starts advertising non-headless z3fold pages as movable and
    uses the existing kernel infrastructure to implement moving of such pages
    per memory management subsystem's request.  It thus implements 3 required
    callbacks for page migration:
    
    * isolation callback: z3fold_page_isolate(): try to isolate the page by
      removing it from all lists.  Pages scheduled for some activity and
      mapped pages will not be isolated.  Return true if isolation was
      successful or false otherwise
    
    * migration callback: z3fold_page_migrate(): re-check critical
      conditions and migrate page contents to the new page provided by the
      memory subsystem.  Returns 0 on success or negative error code otherwise
    
    * putback callback: z3fold_page_putback(): put back the page if
      z3fold_page_migrate() for it failed permanently (i.  e.  not with
      -EAGAIN code).
    
    [lkp@intel.com: z3fold_page_isolate() can be static]
      Link: http://lkml.kernel.org/r/20190419130924.GA161478@ivb42
    Link: http://lkml.kernel.org/r/20190417103922.31253da5c366c4ebe0419cfc@gmail.comSigned-off-by: default avatarVitaly Wool <vitaly.vul@sony.com>
    Signed-off-by: default avatarkbuild test robot <lkp@intel.com>
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: Dan Streetman <ddstreet@ieee.org>
    Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1f862989
z3fold.c 39.2 KB