This just isn't possible to be done concurrently.
flush_all is an atomic, non-blocking operation. The count is when items report in and stuff. A flush_all that reduced the count can't be atomic because it'd have to touch every item and it'd effectively have to stop the server to do it (or use more memory).
Membase does it a slow way by slicing up the hash tables (there are lots of them for various vbuckets) and locking to drop data in a loop. flush_all in this way isn't fast and is kind of disruptive to the server, but it's expecting that kind of thing to happen periodically since we do have more things we do to take care of data since it's persistent and what-not.
Maybe in the future when we have reusable slabs we could find a way to get closer, but in the meantime, it's a tradeoff for speed in such a way that memcached won't be able to take the changes back up.