diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_alloc.h')
| -rw-r--r-- | fs/xfs/libxfs/xfs_alloc.h | 38 | 
1 files changed, 37 insertions, 1 deletions
| diff --git a/fs/xfs/libxfs/xfs_alloc.h b/fs/xfs/libxfs/xfs_alloc.h index df4aefaf0046..1c14a0b1abea 100644 --- a/fs/xfs/libxfs/xfs_alloc.h +++ b/fs/xfs/libxfs/xfs_alloc.h @@ -98,7 +98,7 @@ unsigned int xfs_alloc_min_freelist(struct xfs_mount *mp,  		struct xfs_perag *pag);  /* - * Compute and fill in value of m_ag_maxlevels. + * Compute and fill in value of m_alloc_maxlevels.   */  void  xfs_alloc_compute_maxlevels( @@ -248,4 +248,40 @@ xfs_buf_to_agfl_bno(  	return bp->b_addr;  } +void __xfs_free_extent_later(struct xfs_trans *tp, xfs_fsblock_t bno, +		xfs_filblks_t len, const struct xfs_owner_info *oinfo, +		bool skip_discard); + +/* + * List of extents to be free "later". + * The list is kept sorted on xbf_startblock. + */ +struct xfs_extent_free_item { +	struct list_head	xefi_list; +	uint64_t		xefi_owner; +	xfs_fsblock_t		xefi_startblock;/* starting fs block number */ +	xfs_extlen_t		xefi_blockcount;/* number of blocks in extent */ +	unsigned int		xefi_flags; +}; + +#define XFS_EFI_SKIP_DISCARD	(1U << 0) /* don't issue discard */ +#define XFS_EFI_ATTR_FORK	(1U << 1) /* freeing attr fork block */ +#define XFS_EFI_BMBT_BLOCK	(1U << 2) /* freeing bmap btree block */ + +static inline void +xfs_free_extent_later( +	struct xfs_trans		*tp, +	xfs_fsblock_t			bno, +	xfs_filblks_t			len, +	const struct xfs_owner_info	*oinfo) +{ +	__xfs_free_extent_later(tp, bno, len, oinfo, false); +} + + +extern struct kmem_cache	*xfs_extfree_item_cache; + +int __init xfs_extfree_intent_init_cache(void); +void xfs_extfree_intent_destroy_cache(void); +  #endif	/* __XFS_ALLOC_H__ */ |