2018-06-05 19:42:14 -07:00
// SPDX-License-Identifier: GPL-2.0
2005-04-16 15:20:36 -07:00
/*
2005-11-02 14:58:39 +11:00
* Copyright ( c ) 2003 - 2005 Silicon Graphics , Inc .
* All Rights Reserved .
2005-04-16 15:20:36 -07:00
*/
# ifndef __XFS_IOMAP_H__
# define __XFS_IOMAP_H__
2016-06-21 09:53:44 +10:00
# include <linux/iomap.h>
2005-04-16 15:20:36 -07:00
struct xfs_inode ;
struct xfs_bmbt_irec ;
2019-10-30 12:24:59 -07:00
int xfs_iomap_write_direct ( struct xfs_inode * ip , xfs_fileoff_t offset_fsb ,
2021-11-29 11:21:58 +01:00
xfs_fileoff_t count_fsb , unsigned int flags ,
struct xfs_bmbt_irec * imap ) ;
2017-09-21 11:26:18 -07:00
int xfs_iomap_write_unwritten ( struct xfs_inode * , xfs_off_t , xfs_off_t , bool ) ;
2019-10-30 12:24:59 -07:00
xfs_fileoff_t xfs_iomap_eof_align_last_fsb ( struct xfs_inode * ip ,
xfs_fileoff_t end_fsb ) ;
2005-04-16 15:20:36 -07:00
2021-11-29 11:21:57 +01:00
int xfs_bmbt_to_iomap ( struct xfs_inode * ip , struct iomap * iomap ,
struct xfs_bmbt_irec * imap , unsigned int mapping_flags ,
u16 iomap_flags ) ;
2016-06-21 09:52:47 +10:00
2021-11-29 11:21:49 +01:00
int xfs_zero_range ( struct xfs_inode * ip , loff_t pos , loff_t len ,
bool * did_zero ) ;
int xfs_truncate_page ( struct xfs_inode * ip , loff_t pos , bool * did_zero ) ;
2017-02-06 10:42:26 -08:00
static inline xfs_filblks_t
xfs_aligned_fsb_count (
xfs_fileoff_t offset_fsb ,
xfs_filblks_t count_fsb ,
xfs_extlen_t extsz )
{
if ( extsz ) {
xfs_extlen_t align ;
2018-06-08 09:54:22 -07:00
div_u64_rem ( offset_fsb , extsz , & align ) ;
2017-02-06 10:42:26 -08:00
if ( align )
count_fsb + = align ;
2018-06-08 09:54:22 -07:00
div_u64_rem ( count_fsb , extsz , & align ) ;
2017-02-06 10:42:26 -08:00
if ( align )
count_fsb + = extsz - align ;
}
return count_fsb ;
}
2019-10-19 09:09:46 -07:00
extern const struct iomap_ops xfs_buffered_write_iomap_ops ;
extern const struct iomap_ops xfs_direct_write_iomap_ops ;
2019-10-19 09:09:45 -07:00
extern const struct iomap_ops xfs_read_iomap_ops ;
2019-02-18 09:38:46 -08:00
extern const struct iomap_ops xfs_seek_iomap_ops ;
2017-01-27 23:20:26 -08:00
extern const struct iomap_ops xfs_xattr_iomap_ops ;
2022-06-03 13:37:37 +08:00
extern const struct iomap_ops xfs_dax_write_iomap_ops ;
2016-06-21 09:53:44 +10:00
2005-04-16 15:20:36 -07:00
# endif /* __XFS_IOMAP_H__*/