> I suppose "if" below depends on updated refcnt, so update can't be moved > down without changing the "if" statement. Yes, good point. And also I think we need to undo splitting/merging if we fail to do the operation. This all needs more care.