public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] xfstests: use xfs_io fiemap instead of filefrag
@ 2013-06-20 18:09 Josef Bacik
  2013-06-21 18:22 ` Eric Sandeen
  0 siblings, 1 reply; 2+ messages in thread
From: Josef Bacik @ 2013-06-20 18:09 UTC (permalink / raw)
  To: xfs

Btrfs has always failed shared/218 because of the way we allocate extents on
disk.  The last part of 218 writes contiguously holey from the start of the file
forward, which for btrfs means we get 16 extents but they are physically
contigous.  filefrag -v shows all 16 extents, but prints out that there is 1
extent, because they are physically contiguous.  This isn't quite right and
makes the test fail.  So instead of using filefrag use xfs_io -c fiemap which
will print the whole map and then get the count from there.  With this patch
btrfs now passes the test, I also verified that ext4 and xfs still pass this
test.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
---
 common/defrag |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/defrag b/common/defrag
index f04fd42..a7e5488 100644
--- a/common/defrag
+++ b/common/defrag
@@ -43,8 +43,8 @@ _require_defrag()
 
 _extent_count()
 {
-	$FILEFRAG_PROG $1 | awk '{print $2}'
-	$FILEFRAG_PROG -v $1  >> $seqres.full 2>&1
+	$XFS_IO_PROG -c "fiemap" $1 | tail -n +2 | grep -v hole | wc -l
+	$XFS_IO_PROG -c "fiemap" $1  >> $seqres.full 2>&1
 }
 
 # Defrag file, check it, and remove it.
-- 
1.7.7.6

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

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

* Re: [PATCH] xfstests: use xfs_io fiemap instead of filefrag
  2013-06-20 18:09 [PATCH] xfstests: use xfs_io fiemap instead of filefrag Josef Bacik
@ 2013-06-21 18:22 ` Eric Sandeen
  0 siblings, 0 replies; 2+ messages in thread
From: Eric Sandeen @ 2013-06-21 18:22 UTC (permalink / raw)
  To: Josef Bacik; +Cc: xfs

On 6/20/13 1:09 PM, Josef Bacik wrote:
> Btrfs has always failed shared/218 because of the way we allocate extents on
> disk.  The last part of 218 writes contiguously holey from the start of the file
> forward, which for btrfs means we get 16 extents but they are physically
> contigous.  filefrag -v shows all 16 extents, but prints out that there is 1
> extent, because they are physically contiguous. 

I'd call that a filefrag bug but TBH filefrag has been so fragile, I don't
mind just switching to xfs_io.

> This isn't quite right and
> makes the test fail.  So instead of using filefrag use xfs_io -c fiemap which
> will print the whole map and then get the count from there.  With this patch
> btrfs now passes the test, I also verified that ext4 and xfs still pass this
> test.  Thanks,

Seems fine other than I think we need a:

_require_xfs_io_fiemap

somewhere; either in the tests that call _extent_count, or maybe just at the
top of common/defrag, although that's a little bigger hammer.

-Eric

> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
> ---
>  common/defrag |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/common/defrag b/common/defrag
> index f04fd42..a7e5488 100644
> --- a/common/defrag
> +++ b/common/defrag
> @@ -43,8 +43,8 @@ _require_defrag()
>  
>  _extent_count()
>  {
> -	$FILEFRAG_PROG $1 | awk '{print $2}'
> -	$FILEFRAG_PROG -v $1  >> $seqres.full 2>&1
> +	$XFS_IO_PROG -c "fiemap" $1 | tail -n +2 | grep -v hole | wc -l
> +	$XFS_IO_PROG -c "fiemap" $1  >> $seqres.full 2>&1
>  }
>  
>  # Defrag file, check it, and remove it.
> 

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

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

end of thread, other threads:[~2013-06-21 18:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-20 18:09 [PATCH] xfstests: use xfs_io fiemap instead of filefrag Josef Bacik
2013-06-21 18:22 ` Eric Sandeen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox