From the look of the UBIFS web page, the data written to the journal becomes the new version of the data rather than being copied somewhere else when processing the journal.
I'd imagine that you'd want journalling of some form on flash for the same reason you'd want it on disk: to recover from power failures and crashes.
Posted Oct 10, 2008 18:37 UTC (Fri) by dedekind (subscriber, #32521)
[Link]
This is right. Our journal is "wandering". We accumulate data in the journal, and then commit, which means we just update the indexing information. Then we pick different eraseblocks for the new journal.
Also, the journal is multi-headed. One head is for data, one head is for stuff like inode met-adata, truncation nodes etc - this nodes are likely to become obsolete soon. One head is for Garbage collector. This way we minimize the amount of Garbage collection.
Potentially, it is possible to dynamically allocate journal heads and separate data ford different inodes. That would optimize things even more, but we did not implement this.