#include <linux/pagemap.h> | |
#include <linux/blkdev.h> | |
/* | |
* add_gd_partition adds a partitions details to the devices partition | |
* description. | |
*/ | |
struct parsed_partitions { | |
struct block_device *bdev; | |
char name[BDEVNAME_SIZE]; | |
struct { | |
sector_t from; | |
sector_t size; | |
int flags; | |
} parts[DISK_MAX_PARTS]; | |
int next; | |
int limit; | |
bool access_beyond_eod; | |
}; | |
static inline void *read_part_sector(struct parsed_partitions *state, | |
sector_t n, Sector *p) | |
{ | |
if (n >= get_capacity(state->bdev->bd_disk)) { | |
state->access_beyond_eod = true; | |
return NULL; | |
} | |
return read_dev_sector(state->bdev, n, p); | |
} | |
static inline void | |
put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) | |
{ | |
if (n < p->limit) { | |
p->parts[n].from = from; | |
p->parts[n].size = size; | |
printk(" %s%d", p->name, n); | |
} | |
} | |
extern int warn_no_part; | |