astrid-runtime/astrid · error
kernel refused storage lifecycle request: {error}
Error message
kernel refused storage lifecycle request: {error} What it means
`into_success` unwraps a generic `Success` payload from an `AdminResponseBody`; when the kernel instead returns an `Error` variant, this bail surfaces the kernel's own error text prefixed with 'kernel refused storage lifecycle request'. It is the normal path for conveying kernel-side rejections of lifecycle operations (e.g. mount/unmount bookkeeping calls executed via `execute` and `unmount`) back to the caller.
Source
Thrown at crates/astrid-storage-provider-winfsp/src/main.rs:315
}
Ok(StorageProviderSuccessV1::Unmounted {
mount_id: record.mount_id,
})
}
fn lease_from_response(body: AdminResponseBody) -> Result<StorageMountLeaseV1> {
match body {
AdminResponseBody::StorageMountLease(lease) => Ok(*lease),
AdminResponseBody::Error(error) => bail!("kernel refused storage mount: {error}"),
_ => bail!("kernel returned an unexpected storage mount response"),
}
}
fn into_success(body: AdminResponseBody) -> Result<serde_json::Value> {
match body {
AdminResponseBody::Success(value) => Ok(value),
AdminResponseBody::Error(error) => {
bail!("kernel refused storage lifecycle request: {error}")
},
_ => bail!("kernel returned an unexpected storage lifecycle response"),
}
}
fn unmount_status(body: AdminResponseBody) -> Result<bool> {
match body {
AdminResponseBody::Success(_) => Ok(true),
AdminResponseBody::Error(error)
if error.contains("was not found") || error.contains("expired or revoked") =>
{
Ok(false)
},
AdminResponseBody::Error(error) => {
bail!("kernel refused storage unmount authorization: {error}")
},
_ => bail!("kernel returned an unexpected storage unmount response"),
}View on GitHub (pinned to affd8760f4)
Solutions
- Read the embedded kernel `{error}` message in the bail output — it states the actual refusal reason
- Verify the storage assignment/resource referenced by the lifecycle request exists and is in a valid state on the kernel
- Re-authenticate or restart the kernel if the refusal indicates authorization or availability problems, then retry
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-validate the resource exists/valid before issuing the lifecycle request // e.g. check assignment status via a read-only admin query before mutating
Try / catch
match provider.execute(action).await {
Ok(value) => handle(value),
Err(e) if e.to_string().starts_with("kernel refused storage lifecycle request") => {
// kernel-side refusal: parse embedded reason and react
let reason = e.to_string();
log::warn!("lifecycle refused: {reason}");
},
Err(e) => return Err(e.into()),
} Prevention
- Read the embedded kernel error text — it contains the actual refusal cause
- Verify resource state with a read-only query before lifecycle mutations
- Retry only after fixing the underlying kernel-side condition, not blindly
When it happens
Trigger: Any lifecycle admin request dispatched through `execute` or `unmount` for which the kernel responds with `AdminResponseBody::Error(error)` — e.g. the kernel rejects the request because the storage action is invalid, unauthorized, or the target resource is in a bad state.
Common situations: Requesting lifecycle operations on a storage assignment that does not exist or was already removed; kernel-side authorization failures; transient kernel shutdown while a lifecycle call is in flight.
Related errors
- kernel returned an unexpected storage mount response
- kernel returned an unexpected storage lifecycle response
- FUSE service status failed [{code}]: {message}
- kernel refused storage lifecycle request: {error}
- kernel refused storage mount: {error}
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/274ec4608001ea82.
Report an issue: GitHub.