mtdblock: Warn if added for a NAND device
authorEzequiel Garcia <ezequiel@collabora.com>
Sun, 1 Aug 2021 23:45:09 +0000 (20:45 -0300)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 17 Aug 2021 16:41:59 +0000 (18:41 +0200)
There is a surprisingly large number of tutorials
that suggest using mtdblock to mount SquashFS filesystems
on flash devices, including NAND devices.

This approach is suboptimal than using UBI. If the flash device
is NAND, this is specially true, due to wear leveling, bit-flips and
badblocks. In this case UBI is strongly preferred, so be nice to users
and print a warning suggesting to consider UBI block, if mtdblock
is added for a NAND device.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210801234509.18774-8-ezequiel@collabora.com
drivers/mtd/mtdblock.c
drivers/mtd/mtdblock_ro.c

index a8080954379342385c52bd4edc3ae9887dfd85d9..03e3de3a5d79e1d5420db77f287a23985f488bb9 100644 (file)
@@ -322,6 +322,10 @@ static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
        if (!(mtd->flags & MTD_WRITEABLE))
                dev->mbd.readonly = 1;
 
+       if (mtd_type_is_nand(mtd))
+               pr_warn("%s: MTD device '%s' is NAND, please consider using UBI block devices instead.\n",
+                       tr->name, mtd->name);
+
        if (add_mtd_blktrans_dev(&dev->mbd))
                kfree(dev);
 }
index d92914f73d52c3127163f8f4818224ce51d2b0b7..7c51952ce55dee8951eedc3b3fcb76d005bc47b6 100644 (file)
@@ -46,6 +46,10 @@ static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
        dev->tr = tr;
        dev->readonly = 1;
 
+       if (mtd_type_is_nand(mtd))
+               pr_warn("%s: MTD device '%s' is NAND, please consider using UBI block devices instead.\n",
+                       tr->name, mtd->name);
+
        if (add_mtd_blktrans_dev(dev))
                kfree(dev);
 }