Re: [PATCH] overlay: another test for dropping nlink below zero

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Apr 19, 2020 at 6:00 PM Eryu Guan <guan@xxxxxxx> wrote:
>
> On Thu, Apr 09, 2020 at 02:22:23PM +0300, Amir Goldstein wrote:
> > This is a variant on test overlay/034.
> >
> > This variant is mangling upper hardlinks instead of lower hardlinks
> > and does not require the inodes index feature.
> >
> > This is a regression test for kernel commit 83552eacdfc0
> > ("ovl: fix WARN_ON nlink drop to zero")
> >
> > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> > ---
> >
> > Eryu,
> >
> > The kernel fix commit just got merged.
> >
> > Thanks,
> > Amir.
> >
> >  tests/overlay/072     | 85 +++++++++++++++++++++++++++++++++++++++++++
> >  tests/overlay/072.out |  2 +
> >  tests/overlay/group   |  1 +
> >  3 files changed, 88 insertions(+)
> >  create mode 100755 tests/overlay/072
> >  create mode 100644 tests/overlay/072.out
> >
> > diff --git a/tests/overlay/072 b/tests/overlay/072
> > new file mode 100755
> > index 00000000..e9084e5c
> > --- /dev/null
> > +++ b/tests/overlay/072
> > @@ -0,0 +1,85 @@
> > +#! /bin/bash
> > +# SPDX-License-Identifier: GPL-2.0
> > +# Copyright (C) 2020 CTERA Networks. All Rights Reserved.
> > +#
> > +# FS QA Test 072
> > +#
> > +# Test overlay nlink when adding upper hardlinks.
> > +#
> > +# nlink of overlay inode could be dropped indefinitely by adding
> > +# unaccounted upper hardlinks underneath a mounted overlay and
> > +# trying to remove them.
> > +#
> > +# This is a variant of test overlay/034 with mangling of upper instead
> > +# of lower hardlinks. Unlike overlay/034, this test does not require the
> > +# inode index feature and will pass whether is it enabled or disabled
> > +# by default.
> > +#
> > +# This is a regression test for kernel commit 83552eacdfc0
> > +# ("ovl: fix WARN_ON nlink drop to zero").
> > +# Without the fix, the test triggers
> > +# WARN_ON(inode->i_nlink == 0) in drop_link().
> > +#
> > +seq=`basename $0`
> > +seqres=$RESULT_DIR/$seq
> > +echo "QA output created by $seq"
> > +
> > +tmp=/tmp/$$
> > +status=1     # failure is the default!
> > +trap "_cleanup; exit \$status" 0 1 2 3 15
> > +
> > +_cleanup()
> > +{
> > +     cd /
> > +     rm -f $tmp.*
> > +}
> > +
> > +# get standard environment, filters and checks
> > +. ./common/rc
> > +. ./common/filter
> > +
> > +# remove previous $seqres.full before test
> > +rm -f $seqres.full
> > +
> > +# real QA test starts here
> > +_supported_fs overlay
> > +_supported_os Linux
> > +_require_scratch
> > +
> > +upperdir=$OVL_BASE_SCRATCH_MNT/$OVL_UPPER
> > +
> > +# Remove all files from previous tests
> > +_scratch_mkfs
> > +
> > +# Create lower hardlink
>
> It seems there're some stale comments that are copied from overlay/034,
> above is one of them, should be "Create upper hardlink"
>

Yep. I'll fix those up.

> > +mkdir -p $upperdir
> > +touch $upperdir/0
> > +ln $upperdir/0 $upperdir/1
> > +
> > +_scratch_mount
> > +
> > +# Copy up lower hardlink - overlay inode nlink 2 is copied from lower
> > +touch $SCRATCH_MNT/0
>
> There's no copyup, then do we need this touch at all?

We do not need touch, but we do need something to do the
lookup and read upper nlink before modifying it underneath.

Good points.
I'll send fixed v2.

Thanks,
Amir.



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux