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