1. 06 9月, 2019 6 次提交
  2. 30 8月, 2019 1 次提交
  3. 24 8月, 2019 1 次提交
    • G
      erofs: move erofs out of staging · 47e4937a
      Gao Xiang 提交于
      EROFS filesystem has been merged into linux-staging for a year.
      
      EROFS is designed to be a better solution of saving extra storage
      space with guaranteed end-to-end performance for read-only files
      with the help of reduced metadata, fixed-sized output compression
      and decompression inplace technologies.
      
      In the past year, EROFS was greatly improved by many people as
      a staging driver, self-tested, betaed by a large number of our
      internal users, successfully applied to almost all in-service
      HUAWEI smartphones as the part of EMUI 9.1 and proven to be stable
      enough to be moved out of staging.
      
      EROFS is a self-contained filesystem driver. Although there are
      still some TODOs to be more generic, we have a dedicated team
      actively keeping on working on EROFS in order to make it better
      with the evolution of Linux kernel as the other in-kernel filesystems.
      
      As Pavel suggested, it's better to do as one commit since git
      can do moves and all histories will be saved in this way.
      
      Let's promote it from staging and enhance it more actively as
      a "real" part of kernel for more wider scenarios!
      
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Pavel Machek <pavel@denx.de>
      Cc: David Sterba <dsterba@suse.cz>
      Cc: Amir Goldstein <amir73il@gmail.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Darrick J . Wong <darrick.wong@oracle.com>
      Cc: Dave Chinner <david@fromorbit.com>
      Cc: Jaegeuk Kim <jaegeuk@kernel.org>
      Cc: Jan Kara <jack@suse.cz>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Chao Yu <yuchao0@huawei.com>
      Cc: Miao Xie <miaoxie@huawei.com>
      Cc: Li Guifu <bluce.liguifu@huawei.com>
      Cc: Fang Wei <fangwei1@huawei.com>
      Signed-off-by: NGao Xiang <gaoxiang25@huawei.com>
      Link: https://lore.kernel.org/r/20190822213659.5501-1-hsiangkao@aol.comSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      47e4937a
  4. 22 8月, 2019 1 次提交
  5. 21 8月, 2019 3 次提交
  6. 02 8月, 2019 7 次提交
  7. 22 7月, 2019 1 次提交
  8. 01 7月, 2019 1 次提交
  9. 26 6月, 2019 6 次提交
  10. 09 6月, 2019 1 次提交
  11. 30 4月, 2019 1 次提交
  12. 26 3月, 2019 4 次提交
  13. 20 3月, 2019 1 次提交
  14. 18 3月, 2019 1 次提交
  15. 27 2月, 2019 3 次提交
    • G
      staging: erofs: fix mis-acted TAIL merging behavior · a112152f
      Gao Xiang 提交于
      EROFS has an optimized path called TAIL merging, which is designed
      to merge multiple reads and the corresponding decompressions into
      one if these requests read continuous pages almost at the same time.
      
      In general, it behaves as follows:
       ________________________________________________________________
        ... |  TAIL  .  HEAD  |  PAGE  |  PAGE  |  TAIL    . HEAD | ...
       _____|_combined page A_|________|________|_combined page B_|____
              1  ]  ->  [  2                          ]  ->  [ 3
      If the above three reads are requested in the order 1-2-3, it will
      generate a large work chain rather than 3 individual work chains
      to reduce scheduling overhead and boost up sequential read.
      
      However, if Read 2 is processed slightly earlier than Read 1,
      currently it still generates 2 individual work chains (chain 1, 2)
      but it does in-place decompression for combined page A, moreover,
      if chain 2 decompresses ahead of chain 1, it will be a race and
      lead to corrupted decompressed page. This patch fixes it.
      
      Fixes: 3883a79a ("staging: erofs: introduce VLE decompression support")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: NGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a112152f
    • G
      staging: erofs: fix illegal address access under memory pressure · 1e5ceeab
      Gao Xiang 提交于
      Considering a read request with two decompressed file pages,
      If a decompression work cannot be started on the previous page
      due to memory pressure but in-memory LTP map lookup is done,
      builder->work should be still NULL.
      
      Moreover, if the current page also belongs to the same map,
      it won't try to start the decompression work again and then
      run into trouble.
      
      This patch aims to solve the above issue only with little changes
      as much as possible in order to make the fix backport easier.
      
      kernel message is:
      <4>[1051408f.015930s]SLUB: Unable to allocate memory on node -1, gfp=0x2408040(GFP_NOFS|__GFP_ZERO)
      <4>[1051408f.015930s]  cache: erofs_compress, object size: 144, buffer size: 144, default order: 0, min order: 0
      <4>[1051408f.015930s]  node 0: slabs: 98, objs: 2744, free: 0
        * Cannot allocate the decompression work
      
      <3>[1051408f.015960s]erofs: z_erofs_vle_normalaccess_readpages, readahead error at page 1008 of nid 5391488
        * Note that the previous page was failed to read
      
      <0>[1051408f.015960s]Internal error: Accessing user space memory outside uaccess.h routines: 96000005 [#1] PREEMPT SMP
      ...
      <4>[1051408f.015991s]Hardware name: kirin710 (DT)
      ...
      <4>[1051408f.016021s]PC is at z_erofs_vle_work_add_page+0xa0/0x17c
      <4>[1051408f.016021s]LR is at z_erofs_do_read_page+0x12c/0xcf0
      ...
      <4>[1051408f.018096s][<ffffff80c6fb0fd4>] z_erofs_vle_work_add_page+0xa0/0x17c
      <4>[1051408f.018096s][<ffffff80c6fb3814>] z_erofs_vle_normalaccess_readpages+0x1a0/0x37c
      <4>[1051408f.018096s][<ffffff80c6d670b8>] read_pages+0x70/0x190
      <4>[1051408f.018127s][<ffffff80c6d6736c>] __do_page_cache_readahead+0x194/0x1a8
      <4>[1051408f.018127s][<ffffff80c6d59318>] filemap_fault+0x398/0x684
      <4>[1051408f.018127s][<ffffff80c6d8a9e0>] __do_fault+0x8c/0x138
      <4>[1051408f.018127s][<ffffff80c6d8f90c>] handle_pte_fault+0x730/0xb7c
      <4>[1051408f.018127s][<ffffff80c6d8fe04>] __handle_mm_fault+0xac/0xf4
      <4>[1051408f.018157s][<ffffff80c6d8fec8>] handle_mm_fault+0x7c/0x118
      <4>[1051408f.018157s][<ffffff80c8c52998>] do_page_fault+0x354/0x474
      <4>[1051408f.018157s][<ffffff80c8c52af8>] do_translation_fault+0x40/0x48
      <4>[1051408f.018157s][<ffffff80c6c002f4>] do_mem_abort+0x80/0x100
      <4>[1051408f.018310s]---[ end trace 9f4009a3283bd78b ]---
      
      Fixes: 3883a79a ("staging: erofs: introduce VLE decompression support")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: NGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1e5ceeab
    • G
      staging: erofs: compressed_pages should not be accessed again after freed · af692e11
      Gao Xiang 提交于
      This patch resolves the following page use-after-free issue,
      z_erofs_vle_unzip:
          ...
          for (i = 0; i < nr_pages; ++i) {
              ...
              z_erofs_onlinepage_endio(page);  (1)
          }
      
          for (i = 0; i < clusterpages; ++i) {
              page = compressed_pages[i];
      
              if (page->mapping == mngda)      (2)
                  continue;
              /* recycle all individual staging pages */
              (void)z_erofs_gather_if_stagingpage(page_pool, page); (3)
              WRITE_ONCE(compressed_pages[i], NULL);
          }
          ...
      
      After (1) is executed, page is freed and could be then reused, if
      compressed_pages is scanned after that, it could fall info (2) or
      (3) by mistake and that could finally be in a mess.
      
      This patch aims to solve the above issue only with little changes
      as much as possible in order to make the fix backport easier.
      
      Fixes: 3883a79a ("staging: erofs: introduce VLE decompression support")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: NGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      af692e11
  16. 20 2月, 2019 1 次提交
  17. 15 2月, 2019 1 次提交