On 03/29/2013 02:33 AM, Zach Brown wrote: > 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. My fault, will change it in the next version. Thanks, Tao -- 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