overlay/077: check for inconsistent d_ino/st_ino
authorAmir Goldstein <amir73il@gmail.com>
Thu, 22 Jul 2021 17:02:16 +0000 (20:02 +0300)
committerEryu Guan <guaneryu@gmail.com>
Sun, 25 Jul 2021 16:38:47 +0000 (00:38 +0800)
commitdad0c0a852d1b10e7da285f29e99397dec0efec1
treebe3b4f7bae27d07789f5beec0215fde3ee466a80
parent8cb89d25518f3a33b43ed71fee9429f9630675d3
overlay/077: check for inconsistent d_ino/st_ino

After unlink of a directory entry, that entry may still apear in getdents
results of an already open directory fd, but it should return a d_ino
value that is consistent with the already observed st_ino of that entry.

Remove redundant break condition from gendents read loop.

For testing of inconsistent d_ino/st_ino we need to unlink an entry
whose st_ino is not that of the upper inode.

In the former merge dir setup we unlink all the files in the lower
dir after copyup, so they all use st_ino of the upper inode.

Let the unlinked file f100 reside in a lower path that is not being
unlinked so it will have the st_ino of the lower inode.

This is a regression test for kernel commit fcb7f373684d
("ovl: skip stale entries in merge dir cache iteration")

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
src/t_dir_offset2.c
tests/overlay/077