[XFS] Add parameters to xfs_bmapi() and xfs_bunmapi() to have them report
the range spanned by modifications to the in-core extent map. Add XFS_BUNMAPI() and XFS_SWAP_EXTENTS() macros that call xfs_bunmapi() and xfs_swap_extents() via the ioops vector. Change all calls that may modify the in-core extent map for the data fork to go through the ioops vector. This allows a cache of extent map data to be kept in sync. SGI-PV: 947615 SGI-Modid: xfs-linux-melb:xfs-kern:209226a Signed-off-by: Olaf Weber <olaf@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
|
||||
* Copyright (c) 2000-2006 Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@@ -25,6 +25,20 @@ struct xfs_inode;
|
||||
struct xfs_mount;
|
||||
struct xfs_trans;
|
||||
|
||||
/*
|
||||
* DELTA: describe a change to the in-core extent list.
|
||||
*
|
||||
* Internally the use of xed_blockount is somewhat funky.
|
||||
* xed_blockcount contains an offset much of the time because this
|
||||
* makes merging changes easier. (xfs_fileoff_t and xfs_filblks_t are
|
||||
* the same underlying type).
|
||||
*/
|
||||
typedef struct xfs_extdelta
|
||||
{
|
||||
xfs_fileoff_t xed_startoff; /* offset of range */
|
||||
xfs_filblks_t xed_blockcount; /* blocks in range */
|
||||
} xfs_extdelta_t;
|
||||
|
||||
/*
|
||||
* List of extents to be free "later".
|
||||
* The list is kept sorted on xbf_startblock.
|
||||
@@ -275,7 +289,9 @@ xfs_bmapi(
|
||||
xfs_extlen_t total, /* total blocks needed */
|
||||
struct xfs_bmbt_irec *mval, /* output: map values */
|
||||
int *nmap, /* i/o: mval size/count */
|
||||
xfs_bmap_free_t *flist); /* i/o: list extents to free */
|
||||
xfs_bmap_free_t *flist, /* i/o: list extents to free */
|
||||
xfs_extdelta_t *delta); /* o: change made to incore
|
||||
extents */
|
||||
|
||||
/*
|
||||
* Map file blocks to filesystem blocks, simple version.
|
||||
@@ -309,6 +325,8 @@ xfs_bunmapi(
|
||||
xfs_fsblock_t *firstblock, /* first allocated block
|
||||
controls a.g. for allocs */
|
||||
xfs_bmap_free_t *flist, /* i/o: list extents to free */
|
||||
xfs_extdelta_t *delta, /* o: change made to incore
|
||||
extents */
|
||||
int *done); /* set if not done yet */
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user