summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_trans_rmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_trans_rmap.c')
-rw-r--r--fs/xfs/xfs_trans_rmap.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/xfs/xfs_trans_rmap.c b/fs/xfs/xfs_trans_rmap.c
index baab99077f77..83414764e1ab 100644
--- a/fs/xfs/xfs_trans_rmap.c
+++ b/fs/xfs/xfs_trans_rmap.c
@@ -171,14 +171,15 @@ xfs_trans_log_finish_rmap_update(
xfs_fileoff_t startoff,
xfs_fsblock_t startblock,
xfs_filblks_t blockcount,
- xfs_exntst_t state)
+ xfs_exntst_t state,
+ struct xfs_btree_cur **pcur)
{
uint next_extent;
struct xfs_map_extent *rmap;
int error;
- /* XXX: actually finish the rmap update here */
- error = -EFSCORRUPTED;
+ error = xfs_rmap_finish_one(tp, type, owner, whichfork, startoff,
+ startblock, blockcount, state, pcur);
/*
* Mark the transaction dirty, even on error. This ensures the
@@ -276,7 +277,8 @@ xfs_rmap_update_finish_item(
rmap->ri_bmap.br_startoff,
rmap->ri_bmap.br_startblock,
rmap->ri_bmap.br_blockcount,
- rmap->ri_bmap.br_state);
+ rmap->ri_bmap.br_state,
+ (struct xfs_btree_cur **)state);
kmem_free(rmap);
return error;
}
@@ -288,6 +290,9 @@ xfs_rmap_update_finish_cleanup(
void *state,
int error)
{
+ struct xfs_btree_cur *rcur = state;
+
+ xfs_rmap_finish_one_cleanup(tp, rcur, error);
}
/* Abort all pending RUIs. */