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
ntfs
runlist.h
Go to the documentation of this file.
1
/*
2
* runlist.h - Defines for runlist handling in NTFS Linux kernel driver.
3
* Part of the Linux-NTFS project.
4
*
5
* Copyright (c) 2001-2005 Anton Altaparmakov
6
* Copyright (c) 2002 Richard Russon
7
*
8
* This program/include file is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU General Public License as published
10
* by the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program/include file is distributed in the hope that it will be
14
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
15
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program (in the main directory of the Linux-NTFS
20
* distribution in the file COPYING); if not, write to the Free Software
21
* Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
*/
23
24
#ifndef _LINUX_NTFS_RUNLIST_H
25
#define _LINUX_NTFS_RUNLIST_H
26
27
#include "
types.h
"
28
#include "
layout.h
"
29
#include "
volume.h
"
30
42
typedef
struct
{
/* In memory vcn to lcn mapping structure element. */
43
VCN
vcn
;
/* vcn = Starting virtual cluster number. */
44
LCN
lcn
;
/* lcn = Starting logical cluster number. */
45
s64
length
;
/* Run length in clusters. */
46
}
runlist_element
;
47
54
typedef
struct
{
55
runlist_element
*
rl
;
56
struct
rw_semaphore
lock
;
57
}
runlist
;
58
59
static
inline
void
ntfs_init_runlist(
runlist
*rl)
60
{
61
rl->
rl
=
NULL
;
62
init_rwsem
(&rl->
lock
);
63
}
64
65
typedef
enum
{
66
LCN_HOLE
= -1,
/* Keep this as highest value or die! */
67
LCN_RL_NOT_MAPPED
= -2,
68
LCN_ENOENT
= -3,
69
LCN_ENOMEM
= -4,
70
LCN_EIO
= -5,
71
}
LCN_SPECIAL_VALUES
;
72
73
extern
runlist_element
*
ntfs_runlists_merge
(
runlist_element
*drl,
74
runlist_element
*srl);
75
76
extern
runlist_element
*
ntfs_mapping_pairs_decompress
(
const
ntfs_volume
*
vol
,
77
const
ATTR_RECORD *
attr
,
runlist_element
*old_rl);
78
79
extern
LCN
ntfs_rl_vcn_to_lcn
(
const
runlist_element
*rl,
const
VCN
vcn);
80
81
#ifdef NTFS_RW
82
83
extern
runlist_element
*ntfs_rl_find_vcn_nolock(
runlist_element
*rl,
84
const
VCN
vcn);
85
86
extern
int
ntfs_get_size_for_mapping_pairs(
const
ntfs_volume
*
vol
,
87
const
runlist_element
*rl,
const
VCN
first_vcn,
88
const
VCN
last_vcn);
89
90
extern
int
ntfs_mapping_pairs_build(
const
ntfs_volume
*
vol
,
s8
*
dst
,
91
const
int
dst_len,
const
runlist_element
*rl,
92
const
VCN
first_vcn,
const
VCN
last_vcn,
VCN
*
const
stop_vcn);
93
94
extern
int
ntfs_rl_truncate_nolock(
const
ntfs_volume
*
vol
,
95
runlist
*
const
runlist
,
const
s64
new_length);
96
97
int
ntfs_rl_punch_nolock(
const
ntfs_volume
*
vol
,
runlist
*
const
runlist
,
98
const
VCN
start
,
const
s64
length
);
99
100
#endif
/* NTFS_RW */
101
102
#endif
/* _LINUX_NTFS_RUNLIST_H */
Generated on Thu Jan 10 2013 14:49:18 for Linux Kernel by
1.8.2