Hi Charles,
Charles Manning wrote:
>short byteCount is OK. short chunkId limits the file size to 64k chunks ==
>128MBytes (too small for some systems). short objectId limits the fs to 64k
>files (probably OK).
>short sequenceNumber is most definitely **not** OK since this is incremented
>every time a new block is allocated. That would limit the fs usage.
>
>There is also an issue that the tag fields get overloaded with other values to
>speed scanning. Making the fields too tight will break that. For example, we
>sometimes stash the whole file size in byteCount. Having file sizes limited
>to 64k would be a bit depressing. If you use your scheme, please disable all
>the extraHeader code in yaffs_PackTags2() and yaffs_UnpackTags2(). yaffs2
>works fine without the extraheader stuff and will just use it if it is
>available.
>
>I'll think a bit about this, but I think a more compressed packed tags
>structure could fit in 16 bytes including the ecc on tags and only minimal
>loss of exta header tags etc.
>
>Perhaps something like the following will work pretty well (but some mods
>required to the extended header stuff):
>
>typedef struct __attribute__((packed)) {
> unsigned sequenceNumber;
> unsigned objectId:24;
> unsigned colParity:8;
> unsigned chunkId:24;
> unsigned lineParity:8;
> unsigned byteCount:24;
> unsigned lineParityPrime:8;
>} yaffs_PackedTags2TagsPart;
>
>
>
Thanks for your explanations, packed tags being 16 bytes long work
quite fine for me.
Anyhing that is not more than 20 is fine. :)
Looking forward to having such an option for yaffs2 to be able to
implement its support on my target without hacks,
Thanks,
Vitaly