docs: def _GetChunkForWriting(self, chunk):
      """Returns the relevant chunk from the datastore."""
      try:
        chunk = self.chunk_cache.Get(chunk)
        chunk.dirty = True
        return chunk
      except KeyError:
        pass
  
      try:
        chunk = self._ReadChunk(chunk)
        chunk.dirty = True
        return chunk
      except KeyError:
        pass
  
      fd = io.BytesIO()
      fd.chunk = chunk
      fd.dirty = True
      self.chunk_cache.Put(chunk, fd)
  
      # Keep track of the biggest chunk_number we've seen so far.
      if chunk > self.last_chunk:
        self.last_chunk = chunk
        self._dirty = True
  
      return fd