How about instead of doing it like this (and making the caller do a bunch of paxos commit crap) we let this one handle the calls and return EGAIN if we need it to retry later, rather than returning 0 if there's no work and EAGAIN if they need to do something?