> And if so, how does it "avoid" this effect? Is it somehow a hybrid of log-structured and in-place-modified FS? And if so, does this then lose the ability of log-structured systems to support snapshots etc?
My guess (only a guess as I've not looked to deeply into it) is that the FS writes only leaf nodes to the log, and maintains any non-leaf interior node changes in memory until such time that lots of writes have accumulated in memory meta-data, and the non-leaf nodes are written out in one go at checkpoint time, thus amortizing changes to non-leaf nodes across many leaf writes. It can do this because the leaf nodes can be used to reconstruct the non-leaf data based on the last known snapshot and rolling forward.
Makes recovery slightly slower, but hey, that's not the predominant use case.