1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2005-2006 Silicon Graphics, Inc.
9 extern struct bio_set xfs_ioend_bioset
;
12 * Types of I/O for bmap clustering and I/O completion tracking.
15 XFS_IO_INVALID
, /* initial state */
16 XFS_IO_DELALLOC
, /* covers delalloc region */
17 XFS_IO_UNWRITTEN
, /* covers allocated but uninitialized data */
18 XFS_IO_OVERWRITE
, /* covers already allocated extent */
19 XFS_IO_COW
, /* covers copy-on-write extent */
22 #define XFS_IO_TYPES \
23 { XFS_IO_INVALID, "invalid" }, \
24 { XFS_IO_DELALLOC, "delalloc" }, \
25 { XFS_IO_UNWRITTEN, "unwritten" }, \
26 { XFS_IO_OVERWRITE, "overwrite" }, \
30 * Structure for buffered I/O completions.
33 struct list_head io_list
; /* next ioend in chain */
34 unsigned int io_type
; /* delalloc / unwritten */
35 struct inode
*io_inode
; /* file being written to */
36 size_t io_size
; /* size of the extent */
37 xfs_off_t io_offset
; /* offset in the file */
38 struct work_struct io_work
; /* xfsdatad work queue */
39 struct xfs_trans
*io_append_trans
;/* xact. for size update */
40 struct bio
*io_bio
; /* bio being built */
41 struct bio io_inline_bio
; /* MUST BE LAST! */
44 extern const struct address_space_operations xfs_address_space_operations
;
45 extern const struct address_space_operations xfs_dax_aops
;
47 int xfs_setfilesize(struct xfs_inode
*ip
, xfs_off_t offset
, size_t size
);
49 extern void xfs_count_page_state(struct page
*, int *, int *);
50 extern struct block_device
*xfs_find_bdev_for_inode(struct inode
*);
51 extern struct dax_device
*xfs_find_daxdev_for_inode(struct inode
*);
53 #endif /* __XFS_AOPS_H__ */