Blockfile cache: fix sparse + evict reentrancy problem, take 2.

Thanks to nedwilliamson@ (on gmail) for an alternative perspective
plus a reduction to make fixing this much easier.

Difference to take 1 is call to CacheTestFillBuffer in new test,
to address msan's reasonable complaints and not try to write an
unitialized buffer to disk (cache).

Bug: 826626, 518908, 537063, 802886
Change-Id: I1109f51511391c3c91bbeb76db0a09c319905819
Reviewed-on: https://chromium-review.googlesource.com/987515
Reviewed-by: Matt Menke <mmenke@chromium.org>
Commit-Queue: Maks Orlovich <morlovich@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#547159}(cherry picked from commit dd44592937e7d78c7c75489d5a6e9bb0b4967f4a)
Reviewed-on: https://chromium-review.googlesource.com/990212
Reviewed-by: Maks Orlovich <morlovich@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#526}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
4 files changed