|  | #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; | 
|  |  |