mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-28 13:34:38 +08:00
952da06375
Add a flag so that the file system can easily detect DAX operations based just on the iomap operation requested instead of looking at inode state using IS_DAX. This will be needed to apply the to be added partition offset only for operations that actually use DAX, but not things like fiemap that are based on the block device. In the long run it should also allow turning the bdev, dax_dev and inline_data into a union. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Link: https://lore.kernel.org/r/20211129102203.2243509-25-hch@lst.de Signed-off-by: Dan Williams <dan.j.williams@intel.com>
56 lines
1.5 KiB
C
56 lines
1.5 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2003-2005 Silicon Graphics, Inc.
|
|
* All Rights Reserved.
|
|
*/
|
|
#ifndef __XFS_IOMAP_H__
|
|
#define __XFS_IOMAP_H__
|
|
|
|
#include <linux/iomap.h>
|
|
|
|
struct xfs_inode;
|
|
struct xfs_bmbt_irec;
|
|
|
|
int xfs_iomap_write_direct(struct xfs_inode *ip, xfs_fileoff_t offset_fsb,
|
|
xfs_fileoff_t count_fsb, unsigned int flags,
|
|
struct xfs_bmbt_irec *imap);
|
|
int xfs_iomap_write_unwritten(struct xfs_inode *, xfs_off_t, xfs_off_t, bool);
|
|
xfs_fileoff_t xfs_iomap_eof_align_last_fsb(struct xfs_inode *ip,
|
|
xfs_fileoff_t end_fsb);
|
|
|
|
int xfs_bmbt_to_iomap(struct xfs_inode *ip, struct iomap *iomap,
|
|
struct xfs_bmbt_irec *imap, unsigned int mapping_flags,
|
|
u16 iomap_flags);
|
|
|
|
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);
|
|
|
|
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;
|
|
|
|
div_u64_rem(offset_fsb, extsz, &align);
|
|
if (align)
|
|
count_fsb += align;
|
|
div_u64_rem(count_fsb, extsz, &align);
|
|
if (align)
|
|
count_fsb += extsz - align;
|
|
}
|
|
|
|
return count_fsb;
|
|
}
|
|
|
|
extern const struct iomap_ops xfs_buffered_write_iomap_ops;
|
|
extern const struct iomap_ops xfs_direct_write_iomap_ops;
|
|
extern const struct iomap_ops xfs_read_iomap_ops;
|
|
extern const struct iomap_ops xfs_seek_iomap_ops;
|
|
extern const struct iomap_ops xfs_xattr_iomap_ops;
|
|
|
|
#endif /* __XFS_IOMAP_H__*/
|