message: storage: fix io error may let the chunk map bit always pending
  For now , when we get an io error in do_fetch_chunks, we just return
  without clearing the chunk map pending bit. This may cause the following
  io always wait for the pending bits.
diff: @@ -442,9 +442,13 @@ impl FileCacheEntry {
  self.adjust_buffer_for_dio(buf)
  }
  trace!("persist_chunk idx {}", idx);
  - Self::persist_chunk(&self.file, offset, buf).map_err(|e| {
  - eio!(format!("do_fetch_chunk failed to persist data, {:?}", e))
  - })?;
  + if let Err(e) = Self::persist_chunk(&self.file, offset, buf) {
  + bitmap.clear_range_pending(pending[start], (end - start) as u32);
  + return Err(eio!(format!(
  + "do_fetch_chunk failed to persist data, {:?}",
  + e
  + )));
  + }
  }
  bitmap
  