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
block
partitions
check.h
Go to the documentation of this file.
1
#include <
linux/pagemap.h
>
2
#include <
linux/blkdev.h
>
3
#include <
linux/genhd.h
>
4
5
/*
6
* add_gd_partition adds a partitions details to the devices partition
7
* description.
8
*/
9
struct
parsed_partitions
{
10
struct
block_device
*
bdev
;
11
char
name
[
BDEVNAME_SIZE
];
12
struct
{
13
sector_t
from
;
14
sector_t
size
;
15
int
flags
;
16
bool
has_info
;
17
struct
partition_meta_info
info
;
18
}
parts
[DISK_MAX_PARTS];
19
int
next
;
20
int
limit
;
21
bool
access_beyond_eod
;
22
char
*
pp_buf
;
23
};
24
25
struct
parsed_partitions
*
26
check_partition
(
struct
gendisk *,
struct
block_device
*);
27
28
static
inline
void
*read_part_sector(
struct
parsed_partitions
*
state
,
29
sector_t
n
, Sector *
p
)
30
{
31
if
(n >= get_capacity(state->
bdev
->bd_disk)) {
32
state->
access_beyond_eod
=
true
;
33
return
NULL
;
34
}
35
return
read_dev_sector
(state->
bdev
, n, p);
36
}
37
38
static
inline
void
39
put_partition(
struct
parsed_partitions
*p,
int
n,
sector_t
from
,
sector_t
size
)
40
{
41
if
(n < p->
limit
) {
42
char
tmp
[1 +
BDEVNAME_SIZE
+ 10 + 1];
43
44
p->
parts
[
n
].from =
from
;
45
p->
parts
[
n
].size =
size
;
46
snprintf
(tmp,
sizeof
(tmp),
" %s%d"
, p->
name
, n);
47
strlcat
(p->
pp_buf
, tmp,
PAGE_SIZE
);
48
}
49
}
50
51
extern
int
warn_no_part
;
52
Generated on Thu Jan 10 2013 13:22:36 for Linux Kernel by
1.8.2