1. 06 3月, 2020 1 次提交
  2. 02 12月, 2019 1 次提交
  3. 08 10月, 2019 1 次提交
  4. 25 9月, 2019 3 次提交
  5. 31 8月, 2019 1 次提交
  6. 25 8月, 2019 1 次提交
  7. 14 8月, 2019 2 次提交
  8. 17 7月, 2019 4 次提交
  9. 13 7月, 2019 1 次提交
  10. 02 6月, 2019 1 次提交
  11. 26 5月, 2019 2 次提交
    • D
      zsfold: Convert zsfold to use the new mount API · ea8157ab
      David Howells 提交于
      Convert the zsfold filesystem to the new internal mount API as the old one
      will be obsoleted and removed.  This allows greater flexibility in
      communication of mount parameters between userspace, the VFS and the
      filesystem.
      
      See Documentation/filesystems/mount_api.txt for more information.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      ea8157ab
    • A
      mount_pseudo(): drop 'name' argument, switch to d_make_root() · 1f58bb18
      Al Viro 提交于
      Once upon a time we used to set ->d_name of e.g. pipefs root
      so that d_path() on pipes would work.  These days it's
      completely pointless - dentries of pipes are not even connected
      to pipefs root.  However, mount_pseudo() had set the root
      dentry name (passed as the second argument) and callers
      kept inventing names to pass to it.  Including those that
      didn't *have* any non-root dentries to start with...
      
      All of that had been pointless for about 8 years now; it's
      time to get rid of that cargo-culting...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      1f58bb18
  12. 21 5月, 2019 2 次提交
  13. 15 5月, 2019 4 次提交
    • V
      mm/z3fold.c: support page migration · 1f862989
      Vitaly Wool 提交于
      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: NVitaly Wool <vitaly.vul@sony.com>
      Signed-off-by: Nkbuild 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: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1f862989
    • V
      mm/z3fold.c: add structure for buddy handles · 7c2b8baa
      Vitaly Wool 提交于
      For z3fold to be able to move its pages per request of the memory
      subsystem, it should not use direct object addresses in handles.  Instead,
      it will create abstract handles (3 per page) which will contain pointers
      to z3fold objects.  Thus, it will be possible to change these pointers
      when z3fold page is moved.
      
      Link: http://lkml.kernel.org/r/20190417103826.484eaf18c1294d682769880f@gmail.comSigned-off-by: NVitaly Wool <vitaly.vul@sony.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: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7c2b8baa
    • V
      mm/z3fold.c: improve compression by extending search · 351618b2
      Vitaly Wool 提交于
      The current z3fold implementation only searches this CPU's page lists for
      a fitting page to put a new object into.  This patch adds quick search for
      very well fitting pages (i.  e.  those having exactly the required number
      of free space) on other CPUs too, before allocating a new page for that
      object.
      
      Link: http://lkml.kernel.org/r/20190417103733.72ae81abe1552397c95a008e@gmail.comSigned-off-by: NVitaly Wool <vitaly.vul@sony.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: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      351618b2
    • V
      mm/z3fold.c: introduce helper functions · 9050cce1
      Vitaly Wool 提交于
      Patch series "z3fold: support page migration", v2.
      
      This patchset implements page migration support and slightly better buddy
      search.  To implement page migration support, z3fold has to move away from
      the current scheme of handle encoding.  i.  e.  stop encoding page address
      in handles.  Instead, a small per-page structure is created which will
      contain actual addresses for z3fold objects, while pointers to fields of
      that structure will be used as handles.
      
      Thus, it will be possible to change the underlying addresses to reflect
      page migration.
      
      To support migration itself, 3 callbacks will be implemented:
      
      1: 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
      
      2: migration callback: z3fold_page_migrate(): re-check critical
         conditions and migrate page contents to the new page provided by the
         system.  Returns 0 on success or negative error code otherwise
      
      3: putback callback: z3fold_page_putback(): put back the page if
         z3fold_page_migrate() for it failed permanently (i.  e.  not with
         -EAGAIN code).
      
      To make sure an isolated page doesn't get freed, its kref is incremented
      in z3fold_page_isolate() and decremented during post-migration compaction,
      if migration was successful, or by z3fold_page_putback() in the other
      case.
      
      Since the new handle encoding scheme implies slight memory consumption
      increase, better buddy search (which decreases memory consumption) is
      included in this patchset.
      
      This patch (of 4):
      
      Introduce a separate helper function for object allocation, as well as 2
      smaller helpers to add a buddy to the list and to get a pointer to the
      pool from the z3fold header.  No functional changes here.
      
      Link: http://lkml.kernel.org/r/20190417103633.a4bb770b5bf0fb7e43ce1666@gmail.comSigned-off-by: NVitaly Wool <vitaly.vul@sony.com>
      Cc: Dan Streetman <ddstreet@ieee.org>
      Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
      Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
      Cc: Uladzislau Rezki <urezki@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9050cce1
  14. 19 11月, 2018 1 次提交
  15. 12 5月, 2018 1 次提交
  16. 12 4月, 2018 2 次提交
  17. 06 4月, 2018 1 次提交
  18. 07 2月, 2018 1 次提交
  19. 18 11月, 2017 1 次提交
  20. 04 10月, 2017 2 次提交
  21. 07 9月, 2017 1 次提交
    • V
      z3fold: use per-cpu unbuddied lists · d30561c5
      Vitaly Wool 提交于
      It's been noted that z3fold doesn't scale well when it's run in a large
      number of threads on many cores, which can be easily reproduced with fio
      'randrw' test with --numjobs=32.  E.g.  the result for 1 cluster (4 cores)
      is:
      
      Run status group 0 (all jobs):
         READ: io=244785MB, aggrb=496883KB/s, minb=15527KB/s, ...
        WRITE: io=246735MB, aggrb=500841KB/s, minb=15651KB/s, ...
      
      While for 8 cores (2 clusters) the result is:
      
      Run status group 0 (all jobs):
         READ: io=244785MB, aggrb=265942KB/s, minb=8310KB/s, ...
        WRITE: io=246735MB, aggrb=268060KB/s, minb=8376KB/s, ...
      
      The bottleneck here is the pool lock which many threads become waiting
      upon.  To reduce that spin lock contention, z3fold can operate only on
      the lists local to the current CPU whenever possible.  Due to the nature
      of z3fold unbuddied list handling (it only takes the first entry off the
      list on a hot path), if the z3fold pool is big enough and balanced well
      enough, limiting search to only local unbuddied list doesn't lead to a
      significant compression ratio degrade (2.57x vs 2.65x in our
      measurements).
      
      This patch also introduces two worker threads: one for async in-page
      object layout optimization and one for releasing freed pages.  This is
      done to speed up z3fold_free() which is often on a hot path.
      
      The fio results for 8-core case are now the following:
      
      Run status group 0 (all jobs):
         READ: io=244785MB, aggrb=1568.3MB/s, minb=50182KB/s, ...
        WRITE: io=246735MB, aggrb=1580.8MB/s, minb=50582KB/s, ...
      
      So we're in for almost 6x performance increase.
      
      Link: http://lkml.kernel.org/r/20170806181443.f9b65018f8bde25ef990f9e8@gmail.comSigned-off-by: NVitaly Wool <vitalywool@gmail.com>
      Cc: Dan Streetman <ddstreet@ieee.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d30561c5
  22. 14 4月, 2017 1 次提交
    • V
      z3fold: fix page locking in z3fold_alloc() · 76e32a2a
      Vitaly Wool 提交于
      Stress testing of the current z3fold implementation on a 8-core system
      revealed it was possible that a z3fold page deleted from its unbuddied
      list in z3fold_alloc() would be put on another unbuddied list by
      z3fold_free() while z3fold_alloc() is still processing it.  This has
      been introduced with commit 5a27aa82 ("z3fold: add kref refcounting")
      due to the removal of special handling of a z3fold page not on any list
      in z3fold_free().
      
      To fix this, the z3fold page lock should be taken in z3fold_alloc()
      before the pool lock is released.  To avoid deadlocking, we just try to
      lock the page as soon as we get a hold of it, and if trylock fails, we
      drop this page and take the next one.
      Signed-off-by: NVitaly Wool <vitalywool@gmail.com>
      Cc: Dan Streetman <ddstreet@ieee.org>
      Cc: <Oleksiy.Avramchenko@sony.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      76e32a2a
  23. 17 3月, 2017 1 次提交
  24. 25 2月, 2017 4 次提交