[PATCH] UBI: only read UBI_VID_HDR_SIZE when reading the vid_hdr

Richard Weinberger richard at nod.at
Thu Jun 23 08:16:06 PDT 2016


Am 23.06.2016 um 17:06 schrieb Sascha Hauer:
>>>  	p = (char *)vid_hdr - ubi->vid_hdr_shift;
>>>  	read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
>>> -			  ubi->vid_hdr_alsize);
>>> +			  UBI_VID_HDR_SIZE);
>>
>> Hmm, I fear this will break as soon ubi->vid_hdr_shift is non-zero.
> 
> Ok, just tried and indeed it does break. Would it be an option to read
> UBI_VID_HDR_SIZE + ubi->vid_hdr_shift bytes instead?

Well, you need to satisfy the trick UBI does.
Please read the huge comment on it on top of io.c.

Since in most cases ubi->vid_hdr_shift is 0 we could also do a fast path.
i.e.
if (ubi->vid_hdr_shift)
	read_len = ubi->vid_hdr_alsize
else
	read_len = UBI_VID_HDR_SIZE;

But first I have to review a view call sites. :-)

Can you tell a bit more on the NAND you're facing that speedup?
I find it surprising that you gain a full second.

Thanks,
//richard



More information about the linux-mtd mailing list