1. 20 11月, 2013 5 次提交
    • P
      Squashfs: Restructure squashfs_readpage() · 5f55dbc0
      Phillip Lougher 提交于
      Restructure squashfs_readpage() splitting it into separate
      functions for datablocks, fragments and sparse blocks.
      
      Move the memcpying (from squashfs cache entry) implementation of
      squashfs_readpage_block into file_cache.c
      
      This allows different implementations to be supported.
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      Reviewed-by: NMinchan Kim <minchan@kernel.org>
      5f55dbc0
    • P
      Squashfs: Generalise paging handling in the decompressors · 846b730e
      Phillip Lougher 提交于
      Further generalise the decompressors by adding a page handler
      abstraction.  This adds helpers to allow the decompressors
      to access and process the output buffers in an implementation
      independant manner.
      
      This allows different types of output buffer to be passed
      to the decompressors, with the implementation specific
      aspects handled at decompression time, but without the
      knowledge being held in the decompressor wrapper code.
      
      This will allow the decompressors to handle Squashfs
      cache buffers, and page cache pages.
      
      This patch adds the abstraction and an implementation for
      the caches.
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      Reviewed-by: NMinchan Kim <minchan@kernel.org>
      846b730e
    • P
      Squashfs: add multi-threaded decompression using percpu variable · d208383d
      Phillip Lougher 提交于
      Add a multi-threaded decompression implementation which uses
      percpu variables.
      
      Using percpu variables has advantages and disadvantages over
      implementations which do not use percpu variables.
      
      Advantages:
        * the nature of percpu variables ensures decompression is
          load-balanced across the multiple cores.
        * simplicity.
      
      Disadvantages: it limits decompression to one thread per core.
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      d208383d
    • M
      squashfs: Enhance parallel I/O · cd59c2ec
      Minchan Kim 提交于
      Now squashfs have used for only one stream buffer for decompression
      so it hurts parallel read performance so this patch supports
      multiple decompressor to enhance performance parallel I/O.
      
      Four 1G file dd read on KVM machine which has 2 CPU and 4G memory.
      
      dd if=test/test1.dat of=/dev/null &
      dd if=test/test2.dat of=/dev/null &
      dd if=test/test3.dat of=/dev/null &
      dd if=test/test4.dat of=/dev/null &
      
      old : 1m39s -> new : 9s
      
      * From v1
        * Change comp_strm with decomp_strm - Phillip
        * Change/add comments - Phillip
      Signed-off-by: NMinchan Kim <minchan@kernel.org>
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      cd59c2ec
    • P
      Squashfs: Refactor decompressor interface and code · 9508c6b9
      Phillip Lougher 提交于
      The decompressor interface and code was written from
      the point of view of single-threaded operation.  In doing
      so it mixed a lot of single-threaded implementation specific
      aspects into the decompressor code and elsewhere which makes it
      difficult to seamlessly support multiple different decompressor
      implementations.
      
      This patch does the following:
      
      1.  It removes compressor_options parsing from the decompressor
          init() function.  This allows the decompressor init() function
          to be dynamically called to instantiate multiple decompressors,
          without the compressor options needing to be read and parsed each
          time.
      
      2.  It moves threading and all sleeping operations out of the
          decompressors.  In doing so, it makes the decompressors
          non-blocking wrappers which only deal with interfacing with
          the decompressor implementation.
      
      3. It splits decompressor.[ch] into decompressor generic functions
         in decompressor.[ch], and moves the single threaded
         decompressor implementation into decompressor_single.c.
      
      The result of this patch is Squashfs should now be able to
      support multiple decompressors by adding new decompressor_xxx.c
      files with specialised implementations of the functions in
      decompressor_single.c
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      Reviewed-by: NMinchan Kim <minchan@kernel.org>
      9508c6b9
  2. 06 9月, 2013 5 次提交
  3. 05 9月, 2013 1 次提交
  4. 29 8月, 2013 1 次提交
  5. 29 6月, 2013 1 次提交
  6. 11 3月, 2013 1 次提交
  7. 23 2月, 2013 1 次提交
  8. 03 10月, 2012 1 次提交
  9. 21 9月, 2012 1 次提交
  10. 14 7月, 2012 1 次提交
    • A
      stop passing nameidata to ->lookup() · 00cd8dd3
      Al Viro 提交于
      Just the flags; only NFS cares even about that, but there are
      legitimate uses for such argument.  And getting rid of that
      completely would require splitting ->lookup() into a couple
      of methods (at least), so let's leave that alone for now...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      00cd8dd3
  11. 21 3月, 2012 1 次提交
  12. 20 3月, 2012 1 次提交
  13. 10 3月, 2012 7 次提交
  14. 04 1月, 2012 1 次提交
    • A
      vfs: fix the stupidity with i_dentry in inode destructors · 6b520e05
      Al Viro 提交于
      Seeing that just about every destructor got that INIT_LIST_HEAD() copied into
      it, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();
      the cost of taking it into inode_init_always() will be negligible for pipes
      and sockets and negative for everything else.  Not to mention the removal of
      boilerplate code from ->destroy_inode() instances...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      6b520e05
  15. 03 1月, 2012 2 次提交
    • P
      Squashfs: fix i_blocks calculation with extended regular files · 3d4a1c80
      Phillip Lougher 提交于
      The le64_to_cpu() forces the calculation to be unsigned, with
      the effect that it can underflow leading to an incorrect large
      value.
      
      This bug only triggers in rare(ish) circumstances, an empty file
      encoded as an extended regular file or a completely sparse file.
      Normally empty files are encoded as a regular file rather than as
      an extended regular file (and the regular file i_blocks calculation
      doesn't have this bug).  To save space regular file inodes are
      optimised to encode the most commonly occurring files.  Less
      common regular files are encoded using extended regular file inodes
      which contain extra information.
      
      Empty files with nlinks greater than 1, and or empty files
      with extended attributes are encoded using extended regular file
      inodes and they will hit this bug.
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      3d4a1c80
    • P
      Squashfs: fix mount time sanity check for corrupted superblock · cc37f75a
      Phillip Lougher 提交于
      A Squashfs filesystem containing nothing but an empty directory,
      although unusual and ultimately pointless, is still valid.
      
      The directory_table >= next_table sanity check rejects these
      filesystems as invalid because the directory_table is empty and
      equal to next_table.
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      cc37f75a
  16. 30 12月, 2011 2 次提交
  17. 03 11月, 2011 1 次提交
    • P
      Squashfs: Add an option to set dev block size to 4K · 7657cacf
      Phillip Lougher 提交于
      This commit adds an option to set the device block size used to 4K.
      
      By default Squashfs sets the device block size (sb_min_blocksize) to 1K
      or the smallest block size supported by the block device (if larger).
      This, because blocks are packed together and unaligned in Squashfs,
      should reduce latency.
      
      This, however, gives poor performance on MTD NAND devices where
      the optimal I/O size is 4K (even though the devices can support
      smaller block sizes).
      
      Using a 4K device block size may also improve overall I/O
      performance for some file access patterns (e.g. sequential
      accesses of files in filesystem order) on all media.
      Signed-off-by: NPhillip Lougher <phillip@squashfs.org.uk>
      7657cacf
  18. 02 11月, 2011 1 次提交
  19. 28 9月, 2011 1 次提交
    • P
      doc: fix broken references · 395cf969
      Paul Bolle 提交于
      There are numerous broken references to Documentation files (in other
      Documentation files, in comments, etc.). These broken references are
      caused by typo's in the references, and by renames or removals of the
      Documentation files. Some broken references are simply odd.
      
      Fix these broken references, sometimes by dropping the irrelevant text
      they were part of.
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      395cf969
  20. 22 7月, 2011 1 次提交
  21. 20 7月, 2011 2 次提交
  22. 29 5月, 2011 1 次提交
  23. 26 5月, 2011 1 次提交