Message ID | Y2rgbfpYfpbLKHaf@makrotopia.org |
---|---|
State | New |
Headers | show |
Series | [v4,1/5] block: add new flag to add partitions read-only | expand |
Hi Daniel, daniel@makrotopia.org wrote on Tue, 8 Nov 2022 23:04:13 +0000: > Add Kconfig boolean CONFIG_MTD_BLOCK_PARTITIONS and enable block > partition parsers on non-NAND mtdblock devices in case it is selected. > > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > Acked-by: Miquel Raynal <miquel.raynal@bootlin.com> > --- > drivers/mtd/Kconfig | 11 +++++++++++ > drivers/mtd/mtd_blkdevs.c | 4 +++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig > index 796a2eccbef0..12874dec1569 100644 > --- a/drivers/mtd/Kconfig > +++ b/drivers/mtd/Kconfig > @@ -69,6 +69,17 @@ config MTD_BLOCK_RO > You do not need this option for use with the DiskOnChip devices. For > those, enable NFTL support (CONFIG_NFTL) instead. > > +config MTD_BLOCK_PARTITIONS > + bool "Scan for partitions on MTD block devices" > + depends on MTD_BLOCK || MTD_BLOCK_RO > + default y if FIT_PARTITION > + help > + Scan MTD block devices for partitions (ie. MBR, GPT, uImage.FIT, ...). > + (NAND devices are omitted, ubiblock should be used instead when) > + > + Unless your MTD partitions contain sub-partitions mapped using a > + partition table, say no. Actually I know I've acked this patch in the past but I am now wondering again if this is the right way so I would like to discuss this again. I don't feel making partitions on top of blk devices like that is the right solution. Why not using the advanced partition parsers that we now have in MTD to create these subpartitions and then have blocks emulated on top of them? > + > comment "Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK." > depends on MTD_BLOCK || MTD_BLOCK_RO > > diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c > index 60b222799871..e6f2e0888246 100644 > --- a/drivers/mtd/mtd_blkdevs.c > +++ b/drivers/mtd/mtd_blkdevs.c > @@ -359,7 +359,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) > } else { > snprintf(gd->disk_name, sizeof(gd->disk_name), > "%s%d", tr->name, new->devnum); > - gd->flags |= GENHD_FL_NO_PART; > + > + if (!IS_ENABLED(CONFIG_MTD_BLOCK_PARTITIONS) || mtd_type_is_nand(new->mtd)) > + gd->flags |= GENHD_FL_NO_PART; > } > > set_capacity(gd, ((u64)new->size * tr->blksize) >> 9); Thanks, Miquèl
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index 796a2eccbef0..12874dec1569 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig @@ -69,6 +69,17 @@ config MTD_BLOCK_RO You do not need this option for use with the DiskOnChip devices. For those, enable NFTL support (CONFIG_NFTL) instead. +config MTD_BLOCK_PARTITIONS + bool "Scan for partitions on MTD block devices" + depends on MTD_BLOCK || MTD_BLOCK_RO + default y if FIT_PARTITION + help + Scan MTD block devices for partitions (ie. MBR, GPT, uImage.FIT, ...). + (NAND devices are omitted, ubiblock should be used instead when) + + Unless your MTD partitions contain sub-partitions mapped using a + partition table, say no. + comment "Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK." depends on MTD_BLOCK || MTD_BLOCK_RO diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index 60b222799871..e6f2e0888246 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c @@ -359,7 +359,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) } else { snprintf(gd->disk_name, sizeof(gd->disk_name), "%s%d", tr->name, new->devnum); - gd->flags |= GENHD_FL_NO_PART; + + if (!IS_ENABLED(CONFIG_MTD_BLOCK_PARTITIONS) || mtd_type_is_nand(new->mtd)) + gd->flags |= GENHD_FL_NO_PART; } set_capacity(gd, ((u64)new->size * tr->blksize) >> 9);