xref: /openbmc/linux/fs/xfs/xfs_iomap.h (revision e190bfe5)
1 /*
2  * Copyright (c) 2003-2005 Silicon Graphics, Inc.
3  * All Rights Reserved.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write the Free Software Foundation,
16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18 #ifndef __XFS_IOMAP_H__
19 #define __XFS_IOMAP_H__
20 
21 typedef enum {
22 	/* base extent manipulation calls */
23 	BMAPI_READ = (1 << 0),		/* read extents */
24 	BMAPI_WRITE = (1 << 1),		/* create extents */
25 	BMAPI_ALLOCATE = (1 << 2),	/* delayed allocate to real extents */
26 	/* modifiers */
27 	BMAPI_IGNSTATE = (1 << 4),	/* ignore unwritten state on read */
28 	BMAPI_DIRECT = (1 << 5),	/* direct instead of buffered write */
29 	BMAPI_MMAP = (1 << 6),		/* allocate for mmap write */
30 	BMAPI_TRYLOCK = (1 << 7),	/* non-blocking request */
31 } bmapi_flags_t;
32 
33 #define BMAPI_FLAGS \
34 	{ BMAPI_READ,		"READ" }, \
35 	{ BMAPI_WRITE,		"WRITE" }, \
36 	{ BMAPI_ALLOCATE,	"ALLOCATE" }, \
37 	{ BMAPI_IGNSTATE,	"IGNSTATE" }, \
38 	{ BMAPI_DIRECT,		"DIRECT" }, \
39 	{ BMAPI_MMAP,		"MMAP" }, \
40 	{ BMAPI_TRYLOCK,	"TRYLOCK" }
41 
42 struct xfs_inode;
43 struct xfs_bmbt_irec;
44 
45 extern int xfs_iomap(struct xfs_inode *, xfs_off_t, ssize_t, int,
46 		     struct xfs_bmbt_irec *, int *, int *);
47 extern int xfs_iomap_write_unwritten(struct xfs_inode *, xfs_off_t, size_t);
48 
49 #endif /* __XFS_IOMAP_H__*/
50