android_kernel_oneplus_msm8998/fs/squashfs
Adrien Schildknecht d9aa8ddc51 Squashfs: optimize reading uncompressed data
When dealing with uncompressed data, there is no need to read a whole
block (default 128K) to get the desired page: the pages are
independent from each others.

This patch change the readpages logic so that reading uncompressed
data only read the number of pages advised by the readahead algorithm.

Moreover, if the page actor contains holes (i.e. pages that are already
up-to-date), squashfs skips the buffer_head associated to those pages.

This patch greatly improve the performance of random reads for
uncompressed files because squashfs only read what is needed. It also
reduces the number of unnecessary reads.

Signed-off-by: Adrien Schildknecht <adriens@google.com>
Change-Id: I1850150fbf4b45c9dd138d88409fea1ab44054c0
2017-02-09 04:04:18 +00:00
..
block.c Squashfs: optimize reading uncompressed data 2017-02-09 04:04:18 +00:00
cache.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
decompressor.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
decompressor.h Squashfs: Add LZ4 compression configuration option 2014-11-27 18:48:44 +00:00
decompressor_multi.c Squashfs: Check stream is not NULL in decompressor_multi.c 2013-11-20 03:59:20 +00:00
decompressor_multi_percpu.c Squashfs: Generalise paging handling in the decompressors 2013-11-20 03:59:01 +00:00
decompressor_single.c Squashfs: Generalise paging handling in the decompressors 2013-11-20 03:59:01 +00:00
dir.c Squashfs: add corruption check for type in squashfs_readdir() 2013-09-06 04:57:54 +01:00
export.c VFS: normal filesystems (and lustre): d_inode() annotations 2015-04-15 15:06:57 -04:00
file.c Squashfs: implement .readpages() 2017-02-09 04:04:09 +00:00
file_direct.c Squashfs: optimize reading uncompressed data 2017-02-09 04:04:18 +00:00
fragment.c Squashfs: Fix sanity check patches on big-endian systems 2011-05-29 10:03:09 +01:00
id.c Squashfs: Fix sanity check patches on big-endian systems 2011-05-29 10:03:09 +01:00
inode.c userns: Convert squashfs to use kuid/kgid where appropriate 2012-09-21 03:13:35 -07:00
Kconfig Squashfs: remove the FILE_CACHE option 2017-02-09 04:01:39 +00:00
lz4_wrapper.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
lzo_wrapper.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
Makefile Squashfs: remove the FILE_CACHE option 2017-02-09 04:01:39 +00:00
namei.c Squashfs: fix corruption checks in squashfs_lookup() 2013-09-06 04:57:53 +01:00
page_actor.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
page_actor.h Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
squashfs.h Squashfs: implement .readpages() 2017-02-09 04:04:09 +00:00
squashfs_fs.h Squashfs: add LZ4 compression support 2014-11-27 07:44:11 +00:00
squashfs_fs_i.h fs: cleanup slight list_entry abuse 2015-06-23 18:01:59 -04:00
squashfs_fs_sb.h Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
super.c Squashfs: replace buffer_head with BIO 2017-02-09 04:04:02 +00:00
symlink.c squashfs: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:25 +08:00
xattr.c squashfs: xattr simplifications 2015-11-13 20:34:33 -05:00
xattr.h Squashfs: update email address 2011-05-26 10:49:11 +01:00
xattr_id.c Squashfs: update email address 2011-05-26 10:49:11 +01:00
xz_wrapper.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00
zlib_wrapper.c Squashfs: refactor page_actor 2017-02-09 04:03:50 +00:00