[PATCH 1/2] libmtd: Add support to access OOB available size
Boris Brezillon
boris.brezillon at bootlin.com
Mon Apr 9 00:35:48 PDT 2018
On Mon, 9 Apr 2018 15:25:39 +0800
xiaolei li <xiaolei.li at mediatek.com> wrote:
> Hi David,
>
> On Mon, 2018-04-09 at 08:58 +0200, David Oberhollenzer wrote:
> > Hi,
> >
> > On 04/09/2018 05:10 AM, Xiaolei Li wrote:
> > > @@ -769,6 +774,8 @@ int mtd_get_dev_info1(libmtd_t desc, int mtd_num, struct mtd_dev_info *mtd)
> > > return -1;
> > > if (dev_read_pos_int(lib->mtd_oob_size, mtd_num, &mtd->oob_size))
> > > return -1;
> > > + if (dev_read_pos_int(lib->mtd_oobavail, mtd_num, &mtd->oobavail))
> > > + return -1;
> > > if (dev_read_pos_int(lib->mtd_region_cnt, mtd_num, &mtd->region_cnt))
> > > return -1;
> > > if (dev_read_hex_int(lib->mtd_flags, mtd_num, &ret))
> >
> > I'm not sure if it is a good idea to do a hard fail here, since this
> > depends on a recent change to the kernel.
> >
> > It might be preferable to catch and handle ENOENT, otherwise the next
> > release of mtd-utils will only work on the next kernel release onward.
> >
> Yes, it is. The hard fail return here seems not good.
>
> > Maybe mtd_oobavail could to be set to some reasonable default that
> > retains the current behaviour on "older" kernels?
> >
> What about setting 0 as default?
I didn't look closely at the code yet, but shouldn't we do something
like:
1/ search for oobavail file in sysfs
2/ if it's not there use the GETOOBSEL or GETECCLAYOUT ioctl to get
this information
3/ if none of #1 and #2 are working, set oobavail to 0
Of course, all of this only makes sense if oobsize > 0. When that's not
the case, you can directly set oobavail to 0.
More information about the linux-mtd
mailing list