Re: [PATCH v3] Fix mtd-utils bugs

Artem Bityutskiy
2010-07-18T08:40:20Z

On Sun, 2010-06-20 at 20:22 +0800, Stanley.Miao wrote:
> Changes from V2:
> 1, Get the linux version via uname() according to Joakim Tjernlund.
> 2, Set the default version the latest version according to Joakim Tjernlund.
>
> The "struct nand_oobinfo" is able to record only 32 ECC code positions,which
> is not enough for many big NAND chips. Therefore, this structure is replaced
> by "struct nand_ecclayout" in linux kernel from the version 2.6.17.
> Consequently, the ioctl command changed from MEMGETOOBSEL to ECCGETLAYOUT.
>
> Now update nandwrite to use the new ioctl command ECCGETLAYOUT. In order to
> keep compatible with the old linux kernel, a linux version detection function
> is added.
>
> YAFFS and JFFS2 has updated and we don't need the arguments "forcelegacy",
> "forcejffs2", "forceyaffs" anymore. Now clean them up.

Stanley, sorry that this all takes so long time, I do not have enough
time. Basically, Kevin's patches are almost there, I sent him 2 other
patches, as soon as he reviews them, they should go in. Then you can
start using libmtd for your purposes as well. You'll need to extend it a
bit, though.

Vs. uname() - I do not really like this idea, because kernel version
does not cover the case when ECCGETLAYOUT is back-ported to older
kernels.

Try to use similar technique as Kevin used - just call ECCGETLAYOUT
ioctl, and if it returns ENOTTY, this ioctl is not supported. See also
offs64_ioctl flag handling in my patches to Kevin (sent 1 yesterday, and
1 today).

--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)