A RO volume can activate with just a single downstairs present.
If a guest sends a flush to a RO volume that has a single downstairs it currently fails.
This code in upstairs.rs is the issue:
let n = self.downstairs.active_client_count();
let required = if snapshot_details.is_some() { 3 } else { 2 };
if n < required {
done.send_err(CrucibleError::IoError(format!(
"too many inactive clients: need {required}, got {n}"
)));
return;
}
For a RO volume, only one downstairs is a valid config.
A RO volume can activate with just a single downstairs present.
If a guest sends a flush to a RO volume that has a single downstairs it currently fails.
This code in upstairs.rs is the issue:
For a RO volume, only one downstairs is a valid config.