kernel-ark/fs/udf
Namjae Jeon 99600051b0 udf: add extent cache support in case of file reading
This patch implements extent caching in case of file reading.
While reading a file, currently, UDF reads metadata serially
which takes a lot of time depending on the number of extents present
in the file. Caching last accessd extent improves metadata read time.
Instead of reading file metadata from start, now we read from
the cached extent.

This patch considerably improves the time spent by CPU in kernel mode.
For example, while reading a 10.9 GB file using dd:
Time before applying patch:
11677022208 bytes (10.9GB) copied, 1529.748921 seconds, 7.3MB/s
real    25m 29.85s
user    0m 12.41s
sys     15m 34.75s

Time after applying patch:
11677022208 bytes (10.9GB) copied, 1469.338231 seconds, 7.6MB/s
real    24m 29.44s
user    0m 15.73s
sys     3m 27.61s

[JK: Fix bh refcounting issues, simplify initialization]

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
Signed-off-by: Bonggil Bak <bgbak@samsung.com>
Signed-off-by: Jan Kara <jack@suse.cz>
2013-01-22 10:48:31 +01:00
..
balloc.c udf: Fix handling of i_blocks 2012-02-29 21:53:47 +01:00
dir.c udf: Remove unnecessary bkl usages 2011-01-06 17:03:57 +01:00
directory.c udf: Neaten udf_debug uses 2011-10-31 23:43:58 +01:00
ecma_167.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
file.c UDF: Add support for O_DIRECT 2012-09-06 16:20:39 +02:00
ialloc.c udf: Init/maintain file entry checkpoint field 2012-02-29 21:53:46 +01:00
inode.c udf: add extent cache support in case of file reading 2013-01-22 10:48:31 +01:00
Kconfig Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 2011-01-11 14:45:52 -08:00
lowlevel.c udf: Neaten udf_debug uses 2011-10-31 23:43:58 +01:00
Makefile switch udf to simple_fsync() 2009-06-11 21:36:13 -04:00
misc.c udf: Rename udf_error to udf_err 2011-10-10 19:29:01 +02:00
namei.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs 2012-07-24 17:40:44 -07:00
osta_udf.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
partition.c udf: Cleanup metadata flags handling 2011-10-31 23:49:48 +01:00
super.c udf: add extent cache support in case of file reading 2013-01-22 10:48:31 +01:00
symlink.c udf: Treat symlink component of type 2 as / 2012-01-09 13:52:08 +01:00
truncate.c udf: Do not decrement i_blocks when freeing indirect extent block 2012-07-09 13:24:21 +02:00
udf_i.h udf: add extent cache support in case of file reading 2013-01-22 10:48:31 +01:00
udf_sb.h userns: Convert the udf filesystem to use kuid/kgid where appropriate 2012-09-21 04:18:54 -07:00
udfdecl.h udf: add extent cache support in case of file reading 2013-01-22 10:48:31 +01:00
udfend.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
udftime.c udf: Convert printks to pr_<level> 2011-10-31 23:43:52 +01:00
unicode.c udf: Convert printks to pr_<level> 2011-10-31 23:43:52 +01:00