diff mbox

generic: make 17[1-4] work well when btrfs compression is enabled

Message ID 20161007070042.12258-1-wangxg.fnst@cn.fujitsu.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Xiaoguang Wang Oct. 7, 2016, 7 a.m. UTC
When enabling btrfs compression, original codes can not fill fs
correctly, fix this.

Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
---
 tests/generic/171 | 4 +---
 tests/generic/172 | 2 +-
 tests/generic/173 | 4 +---
 tests/generic/174 | 4 +---
 4 files changed, 4 insertions(+), 10 deletions(-)

Comments

Dave Chinner Oct. 7, 2016, 2:36 p.m. UTC | #1
On Fri, Oct 07, 2016 at 03:00:42PM +0800, Wang Xiaoguang wrote:
> When enabling btrfs compression, original codes can not fill fs
> correctly, fix this.
> 
> Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
> ---
>  tests/generic/171 | 4 +---
>  tests/generic/172 | 2 +-
>  tests/generic/173 | 4 +---
>  tests/generic/174 | 4 +---
>  4 files changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/tests/generic/171 b/tests/generic/171
> index f391685..d2ae8e4 100755
> --- a/tests/generic/171
> +++ b/tests/generic/171
> @@ -75,9 +75,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile
>  sync
>  
>  echo "Allocate the rest of the space"
> -nr_free=$(stat -f -c '%f' $testdir)
> -touch $testdir/file0 $testdir/file1
> -_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
> +dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1

Please don't replace xfs_io writes using a specific data pattern
with dd calls that write zeros. Indeed, we don't use dd for new
tests anymore - xfs_io should be used.

Write a function that fills all the remaining free space (one may
already exist) and call it in all these places.

Cheers,

Dave.
Darrick J. Wong Oct. 9, 2016, 9:04 p.m. UTC | #2
On Sat, Oct 08, 2016 at 01:36:10AM +1100, Dave Chinner wrote:
> On Fri, Oct 07, 2016 at 03:00:42PM +0800, Wang Xiaoguang wrote:
> > When enabling btrfs compression, original codes can not fill fs
> > correctly, fix this.
> > 
> > Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
> > ---
> >  tests/generic/171 | 4 +---
> >  tests/generic/172 | 2 +-
> >  tests/generic/173 | 4 +---
> >  tests/generic/174 | 4 +---
> >  4 files changed, 4 insertions(+), 10 deletions(-)
> > 
> > diff --git a/tests/generic/171 b/tests/generic/171
> > index f391685..d2ae8e4 100755
> > --- a/tests/generic/171
> > +++ b/tests/generic/171
> > @@ -75,9 +75,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile
> >  sync
> >  
> >  echo "Allocate the rest of the space"
> > -nr_free=$(stat -f -c '%f' $testdir)
> > -touch $testdir/file0 $testdir/file1

Why remove this line which ensures that the inode we're going to use (file1)
later in the test has been allocated /before/ we try to eat all the space?

> > -_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
> > +dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1

Uh... isn't a bunch of zeroes just as compressible as 0x61?  I suppose
the point here is to write until write returns ENOSPC, since in btrfs
land we can't assume that writing $nr blocks will use up at least that
much space.

Does XFS reflink still pass this test with this patch?

> Please don't replace xfs_io writes using a specific data pattern
> with dd calls that write zeros. Indeed, we don't use dd for new
> tests anymore - xfs_io should be used.
> 
> Write a function that fills all the remaining free space (one may
> already exist) and call it in all these places.

Yeah, there already are a few of these...

--D

> 
> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@fromorbit.com
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Xiaoguang Wang Oct. 10, 2016, 3:49 a.m. UTC | #3
hi,

On 10/10/2016 05:04 AM, Darrick J. Wong wrote:
> On Sat, Oct 08, 2016 at 01:36:10AM +1100, Dave Chinner wrote:
>> On Fri, Oct 07, 2016 at 03:00:42PM +0800, Wang Xiaoguang wrote:
>>> When enabling btrfs compression, original codes can not fill fs
>>> correctly, fix this.
>>>
>>> Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
>>> ---
>>>   tests/generic/171 | 4 +---
>>>   tests/generic/172 | 2 +-
>>>   tests/generic/173 | 4 +---
>>>   tests/generic/174 | 4 +---
>>>   4 files changed, 4 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/tests/generic/171 b/tests/generic/171
>>> index f391685..d2ae8e4 100755
>>> --- a/tests/generic/171
>>> +++ b/tests/generic/171
>>> @@ -75,9 +75,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile
>>>   sync
>>>   
>>>   echo "Allocate the rest of the space"
>>> -nr_free=$(stat -f -c '%f' $testdir)
>>> -touch $testdir/file0 $testdir/file1
> Why remove this line which ensures that the inode we're going to use (file1)
> later in the test has been allocated /before/ we try to eat all the space?
Sorry, I don't understand :)
In generic/171, generic/172, generic/173, generic/174, you created file0 and
file1, but I don't see test cases use them and they are empty.

>
>>> -_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
>>> +dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1
> Uh... isn't a bunch of zeroes just as compressible as 0x61?
0x61 is also compressible.
> I suppose
> the point here is to write until write returns ENOSPC, since in btrfs
> land we can't assume that writing $nr blocks will use up at least that
> much space.
Yes.

>
> Does XFS reflink still pass this test with this patch?
Could you please give a stable xfs repotory that supports xfs reflink, 
thanks.

>
>> Please don't replace xfs_io writes using a specific data pattern
>> with dd calls that write zeros. Indeed, we don't use dd for new
>> tests anymore - xfs_io should be used.
>>
>> Write a function that fills all the remaining free space (one may
>> already exist) and call it in all these places.
> Yeah, there already are a few of these...
OK, I'll use it, thanks.

Regards,
Xiaoguang Wang
>
> --D
>
>> Cheers,
>>
>> Dave.
>> -- 
>> Dave Chinner
>> david@fromorbit.com
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Darrick J. Wong Oct. 10, 2016, 4:25 a.m. UTC | #4
On Mon, Oct 10, 2016 at 11:49:03AM +0800, Wang Xiaoguang wrote:
> hi,
> 
> On 10/10/2016 05:04 AM, Darrick J. Wong wrote:
> >On Sat, Oct 08, 2016 at 01:36:10AM +1100, Dave Chinner wrote:
> >>On Fri, Oct 07, 2016 at 03:00:42PM +0800, Wang Xiaoguang wrote:
> >>>When enabling btrfs compression, original codes can not fill fs
> >>>correctly, fix this.
> >>>
> >>>Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
> >>>---
> >>>  tests/generic/171 | 4 +---
> >>>  tests/generic/172 | 2 +-
> >>>  tests/generic/173 | 4 +---
> >>>  tests/generic/174 | 4 +---
> >>>  4 files changed, 4 insertions(+), 10 deletions(-)
> >>>
> >>>diff --git a/tests/generic/171 b/tests/generic/171
> >>>index f391685..d2ae8e4 100755
> >>>--- a/tests/generic/171
> >>>+++ b/tests/generic/171
> >>>@@ -75,9 +75,7 @@ _cp_reflink $testdir/bigfile $testdir/clonefile
> >>>  sync
> >>>  echo "Allocate the rest of the space"
> >>>-nr_free=$(stat -f -c '%f' $testdir)
> >>>-touch $testdir/file0 $testdir/file1
> >Why remove this line which ensures that the inode we're going to use (file1)
> >later in the test has been allocated /before/ we try to eat all the space?
> Sorry, I don't understand :)
> In generic/171, generic/172, generic/173, generic/174, you created file0 and
> file1, but I don't see test cases use them and they are empty.
> 
> >
> >>>-_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
> >>>+dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1
> >Uh... isn't a bunch of zeroes just as compressible as 0x61?
> 0x61 is also compressible.
> >I suppose
> >the point here is to write until write returns ENOSPC, since in btrfs
> >land we can't assume that writing $nr blocks will use up at least that
> >much space.
> Yes.

Ok, just making sure I figured it out correctly. :)

> >
> >Does XFS reflink still pass this test with this patch?
> Could you please give a stable xfs repotory that supports xfs reflink,
> thanks.

The for-next branch of Dave Chinner's kernel tree:
https://git.kernel.org/cgit/linux/kernel/git/dgc/linux-xfs.git/?h=for-next

And userspace programs in my repo:
https://github.com/djwong/xfsprogs/tree/for-dave-for-4.9-10

(I wouldn't call them stable, but they are what's submitted for 4.9.)

> >>Please don't replace xfs_io writes using a specific data pattern
> >>with dd calls that write zeros. Indeed, we don't use dd for new
> >>tests anymore - xfs_io should be used.
> >>
> >>Write a function that fills all the remaining free space (one may
> >>already exist) and call it in all these places.
> >Yeah, there already are a few of these...
> OK, I'll use it, thanks.

No problem! :)

--D

> 
> Regards,
> Xiaoguang Wang
> >
> >--D
> >
> >>Cheers,
> >>
> >>Dave.
> >>-- 
> >>Dave Chinner
> >>david@fromorbit.com
> >>--
> >>To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> >>the body of a message to majordomo@vger.kernel.org
> >>More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tests/generic/171 b/tests/generic/171
index f391685..d2ae8e4 100755
--- a/tests/generic/171
+++ b/tests/generic/171
@@ -75,9 +75,7 @@  _cp_reflink $testdir/bigfile $testdir/clonefile
 sync
 
 echo "Allocate the rest of the space"
-nr_free=$(stat -f -c '%f' $testdir)
-touch $testdir/file0 $testdir/file1
-_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
+dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1
 sync
 
 echo "CoW the big file"
diff --git a/tests/generic/172 b/tests/generic/172
index 8192290..3bb8687 100755
--- a/tests/generic/172
+++ b/tests/generic/172
@@ -73,7 +73,7 @@  sync
 
 echo "Allocate the rest of the space"
 touch $testdir/file0 $testdir/file1
-_pwrite_byte 0x61 0 $fs_size $testdir/eat_my_space >> $seqres.full 2>&1
+dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1
 sync
 
 echo "CoW the big file"
diff --git a/tests/generic/173 b/tests/generic/173
index c5fac9e..38bc951 100755
--- a/tests/generic/173
+++ b/tests/generic/173
@@ -75,9 +75,7 @@  _cp_reflink $testdir/bigfile $testdir/clonefile
 sync
 
 echo "Allocate the rest of the space"
-nr_free=$(stat -f -c '%f' $testdir)
-touch $testdir/file0 $testdir/file1
-_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
+dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1
 sync
 
 echo "mmap CoW the big file"
diff --git a/tests/generic/174 b/tests/generic/174
index 8077d76..a55be38 100755
--- a/tests/generic/174
+++ b/tests/generic/174
@@ -76,9 +76,7 @@  _cp_reflink $testdir/bigfile $testdir/clonefile
 sync
 
 echo "Allocate the rest of the space"
-nr_free=$(stat -f -c '%f' $testdir)
-touch $testdir/file0 $testdir/file1
-_pwrite_byte 0x61 0 $((blksz * nr_free)) $testdir/eat_my_space >> $seqres.full 2>&1
+dd if=/dev/zero of=$testdir/eat_my_space >> $seqres.full 2>&1
 sync
 
 echo "CoW the big file"