diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_alloc.h')
| -rw-r--r-- | fs/xfs/libxfs/xfs_alloc.h | 41 | 
1 files changed, 22 insertions, 19 deletions
diff --git a/fs/xfs/libxfs/xfs_alloc.h b/fs/xfs/libxfs/xfs_alloc.h index cbf789ea5a4e..e716c993ac4c 100644 --- a/fs/xfs/libxfs/xfs_alloc.h +++ b/fs/xfs/libxfs/xfs_alloc.h @@ -1,19 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.   * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA   */  #ifndef __XFS_ALLOC_H__  #define	__XFS_ALLOC_H__ @@ -191,12 +179,24 @@ xfs_alloc_vextent(   * Free an extent.   */  int				/* error */ -xfs_free_extent( +__xfs_free_extent(  	struct xfs_trans	*tp,	/* transaction pointer */  	xfs_fsblock_t		bno,	/* starting block number of extent */  	xfs_extlen_t		len,	/* length of extent */  	struct xfs_owner_info	*oinfo,	/* extent owner */ -	enum xfs_ag_resv_type	type);	/* block reservation type */ +	enum xfs_ag_resv_type	type,	/* block reservation type */ +	bool			skip_discard); + +static inline int +xfs_free_extent( +	struct xfs_trans	*tp, +	xfs_fsblock_t		bno, +	xfs_extlen_t		len, +	struct xfs_owner_info	*oinfo, +	enum xfs_ag_resv_type	type) +{ +	return __xfs_free_extent(tp, bno, len, oinfo, type, false); +}  int				/* error */  xfs_alloc_lookup_le( @@ -223,6 +223,8 @@ int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp,  			xfs_agnumber_t agno, int flags, struct xfs_buf **bpp);  int xfs_alloc_read_agfl(struct xfs_mount *mp, struct xfs_trans *tp,  			xfs_agnumber_t agno, 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_free_extent_fix_freelist(struct xfs_trans *tp, xfs_agnumber_t agno,  		struct xfs_buf **agbp); @@ -240,12 +242,13 @@ int xfs_alloc_query_range(struct xfs_btree_cur *cur,  		xfs_alloc_query_range_fn fn, void *priv);  int xfs_alloc_query_all(struct xfs_btree_cur *cur, xfs_alloc_query_range_fn fn,  		void *priv); -xfs_agblock_t xfs_ag_block_count(struct xfs_mount *mp, xfs_agnumber_t agno); -bool xfs_verify_agbno(struct xfs_mount *mp, xfs_agnumber_t agno, -		xfs_agblock_t agbno); -bool xfs_verify_fsbno(struct xfs_mount *mp, xfs_fsblock_t fsbno);  int xfs_alloc_has_record(struct xfs_btree_cur *cur, xfs_agblock_t bno,  		xfs_extlen_t len, bool *exist); +typedef int (*xfs_agfl_walk_fn)(struct xfs_mount *mp, xfs_agblock_t bno, +		void *priv); +int xfs_agfl_walk(struct xfs_mount *mp, struct xfs_agf *agf, +		struct xfs_buf *agflbp, xfs_agfl_walk_fn walk_fn, void *priv); +  #endif	/* __XFS_ALLOC_H__ */  | 
