udf: add extent cache support in case of file reading
authorNamjae Jeon <namjae.jeon@samsung.com>
Sat, 19 Jan 2013 02:17:14 +0000 (11:17 +0900)
committerJan Kara <jack@suse.cz>
Tue, 22 Jan 2013 09:48:31 +0000 (10:48 +0100)
commit99600051b04bc4ec8bd4d16a8bf993ca54042db6
tree8af25f21375f8538acfd10a8ef524bf8bb52826b
parent9734c971aa6be6db61226b0046e080ca10383748
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>
fs/udf/inode.c
fs/udf/super.c
fs/udf/udf_i.h
fs/udf/udfdecl.h