
Hello Boris,
Am 19.11.2018 um 21:59 schrieb Boris Brezillon:
MTD partition creation code is a bit tricky. It tries to figure out when things have changed (either MTD dev list or mtdparts/mtdids vars) and when that happens it first deletes all the partitions that had been previously created and then creates the new ones based on the new mtdparts/mtdids values. But before deleting the old partitions, it ensures that none of the currently registered parts are being used and bails out when that's not the case. So, we end up in a situation where, if at least one MTD dev has one of its partitions used by someone (UBI for instance), the partitions update logic no longer works for other devs.
Rework the code to relax the logic and allow updates of MTD parts on devices that are not being used (we still refuse to updates parts on devices who have at least one of their partitions used by someone).
Fixes: 5db66b3aee6f ("cmd: mtd: add 'mtd' command") Signed-off-by: Boris Brezillon boris.brezillon@bootlin.com
Changes in v3:
- None
Changes in v2:
- New patch
Changes in v3:
- Re-create partitions when our last attempt do delete all existing parts failed. This way we can update parts after ubi detach has been called without having to change mtdparts/mtdids.
drivers/mtd/mtd_uboot.c | 96 +++++++++++++++++++++++++++++------------ drivers/mtd/mtdpart.c | 12 ++++++ include/linux/mtd/mtd.h | 2 + 3 files changed, 82 insertions(+), 28 deletions(-)
Tested-by: Heiko Schocher hs@denx.de
bye, Heiko