[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