diff options
author | Olaf Weber <olaf@sgi.com> | 2006-06-09 00:48:12 -0400 |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2006-06-09 00:48:12 -0400 |
commit | 3e57ecf640428c01ba1ed8c8fc538447ada1715b (patch) | |
tree | bcc92b0017b5ec8e106649cd53beffdd6addde07 /fs/xfs/xfs_dir2.c | |
parent | 128e6ced247cda88f96fa9f2e4ba8b2c4a681560 (diff) |
[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>
Diffstat (limited to 'fs/xfs/xfs_dir2.c')
-rw-r--r-- | fs/xfs/xfs_dir2.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index 022c8398ab62..80238a2263fa 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c | |||
@@ -549,7 +549,7 @@ xfs_dir2_grow_inode( | |||
549 | if ((error = xfs_bmapi(tp, dp, bno, count, | 549 | if ((error = xfs_bmapi(tp, dp, bno, count, |
550 | XFS_BMAPI_WRITE|XFS_BMAPI_METADATA|XFS_BMAPI_CONTIG, | 550 | XFS_BMAPI_WRITE|XFS_BMAPI_METADATA|XFS_BMAPI_CONTIG, |
551 | args->firstblock, args->total, &map, &nmap, | 551 | args->firstblock, args->total, &map, &nmap, |
552 | args->flist))) { | 552 | args->flist, NULL))) { |
553 | return error; | 553 | return error; |
554 | } | 554 | } |
555 | ASSERT(nmap <= 1); | 555 | ASSERT(nmap <= 1); |
@@ -585,7 +585,8 @@ xfs_dir2_grow_inode( | |||
585 | if ((error = xfs_bmapi(tp, dp, b, c, | 585 | if ((error = xfs_bmapi(tp, dp, b, c, |
586 | XFS_BMAPI_WRITE|XFS_BMAPI_METADATA, | 586 | XFS_BMAPI_WRITE|XFS_BMAPI_METADATA, |
587 | args->firstblock, args->total, | 587 | args->firstblock, args->total, |
588 | &mapp[mapi], &nmap, args->flist))) { | 588 | &mapp[mapi], &nmap, args->flist, |
589 | NULL))) { | ||
589 | kmem_free(mapp, sizeof(*mapp) * count); | 590 | kmem_free(mapp, sizeof(*mapp) * count); |
590 | return error; | 591 | return error; |
591 | } | 592 | } |
@@ -786,7 +787,7 @@ xfs_dir2_shrink_inode( | |||
786 | */ | 787 | */ |
787 | if ((error = xfs_bunmapi(tp, dp, da, mp->m_dirblkfsbs, | 788 | if ((error = xfs_bunmapi(tp, dp, da, mp->m_dirblkfsbs, |
788 | XFS_BMAPI_METADATA, 0, args->firstblock, args->flist, | 789 | XFS_BMAPI_METADATA, 0, args->firstblock, args->flist, |
789 | &done))) { | 790 | NULL, &done))) { |
790 | /* | 791 | /* |
791 | * ENOSPC actually can happen if we're in a removename with | 792 | * ENOSPC actually can happen if we're in a removename with |
792 | * no space reservation, and the resulting block removal | 793 | * no space reservation, and the resulting block removal |