On Thu, Mar 28, 2013 at 06:34:58PM +0800, Tao Ma wrote: > From: Tao Ma <boyu.mt@xxxxxxxxxx> > > 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 '.'. > > This patch adds a new offset EXT4_INLINE_DOTDOT_OFFSET which > indicates the offset of inline "..", and now 0 is for the "." > and EXT4_INLINE_DOTDOT_OFFSET is for "..". Yeah, this fixes the problem. I confirmed that my little test that got a single dirent from getdents() now properly sees . and .. and exits rather than spinning. Tested-by: Zach Brown <zab@xxxxxxxxxx> > > + if (filp->f_pos == EXT4_INLINE_DOTDOT_OFFSET) { > error = filldir(dirent, "..", 2, 0, parent_ino, > DT_DIR); > if (error) > -- > 1.7.0.4 Though I think you should change the fourth argument (offset) of the second flildir() from 0 to EXT4_INLINE_DOTDOT_OFFSET. - z -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html