xfs
[Top] [All Lists]

Re: [PATCH 15/25] xfs: pass bmalloca structure to xfs_bmap_isaeof

To: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Subject: Re: [PATCH 15/25] xfs: pass bmalloca structure to xfs_bmap_isaeof
From: Alex Elder <aelder@xxxxxxx>
Date: Fri, 9 Sep 2011 18:55:56 -0500
Cc: <xfs@xxxxxxxxxxx>, Dave Chinner <dchinner@xxxxxxxxxx>
In-reply-to: <20110824060643.660514652@xxxxxxxxxxxxxxxxxxxxxx>
References: <20110824060428.789245205@xxxxxxxxxxxxxxxxxxxxxx> <20110824060643.660514652@xxxxxxxxxxxxxxxxxxxxxx>
Reply-to: <aelder@xxxxxxx>
On Wed, 2011-08-24 at 02:04 -0400, Christoph Hellwig wrote:
> All the variables xfs_bmap_isaeof() is passed are contained within
> the xfs_bmalloca structure. Pass that instead.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

This looks good.

Now that the transaction pointer is available in
xfs_bmap_isaeof(), it gets used in the call to
xfs_bmap_last_extent().  It looks to me like
this means btree block buffers will be added to
and removed from the transaction's item list
in xfs_bmap_read_extents(), and that list will
be scanned for these buffers in xfs_trans_read_buf()
(unlike before).

I don't question whether that's correct, but
is that desirable?  Would we be just as well
off *not* providing the transaction pointer?

Anyway:

Reviewed-by: Alex Elder <aelder@xxxxxxx>
 
> Index: xfs/fs/xfs/xfs_bmap.c
> ===================================================================
> --- xfs.orig/fs/xfs/xfs_bmap.c        2011-08-23 21:14:33.735424450 +0200
> +++ xfs/fs/xfs/xfs_bmap.c     2011-08-23 21:14:35.358748989 +0200
> @@ -3869,17 +3869,16 @@ xfs_bmap_last_extent(
>   */
>  STATIC int
>  xfs_bmap_isaeof(
> -     struct xfs_inode        *ip,
> -     xfs_fileoff_t           off,
> -     int                     whichfork,
> -     char                    *aeof)
> +     struct xfs_bmalloca     *bma,
> +     int                     whichfork)
>  {
>       struct xfs_bmbt_irec    rec;
>       int                     is_empty;
>       int                     error;
>  
> -     *aeof = 0;
> -     error = xfs_bmap_last_extent(NULL, ip, whichfork, &rec, &is_empty);
> +     bma->aeof = 0;
> +     error = xfs_bmap_last_extent(bma->tp, bma->ip, whichfork, &rec,
> +                                  &is_empty);

Here is the spot I'm referring to.

>       if (error || is_empty)
>               return error;
>  


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