diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_alloc.h')
| -rw-r--r-- | fs/xfs/libxfs/xfs_alloc.h | 24 | 
1 files changed, 15 insertions, 9 deletions
diff --git a/fs/xfs/libxfs/xfs_alloc.h b/fs/xfs/libxfs/xfs_alloc.h index 85ac470be0da..6bb8d295c321 100644 --- a/fs/xfs/libxfs/xfs_alloc.h +++ b/fs/xfs/libxfs/xfs_alloc.h @@ -19,11 +19,12 @@ unsigned int xfs_agfl_size(struct xfs_mount *mp);  /*   * Flags for xfs_alloc_fix_freelist.   */ -#define	XFS_ALLOC_FLAG_TRYLOCK	0x00000001  /* use trylock for buffer locking */ -#define	XFS_ALLOC_FLAG_FREEING	0x00000002  /* indicate caller is freeing extents*/ -#define	XFS_ALLOC_FLAG_NORMAP	0x00000004  /* don't modify the rmapbt */ -#define	XFS_ALLOC_FLAG_NOSHRINK	0x00000008  /* don't shrink the freelist */ -#define	XFS_ALLOC_FLAG_CHECK	0x00000010  /* test only, don't modify args */ +#define	XFS_ALLOC_FLAG_TRYLOCK	(1U << 0)  /* use trylock for buffer locking */ +#define	XFS_ALLOC_FLAG_FREEING	(1U << 1)  /* indicate caller is freeing extents*/ +#define	XFS_ALLOC_FLAG_NORMAP	(1U << 2)  /* don't modify the rmapbt */ +#define	XFS_ALLOC_FLAG_NOSHRINK	(1U << 3)  /* don't shrink the freelist */ +#define	XFS_ALLOC_FLAG_CHECK	(1U << 4)  /* test only, don't modify args */ +#define	XFS_ALLOC_FLAG_TRYFLUSH	(1U << 5)  /* don't wait in busy extent flush */  /*   * Argument structure for xfs_alloc routines. @@ -195,7 +196,7 @@ int xfs_alloc_read_agfl(struct xfs_perag *pag, struct xfs_trans *tp,  		struct xfs_buf **bpp);  int xfs_free_agfl_block(struct xfs_trans *, xfs_agnumber_t, xfs_agblock_t,  			struct xfs_buf *, struct xfs_owner_info *); -int xfs_alloc_fix_freelist(struct xfs_alloc_arg *args, int flags); +int xfs_alloc_fix_freelist(struct xfs_alloc_arg *args, uint32_t alloc_flags);  int xfs_free_extent_fix_freelist(struct xfs_trans *tp, struct xfs_perag *pag,  		struct xfs_buf **agbp); @@ -232,7 +233,7 @@ xfs_buf_to_agfl_bno(  int __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); +		enum xfs_ag_resv_type type, bool skip_discard);  /*   * List of extents to be free "later". @@ -245,6 +246,7 @@ struct xfs_extent_free_item {  	xfs_extlen_t		xefi_blockcount;/* number of blocks in extent */  	struct xfs_perag	*xefi_pag;  	unsigned int		xefi_flags; +	enum xfs_ag_resv_type	xefi_agresv;  };  void xfs_extent_free_get_group(struct xfs_mount *mp, @@ -259,9 +261,10 @@ xfs_free_extent_later(  	struct xfs_trans		*tp,  	xfs_fsblock_t			bno,  	xfs_filblks_t			len, -	const struct xfs_owner_info	*oinfo) +	const struct xfs_owner_info	*oinfo, +	enum xfs_ag_resv_type		type)  { -	return __xfs_free_extent_later(tp, bno, len, oinfo, false); +	return __xfs_free_extent_later(tp, bno, len, oinfo, type, false);  } @@ -270,4 +273,7 @@ extern struct kmem_cache	*xfs_extfree_item_cache;  int __init xfs_extfree_intent_init_cache(void);  void xfs_extfree_intent_destroy_cache(void); +xfs_failaddr_t xfs_validate_ag_length(struct xfs_buf *bp, uint32_t seqno, +		uint32_t length); +  #endif	/* __XFS_ALLOC_H__ */  |