xfs
[Top] [All Lists]

Re: [PATCH] xfstests: use xfs_io fiemap instead of filefrag

To: Josef Bacik <jbacik@xxxxxxxxxxxx>
Subject: Re: [PATCH] xfstests: use xfs_io fiemap instead of filefrag
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Fri, 21 Jun 2013 13:22:54 -0500
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1371751743-20850-1-git-send-email-jbacik@xxxxxxxxxxxx>
References: <1371751743-20850-1-git-send-email-jbacik@xxxxxxxxxxxx>
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130509 Thunderbird/17.0.6
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@xxxxxxxxxxxx>
> ---
>  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.
> 

<Prev in Thread] Current Thread [Next in Thread>