On Fri, Apr 28, 2017 at 8:47 AM, Eryu Guan <eguan@xxxxxxxxxx> wrote: > On Thu, Apr 27, 2017 at 06:09:34PM +0300, Amir Goldstein wrote: >> The test verifies constant inode number after copy up. >> Verify that inode number remains constant also after rename >> and drop caches (when overlayfs needs to find the lower >> inodes in another location). >> >> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> >> --- >> tests/overlay/017 | 22 ++++++++++++++++++---- >> 1 file changed, 18 insertions(+), 4 deletions(-) >> >> diff --git a/tests/overlay/017 b/tests/overlay/017 >> index f3bf454..1cf684d 100755 >> --- a/tests/overlay/017 >> +++ b/tests/overlay/017 >> @@ -8,7 +8,8 @@ >> # - modify A to trigger copy up >> # - stat file A shows inode number Y != X >> # >> -# Also test if d_ino of readdir entries changes after copy up. >> +# Also test if d_ino of readdir entries changes after copy up >> +# and if inode numbers persist after rename and drop caches. >> # >> #----------------------------------------------------------------------- >> # >> @@ -94,6 +95,8 @@ _scratch_mount >> >> >> rm -f $tmp.* >> +testdir=$SCRATCH_MNT/test >> +mkdir -p $testdir >> >> # Test stable stat(2) st_ino >> >> @@ -106,18 +109,29 @@ for f in $FILES; do >> done >> >> # Record inode numbers after copy up >> -record_inode_numbers $SCRATCH_MNT $tmp.after >> +record_inode_numbers $SCRATCH_MNT $tmp.after_copyup > > inode numbers are saved after copyup and will be tested by diff with > $tmp.before, but find (d_ino) is not tested after a pure copyup... > >> + >> +for f in $FILES; do >> + # move to another dir >> + mv $SCRATCH_MNT/$f $testdir/ >> +done >> + >> +echo 3 > /proc/sys/vm/drop_caches >> + >> +# Record inode numbers after rename and drop caches >> +record_inode_numbers $testdir $tmp.after_move >> >> # Test stable readdir(3)/getdents(2) d_ino >> >> # find by inode number - expect to find file by inode number >> cat $tmp.before | while read ino f; do >> - find $SCRATCH_MNT/ -inum $ino -maxdepth 1 | grep -q $f || \ >> + find $testdir/ -inum $ino -maxdepth 1 | grep -q $f || \ >> echo "$f not found by ino $ino" >> done > > it's only tested here, after a rename and a drop_caches. > > IMO, it's better to test both find and stat after each operation that > would cause inode number change. So how about factoring out a helper > that does this inode number check (find and diff), and calling it after > each operation? > > e.g. a new helper called check_inode_number(), then > > <create files> > <copyup> > check_inode_number [with necessary args] > <rename> > check_inode_number > <drop_caches> > check_inode_number > <cycle mount> > check_inode_number > Yes, that would be much better. Thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html