[U-Boot] [PATCH 3/4] mtd: Delete partitions attached to the device when a device is deleted

Heiko Schocher hs at denx.de
Mon Nov 19 12:10:09 UTC 2018


Hello Boris,

Am 19.11.2018 um 12:57 schrieb Boris Brezillon:
> On Mon, 19 Nov 2018 07:16:53 +0100
> Heiko Schocher <hs at denx.de> wrote:
> 
>> Hello Boris,
>>
>> Am 17.11.2018 um 10:19 schrieb Boris Brezillon:
>>> On Fri, 16 Nov 2018 15:40:25 +0100
>>> Boris Brezillon <boris.brezillon at bootlin.com> wrote:
>>>    
>>>> If we don't do that, partitions might still be exposed while the
>>>> underlying device is gone.
>>>>
>>>> Fixes: 2a74930da57f ("mtd: mtdpart: implement proper partition handling")
>>>> Signed-off-by: Boris Brezillon <boris.brezillon at bootlin.com>
>>>> ---
>>>>    drivers/mtd/mtdcore.c   |  1 +
>>>>    include/linux/mtd/mtd.h | 14 ++++++++++++++
>>>>    2 files changed, 15 insertions(+)
>>>>
>>>> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
>>>> index 7a15ded8c883..46657fe7c949 100644
>>>> --- a/drivers/mtd/mtdcore.c
>>>> +++ b/drivers/mtd/mtdcore.c
>>>> @@ -528,6 +528,7 @@ int del_mtd_device(struct mtd_info *mtd)
>>>>    	struct mtd_notifier *not;
>>>>    #endif
>>>>    
>>>> +	del_mtd_partitions(mtd);
>>>>    	mutex_lock(&mtd_table_mutex);
>>>>    
>>>>    	if (idr_find(&mtd_idr, mtd->index) != mtd) {
>>>> diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
>>>> index d20ebd820289..c5b58dd3f0f7 100644
>>>> --- a/include/linux/mtd/mtd.h
>>>> +++ b/include/linux/mtd/mtd.h
>>>> @@ -562,8 +562,22 @@ unsigned mtd_mmap_capabilities(struct mtd_info *mtd);
>>>>    /* drivers/mtd/mtdcore.h */
>>>>    int add_mtd_device(struct mtd_info *mtd);
>>>>    int del_mtd_device(struct mtd_info *mtd);
>>>> +
>>>> +#ifdef CONFIG_MTD_PARTITIONS
>>>>    int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
>>>>    int del_mtd_partitions(struct mtd_info *);
>>>> +#else
>>>> +static inline int add_mtd_partitions(struct mtd_info *,
>>>> +				     const struct mtd_partition *, int)
>>>
>>> Args should have names.
>>>    
>>>> +{
>>>> +	return 0;
>>>> +}
>>>> +
>>>> +static int del_mtd_partitions(struct mtd_info *)
>>>
>>> Missing inline here.
>>>
>>> I'll send a v2 fixing those 2 bugs.
>>
>> Thanks!
>>
>> I tried your patchset, with them "ubi part ubi" does now work, also
>> after a "sf probe" ...
>>
>> There is one problem, see log [1].
>>
>> If you have an ubi partition attached (In my example on the NAND),
>> and issue "sf probe", the following "mtd list" shows not anymore
>> the SPI NOR MTD partitions. (It prints an error message
>> "Partition "ubi" already in use, aborting")
>>
>> If I detach UBI from the NAND MTD partition, the MTD Partitions on
>> the SPI NOR are again found after a "sf probe" before "mtd list" [2]
> 
> I sent you a new version of this patchset that should address your
> issue. Note that updating parts on a device that is being used is still
> forbidden, but at least it does not block updates on other devices.

Yes.

> Oh, and I keep thinking the spi-flash code is broken, and none of this
> should happen if the spi-nor MTD devs were staying around instead of
> being unregistered/registered every time sf probe is called. But I
> don't intend to fix it now, as the proper solution is probably to port
> the spi-nor layer we have in Linux to u-boot.

I try your patches soon, but give me some time.

Thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de


More information about the U-Boot mailing list