exfat: speed up iterate/lookup by fixing start point of traversing cluster chain
authorHyeongseok Kim <hyeongseok@gmail.com>
Mon, 22 Mar 2021 03:53:36 +0000 (12:53 +0900)
committerNamjae Jeon <namjae.jeon@samsung.com>
Tue, 27 Apr 2021 11:45:07 +0000 (20:45 +0900)
commitc6e2f52e3051e8d898d38840104638ca8bbcdec2
tree8eb871698cb312d75d7fb56ab582b7ddb133b102
parent23befe490ba885bdf757d40b2489134315fef690
exfat: speed up iterate/lookup by fixing start point of traversing cluster chain

When directory iterate and lookup is called, there's a buggy rewinding
of start point for traversing cluster chain to the parent directory
entry's first cluster. This caused repeated cluster chain traversing
from the first entry of the parent directory that would show worse
performance if huge amounts of files exist under the parent directory.
Fix not to rewind, make continue from currently referenced cluster and
dir entry.

Tested with 50,000 files under single directory / 256GB sdcard,
with command "time ls -l > /dev/null",
Before :     0m08.69s real     0m00.27s user     0m05.91s system
After  :     0m07.01s real     0m00.25s user     0m04.34s system

Signed-off-by: Hyeongseok Kim <hyeongseok@gmail.com>
Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
fs/exfat/dir.c
fs/exfat/exfat_fs.h
fs/exfat/namei.c