mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
jffs2: cache data_crc results
As we moved data_crc() invocation from jffs2_1pass_build_lists() to jffs2_1pass_read_inode() data_crc is going to be calculated on each inode access. This patch adds caching of data_crc() results. There is no significant improvement in speed (because of flash access caching added in previous patch I think, crc in RAM is really fast) but this patch impacts memory usage -- every b_node structure uses 12 bytes instead of 8. Signed-off-by: Alexey Neyman <avn@emcraft.com> Signed-off-by: Ilya Yanok <yanok@emcraft.com>
This commit is contained in:
parent
9b7076229e
commit
142a80ffc3
2 changed files with 5 additions and 1 deletions
|
@ -765,7 +765,10 @@ jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest)
|
|||
put_fl_mem(jNode, pL->readbuf);
|
||||
continue;
|
||||
}
|
||||
if (!data_crc(jNode)) {
|
||||
if (b->datacrc == CRC_UNKNOWN)
|
||||
b->datacrc = data_crc(jNode) ?
|
||||
CRC_OK : CRC_BAD;
|
||||
if (b->datacrc == CRC_BAD) {
|
||||
put_fl_mem(jNode, pL->readbuf);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
struct b_node {
|
||||
u32 offset;
|
||||
struct b_node *next;
|
||||
enum { CRC_UNKNOWN = 0, CRC_OK, CRC_BAD } datacrc;
|
||||
};
|
||||
|
||||
struct b_list {
|
||||
|
|
Loading…
Reference in a new issue