Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
xfs
xfs_aops.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2005-2006 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_AOPS_H__
19
#define __XFS_AOPS_H__
20
21
extern
mempool_t
*
xfs_ioend_pool
;
22
23
/*
24
* Types of I/O for bmap clustering and I/O completion tracking.
25
*/
26
enum
{
27
XFS_IO_DIRECT
= 0,
/* special case for direct I/O ioends */
28
XFS_IO_DELALLOC
,
/* covers delalloc region */
29
XFS_IO_UNWRITTEN
,
/* covers allocated but uninitialized data */
30
XFS_IO_OVERWRITE
,
/* covers already allocated extent */
31
};
32
33
#define XFS_IO_TYPES \
34
{ 0, "" }, \
35
{ XFS_IO_DELALLOC, "delalloc" }, \
36
{ XFS_IO_UNWRITTEN, "unwritten" }, \
37
{ XFS_IO_OVERWRITE, "overwrite" }
38
39
/*
40
* xfs_ioend struct manages large extent writes for XFS.
41
* It can manage several multi-page bio's at once.
42
*/
43
typedef
struct
xfs_ioend
{
44
struct
xfs_ioend
*
io_list
;
/* next ioend in chain */
45
unsigned
int
io_type
;
/* delalloc / unwritten */
46
int
io_error
;
/* I/O error code */
47
atomic_t
io_remaining
;
/* hold count */
48
unsigned
int
io_isasync
: 1;
/* needs aio_complete */
49
unsigned
int
io_isdirect
: 1;
/* direct I/O */
50
struct
inode
*
io_inode
;
/* file being written to */
51
struct
buffer_head *
io_buffer_head
;
/* buffer linked list head */
52
struct
buffer_head *
io_buffer_tail
;
/* buffer linked list tail */
53
size_t
io_size
;
/* size of the extent */
54
xfs_off_t
io_offset
;
/* offset in the file */
55
struct
work_struct
io_work
;
/* xfsdatad work queue */
56
struct
xfs_trans *
io_append_trans
;
/* xact. for size update */
57
struct
kiocb
*
io_iocb
;
58
int
io_result
;
59
}
xfs_ioend_t
;
60
61
extern
const
struct
address_space_operations
xfs_address_space_operations
;
62
extern
int
xfs_get_blocks
(
struct
inode
*,
sector_t
,
struct
buffer_head *,
int
);
63
64
extern
void
xfs_count_page_state
(
struct
page
*,
int
*,
int
*);
65
66
#endif
/* __XFS_AOPS_H__ */
Generated on Thu Jan 10 2013 14:50:15 for Linux Kernel by
1.8.2