diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2016-08-03 12:16:05 +1000 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2016-08-03 12:16:05 +1000 |
commit | 9c19464469556a0cd342fc40a24926ab46d7d243 (patch) | |
tree | c4cd6d84d5e799734cefc169ef627103b485d511 /fs/xfs/xfs_trans.h | |
parent | f8dbebef98f0b960a0e91d6b8d45c288c377797b (diff) | |
download | linux-9c19464469556a0cd342fc40a24926ab46d7d243.tar.gz linux-9c19464469556a0cd342fc40a24926ab46d7d243.tar.bz2 linux-9c19464469556a0cd342fc40a24926ab46d7d243.zip |
xfs: propagate bmap updates to rmapbt
When we map, unmap, or convert an extent in a file's data or attr
fork, schedule a respective update in the rmapbt. Previous versions
of this patch required a 1:1 correspondence between bmap and rmap,
but this is no longer true as we now have ability to make interval
queries against the rmapbt.
We use the deferred operations code to handle redo operations
atomically and deadlock free. This plumbs in all five rmap actions
(map, unmap, convert extent, alloc, free); we'll use the first three
now for file data, and reflink will want the last two. We also add
an error injection site to test log recovery.
Finally, we need to fix the bmap shift extent code to adjust the
rmaps correctly.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_trans.h')
-rw-r--r-- | fs/xfs/xfs_trans.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/xfs/xfs_trans.h b/fs/xfs/xfs_trans.h index 07f4550825f6..bb4b84f9347e 100644 --- a/fs/xfs/xfs_trans.h +++ b/fs/xfs/xfs_trans.h @@ -35,6 +35,7 @@ struct xfs_dquot_acct; struct xfs_busy_extent; struct xfs_rud_log_item; struct xfs_rui_log_item; +struct xfs_btree_cur; typedef struct xfs_log_item { struct list_head li_ail; /* AIL pointers */ @@ -245,6 +246,6 @@ int xfs_trans_log_finish_rmap_update(struct xfs_trans *tp, struct xfs_rud_log_item *rudp, enum xfs_rmap_intent_type type, __uint64_t owner, int whichfork, 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); #endif /* __XFS_TRANS_H__ */ |