mtd-util, flash_erase: MEMGETOOBSEL on davinci based board fail

Heiko Schocher hs at denx.de
Wed Sep 21 02:37:55 EDT 2011


Hello Brian,

Brian Norris wrote:
> Add Liu Shuo, who was interested in similar problems with `flash_erase -j'.
> 
> On Tue, Sep 20, 2011 at 6:27 AM, Heiko Schocher <hs at denx.de> wrote:
>> Artem Bityutskiy wrote:
>>> Sorry, this is the right link:
>>> http://git.infradead.org/mtd-utils.git
>> with this tree and the brian branch I get:
>>
>> root at armv5te:/home/hs/bmk/mtd-utils# ./flash_erase -j /dev/mtd7 0 0
>> flash_erase: error!: /dev/mtd7: unable to get NAND oobinfo
>>             error 22 (Invalid argument)
>> root at armv5te:/home/hs/bmk/mtd-utils#
>>
>> :-(
>>
>> As I see in mtd-util:flash_erase.c line 197:
>>
>> if (ioctl(fd, MEMGETOOBSEL, &oobinfo) != 0)
>>              ^^^^^^^^^^^^
>>              this is the "old" style ... which fails ...
> 
> Right, I haven't fixed all uses of MEMGETOOBSEL yet, and I definitely
> didn't touch flash_erase yet, although the mechanisms are available
> now.
> 
> I have provided ioctl(MEMWRITE) which, in addition to simply writing
> data, has information about write mode that should replace
> MEMGETOOBSEL. Particularly, you would be interested in
> MTD_OPS_AUTO_OOB, which should be the only autoplacement routine
> necessary. The `brian' branch that Artem mentions provides support in
> libmtd for using the MEMWRITE ioctl, but nandwrite is the only utility
> that uses it properly right now.
> 
> So the next step is for you (Heiko, Liu, or somebody else that wants
> `flash_erase -j') to replace:
> 
>     `ioctl(MEMGETOOBSEL)' plus `mtd_write_oob()'
> 
> with
> 
>     `mtd_write()' using mode `MTD_OPS_AUTO_OOB'

Thanks for your explanation! I have to look in this deeper.

> I think it shouldn't be too difficult, but I do not have testing for
> JFFS2. I recommend trying to cut out all the manual layout stuff from
> flash_erase.c and instead making sure that `legacy_auto_oob_layout()'
> has up-to-date support for old layout methods (i.e., MEMGETOOBSEL),
> then for forward progress, you only need to make sure that the
> in-kernel MTD_OPS_AUTO_OOB works as desired. No more duplication of
> "auto" layouts in nandwrite, flash_erase, and in-kernel; just
> in-kernel handling of "auto" mode and legacy libmtd functions for
> supporting the old way.
> 
> Let me know if you have questions about my MEMWRITE changes. I would
> be happy to clarify if needed.

Thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany



More information about the linux-mtd mailing list