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 Thanks, Eryu > > # Compare before..after - expect silence > -diff $tmp.before $tmp.after > +diff -u $tmp.before $tmp.after_copyup > +diff -u $tmp.after_copyup $tmp.after_move > > echo "Silence is golden" > status=0 > -- > 2.7.4 > -- 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