ext4: fix readdir error in case inline_data+^dir_index.
authorTao Ma <boyu.mt@taobao.com>
Fri, 19 Apr 2013 21:55:33 +0000 (17:55 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 19 Apr 2013 21:55:33 +0000 (17:55 -0400)
commitc4d8b0235aa98f8c26bf94d308be3fdd24154572
tree9499f186e1e65df32a822d19cdcd92addb33e4a6
parent8af0f08227977079f8f227e74d27c59db2ab84f6
ext4: fix readdir error in case inline_data+^dir_index.

Zach reported a problem that if inline data is enabled, we don't
tell the difference between the offset of '.' and '..'. And a
getdents will fail if the user only want to get '.'. And what's
worse, we may meet with duplicate dir entries as the offset
for inline dir and non-inline one is quite different.

This patch just try to resolve this problem if dir_index
is disabled. In this case, f_pos is the real offset with
the dir block, so for inline dir, we just pretend as if
we are a dir block and returns the offset like a norml
dir block does.

Reported-by: Zach Brown <zab@redhat.com>
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/inline.c