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
ocfs2
aops.h
Go to the documentation of this file.
1
/* -*- mode: c; c-basic-offset: 8; -*-
2
* vim: noexpandtab sw=8 ts=8 sts=0:
3
*
4
* Copyright (C) 2002, 2004, 2005 Oracle. All rights reserved.
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public
8
* License as published by the Free Software Foundation; either
9
* version 2 of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public
17
* License along with this program; if not, write to the
18
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
* Boston, MA 021110-1307, USA.
20
*/
21
22
#ifndef OCFS2_AOPS_H
23
#define OCFS2_AOPS_H
24
25
handle_t *
ocfs2_start_walk_page_trans
(
struct
inode
*
inode
,
26
struct
page
*
page
,
27
unsigned
from
,
28
unsigned
to);
29
30
int
ocfs2_map_page_blocks
(
struct
page
*
page
,
u64
*p_blkno,
31
struct
inode
*
inode
,
unsigned
int
from
,
32
unsigned
int
to,
int
new
);
33
34
void
ocfs2_unlock_and_free_pages
(
struct
page
**
pages
,
int
num_pages
);
35
36
int
walk_page_buffers
( handle_t *
handle
,
37
struct
buffer_head *
head
,
38
unsigned
from
,
39
unsigned
to,
40
int
*partial,
41
int
(*
fn
)( handle_t *handle,
42
struct
buffer_head *bh));
43
44
int
ocfs2_write_end_nolock
(
struct
address_space
*
mapping
,
45
loff_t
pos
,
unsigned
len,
unsigned
copied,
46
struct
page
*
page
,
void
*fsdata);
47
48
int
ocfs2_write_begin_nolock
(
struct
file
*filp,
49
struct
address_space
*
mapping
,
50
loff_t
pos
,
unsigned
len,
unsigned
flags
,
51
struct
page
**pagep,
void
**fsdata,
52
struct
buffer_head *di_bh,
struct
page
*mmap_page);
53
54
int
ocfs2_read_inline_data
(
struct
inode
*
inode
,
struct
page
*
page
,
55
struct
buffer_head *di_bh);
56
int
ocfs2_size_fits_inline_data
(
struct
buffer_head *di_bh,
u64
new_size);
57
58
int
ocfs2_get_block
(
struct
inode
*
inode
,
sector_t
iblock,
59
struct
buffer_head *bh_result,
int
create
);
60
/* all ocfs2_dio_end_io()'s fault */
61
#define ocfs2_iocb_is_rw_locked(iocb) \
62
test_bit(0, (unsigned long *)&iocb->private)
63
static
inline
void
ocfs2_iocb_set_rw_locked(
struct
kiocb
*
iocb
,
int
level
)
64
{
65
set_bit
(0, (
unsigned
long
*)&iocb->
private
);
66
if
(level)
67
set_bit
(1, (
unsigned
long
*)&iocb->
private
);
68
else
69
clear_bit
(1, (
unsigned
long
*)&iocb->
private
);
70
}
71
72
/*
73
* Using a named enum representing lock types in terms of #N bit stored in
74
* iocb->private, which is going to be used for communication between
75
* ocfs2_dio_end_io() and ocfs2_file_aio_write/read().
76
*/
77
enum
ocfs2_iocb_lock_bits
{
78
OCFS2_IOCB_RW_LOCK
= 0,
79
OCFS2_IOCB_RW_LOCK_LEVEL
,
80
OCFS2_IOCB_SEM
,
81
OCFS2_IOCB_UNALIGNED_IO
,
82
OCFS2_IOCB_NUM_LOCKS
83
};
84
85
#define ocfs2_iocb_clear_rw_locked(iocb) \
86
clear_bit(OCFS2_IOCB_RW_LOCK, (unsigned long *)&iocb->private)
87
#define ocfs2_iocb_rw_locked_level(iocb) \
88
test_bit(OCFS2_IOCB_RW_LOCK_LEVEL, (unsigned long *)&iocb->private)
89
#define ocfs2_iocb_set_sem_locked(iocb) \
90
set_bit(OCFS2_IOCB_SEM, (unsigned long *)&iocb->private)
91
#define ocfs2_iocb_clear_sem_locked(iocb) \
92
clear_bit(OCFS2_IOCB_SEM, (unsigned long *)&iocb->private)
93
#define ocfs2_iocb_is_sem_locked(iocb) \
94
test_bit(OCFS2_IOCB_SEM, (unsigned long *)&iocb->private)
95
96
#define ocfs2_iocb_set_unaligned_aio(iocb) \
97
set_bit(OCFS2_IOCB_UNALIGNED_IO, (unsigned long *)&iocb->private)
98
#define ocfs2_iocb_clear_unaligned_aio(iocb) \
99
clear_bit(OCFS2_IOCB_UNALIGNED_IO, (unsigned long *)&iocb->private)
100
#define ocfs2_iocb_is_unaligned_aio(iocb) \
101
test_bit(OCFS2_IOCB_UNALIGNED_IO, (unsigned long *)&iocb->private)
102
103
#define OCFS2_IOEND_WQ_HASH_SZ 37
104
#define ocfs2_ioend_wq(v) (&ocfs2__ioend_wq[((unsigned long)(v)) %\
105
OCFS2_IOEND_WQ_HASH_SZ])
106
extern
wait_queue_head_t
ocfs2__ioend_wq
[
OCFS2_IOEND_WQ_HASH_SZ
];
107
108
#endif
/* OCFS2_FILE_H */
Generated on Thu Jan 10 2013 14:49:13 for Linux Kernel by
1.8.2