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;
>
|