summaryrefslogtreecommitdiff
path: root/fs/partitions/check.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/partitions/check.h')
-rw-r--r--fs/partitions/check.h20
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;