summaryrefslogtreecommitdiffstats
path: root/fs/jffs2/summary.h
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2006-05-20 16:13:34 +0100
committerDavid Woodhouse <dwmw2@infradead.org>2006-05-20 16:13:34 +0100
commit9641b784ff82cf0a48a6c70ef9867f5fd728de67 (patch)
tree40d7bbc06ee5e54560ea7e7dabe75ac01a72e00c /fs/jffs2/summary.h
parent6c8b44abc86a3e23dd1a22c0ee187f06bd7c7f5d (diff)
downloadlinux-stable-9641b784ff82cf0a48a6c70ef9867f5fd728de67.tar.gz
linux-stable-9641b784ff82cf0a48a6c70ef9867f5fd728de67.tar.bz2
linux-stable-9641b784ff82cf0a48a6c70ef9867f5fd728de67.zip
[JFFS2] Optimise reading of eraseblock summary nodes
This improves the time to mount 512MiB of NAND flash on my OLPC prototype by about 4%. We used to read the last page of the eraseblock twice -- once to find the offset of the summary node, and again to actually _read_ the summary node. Now we read the last page only once, and read more only if we need to. We also don't allocate a new buffer just for the summary code -- we use the buffer which was already allocated for the scan. Better still, if the 'buffer' for the scan is actually just a pointer directly into NOR flash, we use that too, avoiding the memcpy() which we used to do. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'fs/jffs2/summary.h')
-rw-r--r--fs/jffs2/summary.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/jffs2/summary.h b/fs/jffs2/summary.h
index b7a678be1709..afff4bd551a1 100644
--- a/fs/jffs2/summary.h
+++ b/fs/jffs2/summary.h
@@ -160,7 +160,8 @@ int jffs2_sum_add_padding_mem(struct jffs2_summary *s, uint32_t size);
int jffs2_sum_add_inode_mem(struct jffs2_summary *s, struct jffs2_raw_inode *ri, uint32_t ofs);
int jffs2_sum_add_dirent_mem(struct jffs2_summary *s, struct jffs2_raw_dirent *rd, uint32_t ofs);
int jffs2_sum_scan_sumnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
- uint32_t ofs, uint32_t *pseudo_random);
+ struct jffs2_raw_summary *summary, uint32_t sumlen,
+ uint32_t *pseudo_random);
#else /* SUMMARY DISABLED */