| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | // SPDX-License-Identifier: GPL-2.0 | 
|  | 2 | /* | 
|  | 3 | * Copyright (c) 2005-2006 Silicon Graphics, Inc. | 
|  | 4 | * All Rights Reserved. | 
|  | 5 | */ | 
|  | 6 | #ifndef __XFS_AOPS_H__ | 
|  | 7 | #define __XFS_AOPS_H__ | 
|  | 8 |  | 
|  | 9 | extern struct bio_set xfs_ioend_bioset; | 
|  | 10 |  | 
|  | 11 | /* | 
|  | 12 | * Types of I/O for bmap clustering and I/O completion tracking. | 
|  | 13 | */ | 
|  | 14 | enum { | 
|  | 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 */ | 
|  | 20 | XFS_IO_HOLE,		/* covers region without any block allocation */ | 
|  | 21 | }; | 
|  | 22 |  | 
|  | 23 | #define XFS_IO_TYPES \ | 
|  | 24 | { XFS_IO_INVALID,		"invalid" }, \ | 
|  | 25 | { XFS_IO_DELALLOC,		"delalloc" }, \ | 
|  | 26 | { XFS_IO_UNWRITTEN,		"unwritten" }, \ | 
|  | 27 | { XFS_IO_OVERWRITE,		"overwrite" }, \ | 
|  | 28 | { XFS_IO_COW,			"CoW" }, \ | 
|  | 29 | { XFS_IO_HOLE,			"hole" } | 
|  | 30 |  | 
|  | 31 | /* | 
|  | 32 | * Structure for buffered I/O completions. | 
|  | 33 | */ | 
|  | 34 | struct xfs_ioend { | 
|  | 35 | struct list_head	io_list;	/* next ioend in chain */ | 
|  | 36 | unsigned int		io_type;	/* delalloc / unwritten */ | 
|  | 37 | struct inode		*io_inode;	/* file being written to */ | 
|  | 38 | size_t			io_size;	/* size of the extent */ | 
|  | 39 | xfs_off_t		io_offset;	/* offset in the file */ | 
|  | 40 | struct work_struct	io_work;	/* xfsdatad work queue */ | 
|  | 41 | struct xfs_trans	*io_append_trans;/* xact. for size update */ | 
|  | 42 | struct bio		*io_bio;	/* bio being built */ | 
|  | 43 | struct bio		io_inline_bio;	/* MUST BE LAST! */ | 
|  | 44 | }; | 
|  | 45 |  | 
|  | 46 | extern const struct address_space_operations xfs_address_space_operations; | 
|  | 47 | extern const struct address_space_operations xfs_dax_aops; | 
|  | 48 |  | 
|  | 49 | int	xfs_setfilesize(struct xfs_inode *ip, xfs_off_t offset, size_t size); | 
|  | 50 |  | 
|  | 51 | extern void xfs_count_page_state(struct page *, int *, int *); | 
|  | 52 | extern struct block_device *xfs_find_bdev_for_inode(struct inode *); | 
|  | 53 | extern struct dax_device *xfs_find_daxdev_for_inode(struct inode *); | 
|  | 54 |  | 
|  | 55 | #endif /* __XFS_AOPS_H__ */ |