xfs
[Top] [All Lists]

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

To: Josef Bacik <jbacik@xxxxxxxxxxxx>
Subject: Re: [PATCH] xfstests: use xfs_io fiemap instead of filefrag V2
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Wed, 26 Jun 2013 12:19:43 +1000
Cc: xfs@xxxxxxxxxxx, sandeen@xxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1372083696-10402-1-git-send-email-jbacik@xxxxxxxxxxxx>
References: <1372083696-10402-1-git-send-email-jbacik@xxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Mon, Jun 24, 2013 at 10:21:36AM -0400, 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.  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@xxxxxxxxxxxx>
> ---
> V1->V2: change _require_defrag to check for xfs_io having fiemap support as 
> per
> Eric's suggestion.
> 
>  common/defrag |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/common/defrag b/common/defrag
> index f04fd42..a4bc976 100644
> --- a/common/defrag
> +++ b/common/defrag
> @@ -38,13 +38,13 @@ _require_defrag()
>      esac
>  
>      _require_command $DEFRAG_PROG
> -    _require_command $FILEFRAG_PROG
> +    _require_xfs_io_fiemap
>  }
>  
>  _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

Looks good, but you can do that with a single fiemap execution:

        $XFS_IO_PROG -c "fiemap" $1 | tee -a $seqres.full |\
                                    | tail -n +2 | grep -v hole | wc -l

Still good either way

Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

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