pub enum UnknownReason {
MoverUidUnpinned,
WorkloadUidUnpinned,
OnlyGroupOverlap,
NoConsumerPod,
NfsOrNoPvc,
FsGroupMayApply,
}Expand description
Why a backup read-compatibility verdict is undecidable from the spec alone.
Variants§
MoverUidUnpinned
The mover’s UID is image-determined (no runAsUser); nothing to compare.
WorkloadUidUnpinned
At least one workload writer’s UID is image-determined.
OnlyGroupOverlap
UIDs differ but the mover shares a group with the file group — might read via the group bit (which we can’t see), so we abstain.
NoConsumerPod
No pod currently mounts the source PVC (offline workload / mid-rollout).
NfsOrNoPvc
The source is NFS (or has no single PVC) — ownership is NAS-determined and fsGroup
is ignored; nothing to assess.
FsGroupMayApply
The source is mounted read-write and the mover declares an fsGroup, so the kubelet
may recursively chgrp the tree to it before the mover reads — which would make
the source readable regardless of who wrote it. Whether it actually does is not
knowable from the spec (the CSIDriver’s fsGroupPolicy may be None, or the default
ReadWriteOnceWithFSType, which skips RWX volumes; and fsGroupChangePolicy: OnRootMismatch skips the walk when the root group already matches), so we abstain.
Implementations§
Trait Implementations§
Source§impl Clone for UnknownReason
impl Clone for UnknownReason
Source§fn clone(&self) -> UnknownReason
fn clone(&self) -> UnknownReason
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UnknownReason
impl Debug for UnknownReason
Source§impl PartialEq for UnknownReason
impl PartialEq for UnknownReason
Source§fn eq(&self, other: &UnknownReason) -> bool
fn eq(&self, other: &UnknownReason) -> bool
self and other values to be equal, and is used by ==.impl Copy for UnknownReason
impl Eq for UnknownReason
impl StructuralPartialEq for UnknownReason
Auto Trait Implementations§
impl Freeze for UnknownReason
impl RefUnwindSafe for UnknownReason
impl Send for UnknownReason
impl Sync for UnknownReason
impl Unpin for UnknownReason
impl UnsafeUnpin for UnknownReason
impl UnwindSafe for UnknownReason
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more