2018-06-06 05:42:14 +03:00
// SPDX-License-Identifier: GPL-2.0
2013-08-12 14:49:42 +04:00
/*
* Copyright ( c ) 2000 - 2006 Silicon Graphics , Inc .
* All Rights Reserved .
*/
# ifndef __XFS_BMAP_UTIL_H__
# define __XFS_BMAP_UTIL_H__
/* Kernel only BMAP related definitions and functions */
struct xfs_bmbt_irec ;
2016-08-03 04:18:10 +03:00
struct xfs_extent_free_item ;
2013-08-12 14:49:42 +04:00
struct xfs_ifork ;
struct xfs_inode ;
struct xfs_mount ;
struct xfs_trans ;
2015-01-09 02:46:49 +03:00
struct xfs_bmalloca ;
2013-08-12 14:49:42 +04:00
2017-10-09 21:37:22 +03:00
# ifdef CONFIG_XFS_RT
2013-08-12 14:49:42 +04:00
int xfs_bmap_rtalloc ( struct xfs_bmalloca * ap ) ;
2017-10-09 21:37:22 +03:00
# else /* !CONFIG_XFS_RT */
/*
* Attempts to allocate RT extents when RT is disable indicates corruption and
* should trigger a shutdown .
*/
static inline int
xfs_bmap_rtalloc ( struct xfs_bmalloca * ap )
{
return - EFSCORRUPTED ;
}
# endif /* CONFIG_XFS_RT */
2013-08-12 14:49:42 +04:00
int xfs_bmap_punch_delalloc_range ( struct xfs_inode * ip ,
xfs_fileoff_t start_fsb , xfs_fileoff_t length ) ;
2017-10-18 00:16:19 +03:00
struct kgetbmap {
__s64 bmv_offset ; /* file offset of segment in blocks */
__s64 bmv_block ; /* starting block (64-bit daddr_t) */
__s64 bmv_length ; /* length of segment, blocks */
__s32 bmv_oflags ; /* output flags */
} ;
2013-08-12 14:49:42 +04:00
int xfs_getbmap ( struct xfs_inode * ip , struct getbmapx * bmv ,
2017-10-18 00:16:19 +03:00
struct kgetbmap * out ) ;
2013-08-12 14:49:42 +04:00
/* functions in xfs_bmap.c that are only needed by xfs_bmap_util.c */
int xfs_bmap_extsize_align ( struct xfs_mount * mp , struct xfs_bmbt_irec * gotp ,
struct xfs_bmbt_irec * prevp , xfs_extlen_t extsz ,
int rt , int eof , int delay , int convert ,
xfs_fileoff_t * offp , xfs_extlen_t * lenp ) ;
void xfs_bmap_adjacent ( struct xfs_bmalloca * ap ) ;
int xfs_bmap_last_extent ( struct xfs_trans * tp , struct xfs_inode * ip ,
int whichfork , struct xfs_bmbt_irec * rec ,
int * is_empty ) ;
2013-08-12 14:49:45 +04:00
/* preallocation and hole punch interface */
2013-10-12 11:55:07 +04:00
int xfs_alloc_file_space ( struct xfs_inode * ip , xfs_off_t offset ,
xfs_off_t len , int alloc_type ) ;
int xfs_free_file_space ( struct xfs_inode * ip , xfs_off_t offset ,
xfs_off_t len ) ;
2014-02-24 03:58:19 +04:00
int xfs_collapse_file_space ( struct xfs_inode * , xfs_off_t offset ,
xfs_off_t len ) ;
2015-03-25 07:08:56 +03:00
int xfs_insert_file_space ( struct xfs_inode * , xfs_off_t offset ,
xfs_off_t len ) ;
2013-08-12 14:49:45 +04:00
/* EOF block manipulation functions */
bool xfs_can_free_eofblocks ( struct xfs_inode * ip , bool force ) ;
2017-01-28 10:22:55 +03:00
int xfs_free_eofblocks ( struct xfs_inode * ip ) ;
2013-08-12 14:49:45 +04:00
2013-08-12 14:49:48 +04:00
int xfs_swap_extents ( struct xfs_inode * ip , struct xfs_inode * tip ,
struct xfs_swapext * sx ) ;
2013-08-12 14:49:42 +04:00
xfs_daddr_t xfs_fsb_to_db ( struct xfs_inode * ip , xfs_fsblock_t fsb ) ;
2017-08-30 01:44:14 +03:00
xfs_extnum_t xfs_bmap_count_leaves ( struct xfs_ifork * ifp , xfs_filblks_t * count ) ;
2017-06-16 21:00:12 +03:00
int xfs_bmap_count_blocks ( struct xfs_trans * tp , struct xfs_inode * ip ,
int whichfork , xfs_extnum_t * nextents ,
xfs_filblks_t * count ) ;
2018-11-20 00:31:10 +03:00
int xfs_flush_unmap_range ( struct xfs_inode * ip , xfs_off_t offset ,
xfs_off_t len ) ;
2013-08-12 14:49:42 +04:00
# endif /* __XFS_BMAP_UTIL_H__ */