diff options
Diffstat (limited to 'fs/partitions/check.h')
-rw-r--r-- | fs/partitions/check.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/fs/partitions/check.h b/fs/partitions/check.h index 8e4e103ba216..5ef9da15197b 100644 --- a/fs/partitions/check.h +++ b/fs/partitions/check.h @@ -1,6 +1,8 @@ #include <linux/pagemap.h> #include <linux/blkdev.h> +#define PART_NAME_SIZE 128 + /* * add_gd_partition adds a partitions details to the devices partition * description. @@ -12,6 +14,7 @@ struct parsed_partitions { sector_t from; sector_t size; int flags; + char name[PART_NAME_SIZE]; } parts[DISK_MAX_PARTS]; int next; int limit; @@ -30,7 +33,8 @@ static inline void *read_part_sector(struct parsed_partitions *state, } static inline void -put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) +put_named_partition(struct parsed_partitions *p, int n, sector_t from, + sector_t size, const char *name, size_t name_size) { if (n < p->limit) { char tmp[1 + BDEVNAME_SIZE + 10 + 1]; @@ -39,8 +43,22 @@ put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) p->parts[n].size = size; snprintf(tmp, sizeof(tmp), " %s%d", p->name, n); strlcat(p->pp_buf, tmp, PAGE_SIZE); + if (name) { + if (name_size > PART_NAME_SIZE - 1) + name_size = PART_NAME_SIZE - 1; + memcpy(p->parts[n].name, name, name_size); + p->parts[n].name[name_size] = 0; + snprintf(tmp, sizeof(tmp), " (%s)", p->parts[n].name); + strlcat(p->pp_buf, tmp, PAGE_SIZE); + } } } +static inline void +put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size) +{ + put_named_partition(p, n, from, size, NULL, 0); +} + extern int warn_no_part; |