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
extent_map.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
* extent_map.h
5
*
6
* In-memory file extent mappings for OCFS2.
7
*
8
* Copyright (C) 2004 Oracle. All rights reserved.
9
*
10
* This program is free software; you can redistribute it and/or
11
* modify it under the terms of the GNU General Public
12
* License, version 2, as published by the Free Software Foundation.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* General Public License for more details.
18
*
19
* You should have received a copy of the GNU General Public
20
* License along with this program; if not, write to the
21
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22
* Boston, MA 021110-1307, USA.
23
*/
24
25
#ifndef _EXTENT_MAP_H
26
#define _EXTENT_MAP_H
27
28
struct
ocfs2_extent_map_item
{
29
unsigned
int
ei_cpos
;
30
unsigned
int
ei_phys
;
31
unsigned
int
ei_clusters
;
32
unsigned
int
ei_flags
;
33
34
struct
list_head
ei_list
;
35
};
36
37
#define OCFS2_MAX_EXTENT_MAP_ITEMS 3
38
struct
ocfs2_extent_map
{
39
unsigned
int
em_num_items
;
40
struct
list_head
em_list
;
41
};
42
43
void
ocfs2_extent_map_init
(
struct
inode
*
inode
);
44
void
ocfs2_extent_map_trunc
(
struct
inode
*
inode
,
unsigned
int
cluster
);
45
void
ocfs2_extent_map_insert_rec
(
struct
inode
*
inode
,
46
struct
ocfs2_extent_rec
*rec);
47
48
int
ocfs2_get_clusters
(
struct
inode
*
inode
,
u32
v_cluster,
u32
*p_cluster,
49
u32
*num_clusters,
unsigned
int
*extent_flags);
50
int
ocfs2_extent_map_get_blocks
(
struct
inode
*
inode
,
u64
v_blkno,
u64
*p_blkno,
51
u64
*ret_count,
unsigned
int
*extent_flags);
52
53
int
ocfs2_fiemap
(
struct
inode
*
inode
,
struct
fiemap_extent_info
*fieinfo,
54
u64
map_start,
u64
map_len);
55
56
int
ocfs2_seek_data_hole_offset
(
struct
file
*
file
, loff_t *
offset
,
int
origin
);
57
58
int
ocfs2_xattr_get_clusters
(
struct
inode
*
inode
,
u32
v_cluster,
59
u32
*p_cluster,
u32
*num_clusters,
60
struct
ocfs2_extent_list
*
el
,
61
unsigned
int
*extent_flags);
62
63
int
ocfs2_read_virt_blocks
(
struct
inode
*
inode
,
u64
v_block,
int
nr
,
64
struct
buffer_head *bhs[],
int
flags
,
65
int
(*
validate
)(
struct
super_block
*
sb
,
66
struct
buffer_head *bh));
67
int
ocfs2_figure_hole_clusters
(
struct
ocfs2_caching_info
*ci,
68
struct
ocfs2_extent_list
*
el
,
69
struct
buffer_head *eb_bh,
70
u32
v_cluster,
71
u32
*num_clusters);
72
static
inline
int
ocfs2_read_virt_block(
struct
inode *inode,
u64
v_block,
73
struct
buffer_head **bh,
74
int
(*
validate
)(
struct
super_block
*
sb
,
75
struct
buffer_head *bh))
76
{
77
int
status
= 0;
78
79
if
(bh ==
NULL
) {
80
printk
(
"ocfs2: bh == NULL\n"
);
81
status = -
EINVAL
;
82
goto
bail;
83
}
84
85
status =
ocfs2_read_virt_blocks
(inode, v_block, 1, bh, 0,
validate
);
86
87
bail:
88
return
status
;
89
}
90
91
92
#endif
/* _EXTENT_MAP_H */
Generated on Thu Jan 10 2013 14:45:32 for Linux Kernel by
1.8.2