///|
/// QCOW2 stores a raw DEFLATE stream with possible sector-padding after it.
fn inflate_cluster(data : Bytes, expected : Int32) -> Bytes raise QcowError {
  let decoded = @flate.inflate_all(data[:], max_output=expected) catch {
    _ => raise Invalid("invalid or oversized compressed cluster")
  }
  if decoded.length() != expected {
    raise Invalid("compressed cluster expands to wrong length")
  }
  decoded
}