break;
                }
        }
-       trans->did_work = true;
 
        trans_for_each_entry(trans, i)
                do_btree_insert_one(trans, i);
         * BTREE_INSERT_NOUNLOCK means don't unlock _after_ successful btree
         * update; if we haven't done anything yet it doesn't apply
         */
-       if (!trans->did_work)
-               flags &= ~BTREE_INSERT_NOUNLOCK;
+       flags &= ~BTREE_INSERT_NOUNLOCK;
 
        switch (ret) {
        case BTREE_INSERT_BTREE_NODE_FULL:
                 * XXX:
                 * split -> btree node merging (of parent node) might still drop
                 * locks when we're not passing it BTREE_INSERT_NOUNLOCK
+                *
+                * we don't want to pass BTREE_INSERT_NOUNLOCK to split as that
+                * will inhibit merging - but we don't have a reliable way yet
+                * (do we?) of checking if we dropped locks in this path
                 */
-               if (!ret && !trans->did_work)
+               if (!ret)
                        goto retry;
 #endif