Messages in this thread | | | From | Caizhiyong <> | Subject | RE: [RESEND PATCH] block: cmdline-parser: add support for hidden disk space | Date | Mon, 28 Sep 2015 10:48:01 +0000 |
| |
Dear Shawn Lin:
The cmdline-parser is support skip some reserve disk space, or hidden some disk space.
See Documentation/block/cmdline-partition.txt
blkdevparts=<blkdev-def>[;<blkdev-def>] <blkdev-def> := <blkdev-id>:<partdef>[,<partdef>] <partdef> := <size>[@<offset>](part-name)
The "offset" is next partition start address, If your bootargs is 'blkdevparts=mmcblk0:1G(data0),1G@2G(data1),-;', you will reserve 1G between mmcblk0p1 and mmcblk0p2;
Looking forward to your feedback. Best regards. Cai Zhiyong. http://www.huawei.com
> -----Original Message----- > From: Shawn Lin [mailto:shawn.lin@rock-chips.com] > Sent: Monday, September 28, 2015 5:51 PM > To: Jens Axboe > Cc: Caizhiyong; linux-kernel@vger.kernel.org; Shawn Lin > Subject: [RESEND PATCH] block: cmdline-parser: add support for hidden disk > space > > cmdline-partition now only support continuous disk space taken from > cmdline. When we need to reserve a disk space, for instance, 100m between > mmcblk0p1 and mmcblk0p2 for special use and wouldn't let kernel space > realize this "disk hole", we add this patch to ship adding this kind of > "disk hole" into the partition table. For any such cases, simply append > "hidden" to the end of subpart which is need to be reserved. > > Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> > > --- > > block/cmdline-parser.c | 12 +++++++++++- > include/linux/cmdline-parser.h | 1 + > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/block/cmdline-parser.c b/block/cmdline-parser.c > index 9dbc67e..fcca57d 100644 > --- a/block/cmdline-parser.c > +++ b/block/cmdline-parser.c > @@ -68,6 +68,11 @@ static int parse_subpart(struct cmdline_subpart > **subpart, char *partdef) > partdef += 2; > } > > + if (!strncmp(partdef, "hidden", 6)) { > + new_subpart->flags |= PF_HIDDEN; > + partdef += 6; > + } > + > *subpart = new_subpart; > return 0; > fail: > @@ -128,7 +133,9 @@ static int parse_parts(struct cmdline_parts **parts, > const char *bdevdef) > if (ret) > goto fail; > > - newparts->nr_subparts++; > + if (!((*next_subpart)->flags & PF_HIDDEN)) > + newparts->nr_subparts++; > + > next_subpart = &(*next_subpart)->next_subpart; > } > > @@ -245,6 +252,9 @@ int cmdline_parts_set(struct cmdline_parts *parts, > sector_t disk_size, > > from += subpart->size; > > + if (subpart->flags & PF_HIDDEN) > + continue; > + > if (add_part(slot, subpart, param)) > break; > } > diff --git a/include/linux/cmdline-parser.h b/include/linux/cmdline-parser.h > index 2e6dce6..7c1cb3c 100644 > --- a/include/linux/cmdline-parser.h > +++ b/include/linux/cmdline-parser.h > @@ -14,6 +14,7 @@ > /* partition flags */ > #define PF_RDONLY 0x01 /* Device is read only */ > #define PF_POWERUP_LOCK 0x02 /* Always locked after reset > */ > +#define PF_HIDDEN 0x04 /* Hidden from partition > table */ > > struct cmdline_subpart { > char name[BDEVNAME_SIZE]; /* partition name, such as 'rootfs' */ > -- > 2.3.7 >
| |