message: storage: fix a buf in FileCacheEntry::fetch()
  FileCacheEntry::fetch() should wait for all chunks to settle down and
  check status again before return.
diff: @@ -245,10 +245,10 @@ impl BlobObject for FileCacheEntry {
  let chunks = meta.get_chunks(offset, size)?;
  debug_assert!(chunks.len() > 0);
  let chunk_index = chunks[0].id();
  + let count = chunks.len() as u32;
  // Get chunks not ready yet, also marking them as inflight.
  - let ready =
  - match bitmap.check_bitmap_ready_and_mark_pending(chunk_index, chunks.len() as u32)? {
  + let ready = match bitmap.check_bitmap_ready_and_mark_pending(chunk_index, count)? {
  None => return Ok(0),
  Some(v) => {
  if v.len() == 0 {
  @@ -287,9 +287,13 @@ impl BlobObject for FileCacheEntry {
  start = end;
  }
  + if !bitmap.wait_for_bitmap_ready(chunk_index, count)? {
  + Err(eio!("failed to read data from storage backend"))
  + } else {
  Ok(total_size)
  }
  }
  +}
  impl FileCacheEntry {
  // There are some assumption applied to the `bios` passed to `read_iter()`.
  