On Tuesday 15 April 2014 10:45:01
spvoyek@rockwellcollins.com wrote:
> Does anyone know why the variable passed into yaffs_addr_to_chunk()
> through the chunk_out parameter needs to be incremented by 1 afterwards?
>
> It looks like every place this function is called in yaffs_guts.c and
> yaffs_verify.c, the "chunk" is always incremented. Seems like
> yaffs_addr_to_chunk() should do that for us... as if it's giving the
> "wrong" answer/chunk.
Thanks for that observation. Yes, this could be neatened up.
As with many code bodies out there, this state exists due to some history.
addr_to_chunk() calculates the chunk and, offset into the zero-based chunk, of
an address (really an offset) into a file. Thus, offset 30 in a file would
give chunk 0, offset 30.
Since Yaffs uses 1-based chunkIds (chunk 0 == the file header), the value
needs to be incremented.
There were, historically, some other uses of addr_to_chunk() which have now
gone away.
This code could be cleaned up by:
* Giving addr_to_chunk() a better name (eg. file_offset_to_chunk)
* Doing the +1.
Something worth adding to my list of tasks, I think.
Thank you
-- Charles