All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce
@ 2021-03-08 13:43 Zorro Lang
  2021-03-08 18:36 ` Darrick J. Wong
  2021-03-09  3:11 ` Zorro Lang
  0 siblings, 2 replies; 5+ messages in thread
From: Zorro Lang @ 2021-03-08 13:43 UTC (permalink / raw)
  To: fstests; +Cc: guan, sunke32, linux-ext4, linux-xfs

This's a regression test for linux 6b4b8e6b4ad8 ("ext4: fix bug for
rename with RENAME_WHITEOUT"). Rename a file with RENAME_WHITEOUT
flag might cause corruption when there's not enough space to
complete this renaming operation.

Signed-off-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Sun Ke <sunke32@huawei.com>
---

Hi,

Thanks for the reviewing from Eryu. V2 did below changes:
1) Import ./common/renameat2 and _require_renameat2 whiteout
2) Replace CHUNKS with NR_FILE
3) Reduce the number of test files from 64*64 to 4*64
4) Add to quick group 

More details about the reviewing history, refer to:
https://patchwork.kernel.org/project/fstests/patch/20210218071324.50413-1-zlang@redhat.com/

Thanks,
Zorro

 tests/generic/626     | 74 +++++++++++++++++++++++++++++++++++++++++++
 tests/generic/626.out |  2 ++
 tests/generic/group   |  1 +
 3 files changed, 77 insertions(+)
 create mode 100755 tests/generic/626
 create mode 100644 tests/generic/626.out

diff --git a/tests/generic/626 b/tests/generic/626
new file mode 100755
index 00000000..1baa73f8
--- /dev/null
+++ b/tests/generic/626
@@ -0,0 +1,74 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2021 HUAWEI.  All Rights Reserved.
+# Copyright (c) 2021 Red Hat Inc.  All Rights Reserved.
+#
+# FS QA Test No. 626
+#
+# Test RENAME_WHITEOUT on filesystem without space to create one more inodes.
+# This is a regression test for kernel commit:
+#   6b4b8e6b4ad8 ("ext4: ext4: fix bug for rename with RENAME_WHITEOUT")
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+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
+. ./common/populate
+. ./common/renameat2
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+_supported_fs generic
+_require_scratch
+_require_renameat2 whiteout
+
+_scratch_mkfs_sized $((256 * 1024 * 1024)) >> $seqres.full 2>&1
+_scratch_mount
+
+# Create lots of files, to help to trigger the bug easily
+NR_FILE=$((4 * 64))
+for ((i=0; i<NR_FILE; i++));do
+	touch $SCRATCH_MNT/srcfile$i
+done
+# Try to fill the whole fs
+nr_free=$(stat -f -c '%f' $SCRATCH_MNT)
+blksz="$(_get_block_size $SCRATCH_MNT)"
+_fill_fs $((nr_free * blksz)) $SCRATCH_MNT/fill_space $blksz 0 >> $seqres.full 2>&1
+# Use empty files to fill the rest
+for ((i=0; i<10000; i++));do
+	touch $SCRATCH_MNT/fill_file$i 2>/dev/null
+	# Until no more files can be created
+	if [ $? -ne 0 ];then
+		break
+	fi
+done
+# ENOSPC is expected here
+for ((i=0; i<NR_FILE; i++));do
+	$here/src/renameat2 -w $SCRATCH_MNT/srcfile$i $SCRATCH_MNT/dstfile$i >> $seqres.full 2>&1
+done
+_scratch_cycle_mount
+# Expect no errors at here
+for ((i=0; i<NR_FILE; i++));do
+	ls -l $SCRATCH_MNT/srcfile$i >/dev/null
+done
+
+echo "Silence is golden"
+# success, all done
+status=0
+exit
diff --git a/tests/generic/626.out b/tests/generic/626.out
new file mode 100644
index 00000000..130b2fef
--- /dev/null
+++ b/tests/generic/626.out
@@ -0,0 +1,2 @@
+QA output created by 626
+Silence is golden
diff --git a/tests/generic/group b/tests/generic/group
index 84db3789..c3448fe3 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -628,3 +628,4 @@
 623 auto quick shutdown
 624 auto quick verity
 625 auto quick verity
+626 auto quick rename enospc
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce
  2021-03-08 13:43 [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce Zorro Lang
@ 2021-03-08 18:36 ` Darrick J. Wong
  2021-03-09  2:37   ` Zorro Lang
  2021-03-09  3:11 ` Zorro Lang
  1 sibling, 1 reply; 5+ messages in thread
From: Darrick J. Wong @ 2021-03-08 18:36 UTC (permalink / raw)
  To: Zorro Lang; +Cc: fstests, guan, sunke32, linux-ext4, linux-xfs

On Mon, Mar 08, 2021 at 09:43:27PM +0800, Zorro Lang wrote:
> This's a regression test for linux 6b4b8e6b4ad8 ("ext4: fix bug for
> rename with RENAME_WHITEOUT"). Rename a file with RENAME_WHITEOUT
> flag might cause corruption when there's not enough space to
> complete this renaming operation.
> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>
> Signed-off-by: Sun Ke <sunke32@huawei.com>

Seems reasonable to me; does it pass on xfs?

If so,
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
> 
> Hi,
> 
> Thanks for the reviewing from Eryu. V2 did below changes:
> 1) Import ./common/renameat2 and _require_renameat2 whiteout
> 2) Replace CHUNKS with NR_FILE
> 3) Reduce the number of test files from 64*64 to 4*64
> 4) Add to quick group 
> 
> More details about the reviewing history, refer to:
> https://patchwork.kernel.org/project/fstests/patch/20210218071324.50413-1-zlang@redhat.com/
> 
> Thanks,
> Zorro
> 
>  tests/generic/626     | 74 +++++++++++++++++++++++++++++++++++++++++++
>  tests/generic/626.out |  2 ++
>  tests/generic/group   |  1 +
>  3 files changed, 77 insertions(+)
>  create mode 100755 tests/generic/626
>  create mode 100644 tests/generic/626.out
> 
> diff --git a/tests/generic/626 b/tests/generic/626
> new file mode 100755
> index 00000000..1baa73f8
> --- /dev/null
> +++ b/tests/generic/626
> @@ -0,0 +1,74 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2021 HUAWEI.  All Rights Reserved.
> +# Copyright (c) 2021 Red Hat Inc.  All Rights Reserved.
> +#
> +# FS QA Test No. 626
> +#
> +# Test RENAME_WHITEOUT on filesystem without space to create one more inodes.
> +# This is a regression test for kernel commit:
> +#   6b4b8e6b4ad8 ("ext4: ext4: fix bug for rename with RENAME_WHITEOUT")
> +#
> +seq=`basename $0`
> +seqres=$RESULT_DIR/$seq
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +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
> +. ./common/populate
> +. ./common/renameat2
> +
> +# remove previous $seqres.full before test
> +rm -f $seqres.full
> +
> +# real QA test starts here
> +_supported_fs generic
> +_require_scratch
> +_require_renameat2 whiteout
> +
> +_scratch_mkfs_sized $((256 * 1024 * 1024)) >> $seqres.full 2>&1
> +_scratch_mount
> +
> +# Create lots of files, to help to trigger the bug easily
> +NR_FILE=$((4 * 64))
> +for ((i=0; i<NR_FILE; i++));do
> +	touch $SCRATCH_MNT/srcfile$i
> +done
> +# Try to fill the whole fs
> +nr_free=$(stat -f -c '%f' $SCRATCH_MNT)
> +blksz="$(_get_block_size $SCRATCH_MNT)"
> +_fill_fs $((nr_free * blksz)) $SCRATCH_MNT/fill_space $blksz 0 >> $seqres.full 2>&1
> +# Use empty files to fill the rest
> +for ((i=0; i<10000; i++));do
> +	touch $SCRATCH_MNT/fill_file$i 2>/dev/null
> +	# Until no more files can be created
> +	if [ $? -ne 0 ];then
> +		break
> +	fi
> +done
> +# ENOSPC is expected here
> +for ((i=0; i<NR_FILE; i++));do
> +	$here/src/renameat2 -w $SCRATCH_MNT/srcfile$i $SCRATCH_MNT/dstfile$i >> $seqres.full 2>&1
> +done
> +_scratch_cycle_mount
> +# Expect no errors at here
> +for ((i=0; i<NR_FILE; i++));do
> +	ls -l $SCRATCH_MNT/srcfile$i >/dev/null
> +done
> +
> +echo "Silence is golden"
> +# success, all done
> +status=0
> +exit
> diff --git a/tests/generic/626.out b/tests/generic/626.out
> new file mode 100644
> index 00000000..130b2fef
> --- /dev/null
> +++ b/tests/generic/626.out
> @@ -0,0 +1,2 @@
> +QA output created by 626
> +Silence is golden
> diff --git a/tests/generic/group b/tests/generic/group
> index 84db3789..c3448fe3 100644
> --- a/tests/generic/group
> +++ b/tests/generic/group
> @@ -628,3 +628,4 @@
>  623 auto quick shutdown
>  624 auto quick verity
>  625 auto quick verity
> +626 auto quick rename enospc
> -- 
> 2.29.2
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce
  2021-03-08 18:36 ` Darrick J. Wong
@ 2021-03-09  2:37   ` Zorro Lang
  0 siblings, 0 replies; 5+ messages in thread
From: Zorro Lang @ 2021-03-09  2:37 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: fstests, guan, sunke32, linux-ext4, linux-xfs

On Mon, Mar 08, 2021 at 10:36:10AM -0800, Darrick J. Wong wrote:
> On Mon, Mar 08, 2021 at 09:43:27PM +0800, Zorro Lang wrote:
> > This's a regression test for linux 6b4b8e6b4ad8 ("ext4: fix bug for
> > rename with RENAME_WHITEOUT"). Rename a file with RENAME_WHITEOUT
> > flag might cause corruption when there's not enough space to
> > complete this renaming operation.
> > 
> > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > Signed-off-by: Sun Ke <sunke32@huawei.com>
> 
> Seems reasonable to me; does it pass on xfs?

Yes, it's passed on xfs and latest ext4(fixed this bug).

Thanks,
Zorro

> 
> If so,
> Reviewed-by: Darrick J. Wong <djwong@kernel.org>
> 
> --D
> 
> > ---
> > 
> > Hi,
> > 
> > Thanks for the reviewing from Eryu. V2 did below changes:
> > 1) Import ./common/renameat2 and _require_renameat2 whiteout
> > 2) Replace CHUNKS with NR_FILE
> > 3) Reduce the number of test files from 64*64 to 4*64
> > 4) Add to quick group 
> > 
> > More details about the reviewing history, refer to:
> > https://patchwork.kernel.org/project/fstests/patch/20210218071324.50413-1-zlang@redhat.com/
> > 
> > Thanks,
> > Zorro
> > 
> >  tests/generic/626     | 74 +++++++++++++++++++++++++++++++++++++++++++
> >  tests/generic/626.out |  2 ++
> >  tests/generic/group   |  1 +
> >  3 files changed, 77 insertions(+)
> >  create mode 100755 tests/generic/626
> >  create mode 100644 tests/generic/626.out
> > 
> > diff --git a/tests/generic/626 b/tests/generic/626
> > new file mode 100755
> > index 00000000..1baa73f8
> > --- /dev/null
> > +++ b/tests/generic/626
> > @@ -0,0 +1,74 @@
> > +#! /bin/bash
> > +# SPDX-License-Identifier: GPL-2.0
> > +# Copyright (c) 2021 HUAWEI.  All Rights Reserved.
> > +# Copyright (c) 2021 Red Hat Inc.  All Rights Reserved.
> > +#
> > +# FS QA Test No. 626
> > +#
> > +# Test RENAME_WHITEOUT on filesystem without space to create one more inodes.
> > +# This is a regression test for kernel commit:
> > +#   6b4b8e6b4ad8 ("ext4: ext4: fix bug for rename with RENAME_WHITEOUT")
> > +#
> > +seq=`basename $0`
> > +seqres=$RESULT_DIR/$seq
> > +echo "QA output created by $seq"
> > +
> > +here=`pwd`
> > +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
> > +. ./common/populate
> > +. ./common/renameat2
> > +
> > +# remove previous $seqres.full before test
> > +rm -f $seqres.full
> > +
> > +# real QA test starts here
> > +_supported_fs generic
> > +_require_scratch
> > +_require_renameat2 whiteout
> > +
> > +_scratch_mkfs_sized $((256 * 1024 * 1024)) >> $seqres.full 2>&1
> > +_scratch_mount
> > +
> > +# Create lots of files, to help to trigger the bug easily
> > +NR_FILE=$((4 * 64))
> > +for ((i=0; i<NR_FILE; i++));do
> > +	touch $SCRATCH_MNT/srcfile$i
> > +done
> > +# Try to fill the whole fs
> > +nr_free=$(stat -f -c '%f' $SCRATCH_MNT)
> > +blksz="$(_get_block_size $SCRATCH_MNT)"
> > +_fill_fs $((nr_free * blksz)) $SCRATCH_MNT/fill_space $blksz 0 >> $seqres.full 2>&1
> > +# Use empty files to fill the rest
> > +for ((i=0; i<10000; i++));do
> > +	touch $SCRATCH_MNT/fill_file$i 2>/dev/null
> > +	# Until no more files can be created
> > +	if [ $? -ne 0 ];then
> > +		break
> > +	fi
> > +done
> > +# ENOSPC is expected here
> > +for ((i=0; i<NR_FILE; i++));do
> > +	$here/src/renameat2 -w $SCRATCH_MNT/srcfile$i $SCRATCH_MNT/dstfile$i >> $seqres.full 2>&1
> > +done
> > +_scratch_cycle_mount
> > +# Expect no errors at here
> > +for ((i=0; i<NR_FILE; i++));do
> > +	ls -l $SCRATCH_MNT/srcfile$i >/dev/null
> > +done
> > +
> > +echo "Silence is golden"
> > +# success, all done
> > +status=0
> > +exit
> > diff --git a/tests/generic/626.out b/tests/generic/626.out
> > new file mode 100644
> > index 00000000..130b2fef
> > --- /dev/null
> > +++ b/tests/generic/626.out
> > @@ -0,0 +1,2 @@
> > +QA output created by 626
> > +Silence is golden
> > diff --git a/tests/generic/group b/tests/generic/group
> > index 84db3789..c3448fe3 100644
> > --- a/tests/generic/group
> > +++ b/tests/generic/group
> > @@ -628,3 +628,4 @@
> >  623 auto quick shutdown
> >  624 auto quick verity
> >  625 auto quick verity
> > +626 auto quick rename enospc
> > -- 
> > 2.29.2
> > 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce
  2021-03-08 13:43 [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce Zorro Lang
  2021-03-08 18:36 ` Darrick J. Wong
@ 2021-03-09  3:11 ` Zorro Lang
  2021-03-09  4:01   ` Eryu Guan
  1 sibling, 1 reply; 5+ messages in thread
From: Zorro Lang @ 2021-03-09  3:11 UTC (permalink / raw)
  To: guan; +Cc: fstests

On Mon, Mar 08, 2021 at 09:43:27PM +0800, Zorro Lang wrote:
> This's a regression test for linux 6b4b8e6b4ad8 ("ext4: fix bug for
> rename with RENAME_WHITEOUT"). Rename a file with RENAME_WHITEOUT
> flag might cause corruption when there's not enough space to
> complete this renaming operation.
> 
> Signed-off-by: Zorro Lang <zlang@redhat.com>
> Signed-off-by: Sun Ke <sunke32@huawei.com>
> ---

Hi Eryu,

Sorry I made a typo mistake on the patch subject, The 'sapce' should be 'space'.
If you don't mind, please help to modify it when you merge this patch. Or feel
free to tell me, if you need I re-send this patch again.

Thanks,
Zorro

> 
> Hi,
> 
> Thanks for the reviewing from Eryu. V2 did below changes:
> 1) Import ./common/renameat2 and _require_renameat2 whiteout
> 2) Replace CHUNKS with NR_FILE
> 3) Reduce the number of test files from 64*64 to 4*64
> 4) Add to quick group 
> 
> More details about the reviewing history, refer to:
> https://patchwork.kernel.org/project/fstests/patch/20210218071324.50413-1-zlang@redhat.com/
> 
> Thanks,
> Zorro
> 
>  tests/generic/626     | 74 +++++++++++++++++++++++++++++++++++++++++++
>  tests/generic/626.out |  2 ++
>  tests/generic/group   |  1 +
>  3 files changed, 77 insertions(+)
>  create mode 100755 tests/generic/626
>  create mode 100644 tests/generic/626.out
> 
> diff --git a/tests/generic/626 b/tests/generic/626
> new file mode 100755
> index 00000000..1baa73f8
> --- /dev/null
> +++ b/tests/generic/626
> @@ -0,0 +1,74 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2021 HUAWEI.  All Rights Reserved.
> +# Copyright (c) 2021 Red Hat Inc.  All Rights Reserved.
> +#
> +# FS QA Test No. 626
> +#
> +# Test RENAME_WHITEOUT on filesystem without space to create one more inodes.
> +# This is a regression test for kernel commit:
> +#   6b4b8e6b4ad8 ("ext4: ext4: fix bug for rename with RENAME_WHITEOUT")
> +#
> +seq=`basename $0`
> +seqres=$RESULT_DIR/$seq
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +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
> +. ./common/populate
> +. ./common/renameat2
> +
> +# remove previous $seqres.full before test
> +rm -f $seqres.full
> +
> +# real QA test starts here
> +_supported_fs generic
> +_require_scratch
> +_require_renameat2 whiteout
> +
> +_scratch_mkfs_sized $((256 * 1024 * 1024)) >> $seqres.full 2>&1
> +_scratch_mount
> +
> +# Create lots of files, to help to trigger the bug easily
> +NR_FILE=$((4 * 64))
> +for ((i=0; i<NR_FILE; i++));do
> +	touch $SCRATCH_MNT/srcfile$i
> +done
> +# Try to fill the whole fs
> +nr_free=$(stat -f -c '%f' $SCRATCH_MNT)
> +blksz="$(_get_block_size $SCRATCH_MNT)"
> +_fill_fs $((nr_free * blksz)) $SCRATCH_MNT/fill_space $blksz 0 >> $seqres.full 2>&1
> +# Use empty files to fill the rest
> +for ((i=0; i<10000; i++));do
> +	touch $SCRATCH_MNT/fill_file$i 2>/dev/null
> +	# Until no more files can be created
> +	if [ $? -ne 0 ];then
> +		break
> +	fi
> +done
> +# ENOSPC is expected here
> +for ((i=0; i<NR_FILE; i++));do
> +	$here/src/renameat2 -w $SCRATCH_MNT/srcfile$i $SCRATCH_MNT/dstfile$i >> $seqres.full 2>&1
> +done
> +_scratch_cycle_mount
> +# Expect no errors at here
> +for ((i=0; i<NR_FILE; i++));do
> +	ls -l $SCRATCH_MNT/srcfile$i >/dev/null
> +done
> +
> +echo "Silence is golden"
> +# success, all done
> +status=0
> +exit
> diff --git a/tests/generic/626.out b/tests/generic/626.out
> new file mode 100644
> index 00000000..130b2fef
> --- /dev/null
> +++ b/tests/generic/626.out
> @@ -0,0 +1,2 @@
> +QA output created by 626
> +Silence is golden
> diff --git a/tests/generic/group b/tests/generic/group
> index 84db3789..c3448fe3 100644
> --- a/tests/generic/group
> +++ b/tests/generic/group
> @@ -628,3 +628,4 @@
>  623 auto quick shutdown
>  624 auto quick verity
>  625 auto quick verity
> +626 auto quick rename enospc
> -- 
> 2.29.2
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce
  2021-03-09  3:11 ` Zorro Lang
@ 2021-03-09  4:01   ` Eryu Guan
  0 siblings, 0 replies; 5+ messages in thread
From: Eryu Guan @ 2021-03-09  4:01 UTC (permalink / raw)
  To: guan, fstests

On Tue, Mar 09, 2021 at 11:11:29AM +0800, Zorro Lang wrote:
> On Mon, Mar 08, 2021 at 09:43:27PM +0800, Zorro Lang wrote:
> > This's a regression test for linux 6b4b8e6b4ad8 ("ext4: fix bug for
> > rename with RENAME_WHITEOUT"). Rename a file with RENAME_WHITEOUT
> > flag might cause corruption when there's not enough space to
> > complete this renaming operation.
> > 
> > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > Signed-off-by: Sun Ke <sunke32@huawei.com>
> > ---
> 
> Hi Eryu,
> 
> Sorry I made a typo mistake on the patch subject, The 'sapce' should be 'space'.
> If you don't mind, please help to modify it when you merge this patch. Or feel

Sure, no problem :)

Thanks,
Eryu

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-03-09  4:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-08 13:43 [PATCH v2] xfstests: rename RENAME_WHITEOUT test on fs no enough sapce Zorro Lang
2021-03-08 18:36 ` Darrick J. Wong
2021-03-09  2:37   ` Zorro Lang
2021-03-09  3:11 ` Zorro Lang
2021-03-09  4:01   ` Eryu Guan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.