Add on-disk caching with readahead. The cache will grow to a maximum size and then start recycling blocks. Block allocations are tracked in the leveldb, and cached data is stored in files on disk.

Previous diff, "Log json encoded metadata as it is fetched from Google Drive."  Presumably you did a s/metadata/db/data/g or similar.