Hi,
Currently, ext4 caches holes and initialized extents in
ext4_ext_map_blocks() while it does not cache uninitialized
extents. I noticed ext4 can cache uninitialized extents with
minor changes. ec_start is 0 means that the cached extent is
a hole, initialized extents' length is limited. So if ec_start
is not 0 and the cached extent's length is larger than EXT_MAX_LENGTH,
then the cached extent is uninitialized.
This patch series tries to let ext4 cache uninitialized extents
with minor changes.
The patches pass xfstests 1-268. The xfstessts 268 and 272 meet
a bug in ext4 related to changing journal mode in flight. I will
fix the bug in later patches.
Any feedbacks and comments are welcome.
Yongqiang.