2024-04-16 00:54:16 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright ( c ) 2020 - 2024 Oracle . All Rights Reserved .
* Author : Darrick J . Wong < djwong @ kernel . org >
*/
# ifndef __XFS_EXCHMAPS_ITEM_H__
# define __XFS_EXCHMAPS_ITEM_H__
/*
* The file mapping exchange intent item helps us exchange multiple file
* mappings between two inode forks . It does this by tracking the range of
* file block offsets that still need to be exchanged , and relogs as progress
* happens .
*
* * I items should be recorded in the * first * of a series of rolled
* transactions , and the * D items should be recorded in the same transaction
* that records the associated bmbt updates .
*
* Should the system crash after the commit of the first transaction but
* before the commit of the final transaction in a series , log recovery will
* use the redo information recorded by the intent items to replay the
* rest of the mapping exchanges .
*/
/* kernel only XMI/XMD definitions */
struct xfs_mount ;
struct kmem_cache ;
/*
* This is the incore file mapping exchange intent log item . It is used to log
* the fact that we are exchanging mappings between two files . It is used in
* conjunction with the incore file mapping exchange done log item described
* below .
*
* These log items follow the same rules as struct xfs_efi_log_item ; see the
* comments about that structure ( in xfs_extfree_item . h ) for more details .
*/
struct xfs_xmi_log_item {
struct xfs_log_item xmi_item ;
atomic_t xmi_refcount ;
struct xfs_xmi_log_format xmi_format ;
} ;
/*
* This is the incore file mapping exchange done log item . It is used to log
* the fact that an exchange mentioned in an earlier xmi item have been
* performed .
*/
struct xfs_xmd_log_item {
struct xfs_log_item xmd_item ;
struct xfs_xmi_log_item * xmd_intent_log_item ;
struct xfs_xmd_log_format xmd_format ;
} ;
extern struct kmem_cache * xfs_xmi_cache ;
extern struct kmem_cache * xfs_xmd_cache ;
2024-04-16 00:54:17 +03:00
struct xfs_exchmaps_intent ;
void xfs_exchmaps_defer_add ( struct xfs_trans * tp ,
struct xfs_exchmaps_intent * xmi ) ;
2024-04-16 00:54:16 +03:00
# endif /* __XFS_EXCHMAPS_ITEM_H__ */