Adrien Schildknecht
60cc09a9e3
ANDROID: 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.
Change-Id: I90a77343bb994a1de7482eb43eaf6d2021502c22
Signed-off-by: Adrien Schildknecht <adriens@google.com>
2017-09-21 13:52:32 -07:00
..
block.c
ANDROID: Squashfs: optimize reading uncompressed data
2017-09-21 13:52:32 -07:00
cache.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
decompressor.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07: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
romfs, squashfs: switch to ->iterate_shared()
2016-05-09 11:41:15 -04:00
export.c
VFS: normal filesystems (and lustre): d_inode() annotations
2015-04-15 15:06:57 -04:00
file.c
ANDROID: Squashfs: implement .readpages()
2017-09-21 13:52:31 -07:00
file_direct.c
ANDROID: Squashfs: optimize reading uncompressed data
2017-09-21 13:52:32 -07: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
vfs: Remove {get,set,remove}xattr inode operations
2016-10-07 21:48:36 -04:00
Kconfig
ANDROID: Squashfs: remove the FILE_CACHE option
2017-09-21 13:52:31 -07:00
lz4_wrapper.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
lzo_wrapper.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
Makefile
ANDROID: Squashfs: remove the FILE_CACHE option
2017-09-21 13:52:31 -07:00
namei.c
vfs: Remove {get,set,remove}xattr inode operations
2016-10-07 21:48:36 -04:00
page_actor.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
page_actor.h
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
squashfs.h
ANDROID: Squashfs: implement .readpages()
2017-09-21 13:52:31 -07: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
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
super.c
ANDROID: Squashfs: replace buffer_head with BIO
2017-09-21 13:52:31 -07:00
symlink.c
vfs: Remove {get,set,remove}xattr inode operations
2016-10-07 21:48:36 -04:00
xattr.c
xattr_handler: pass dentry and inode as separate arguments of ->get()
2016-04-10 20:48:24 -04:00
xattr.h
vfs: Remove {get,set,remove}xattr inode operations
2016-10-07 21:48:36 -04:00
xattr_id.c
Squashfs: update email address
2011-05-26 10:49:11 +01:00
xz_wrapper.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00
zlib_wrapper.c
ANDROID: Squashfs: refactor page_actor
2017-09-21 13:52:31 -07:00