diff --git a/control-plane/grpc/src/context.rs b/control-plane/grpc/src/context.rs index 52560851d..b1049b0f3 100644 --- a/control-plane/grpc/src/context.rs +++ b/control-plane/grpc/src/context.rs @@ -53,6 +53,8 @@ pub fn timeout_grpc(op_id: MessageId, timeout_opts: TimeoutOptions) -> Duration MessageIdVs::PublishVolume => min_timeouts.nexus(), MessageIdVs::UnpublishVolume => min_timeouts.nexus(), MessageIdVs::RepublishVolume => min_timeouts.nexus() * 2, + MessageIdVs::CreateVolumeSnapshot => min_timeouts.volume_snapshot(), + MessageIdVs::DestroyVolumeSnapshot => min_timeouts.volume_snapshot(), MessageIdVs::CreateNexus => min_timeouts.nexus(), MessageIdVs::CreateNexusSnapshot => min_timeouts.nexus_snapshot(), diff --git a/control-plane/stor-port/src/transport_api/mod.rs b/control-plane/stor-port/src/transport_api/mod.rs index 2b03d5b00..4afa4cf20 100644 --- a/control-plane/stor-port/src/transport_api/mod.rs +++ b/control-plane/stor-port/src/transport_api/mod.rs @@ -528,6 +528,11 @@ impl RequestMinTimeout { pub fn nexus_snapshot(&self) -> Duration { self.nexus_snapshot } + /// Minimum timeout for a volume snapshot operation. + pub fn volume_snapshot(&self) -> Duration { + // not quite sure how much slack to give here, maybe this is enough? + self.nexus_snapshot + self.replica_snapshot + } /// Minimum timeout for a pool operation. pub fn pool(&self) -> Duration { self.pool