There's a problem in how we're handling split-merge pages, here's the scenario:
1. Imagine a tree root -> split-merge page -> leaf page, all 3 dirty
2. sync without eviction writes all of the pages, and marks them all clean
3. change to the leaf page marks it dirty
4. eviction writes the leaf page, marks the split-merge page dirty
5. eviction ignores the split-merge page
6. the root page is still marked clean, and so we don't write it, losing our change to the leaf page.
I think the right change is to reconcile split-merge pages like any other page, but the only thing that will happen is to mark the parent page dirty.
This is a general problem, but it's triggered in the snapshot tree because we're doing a lot more sync calls.