From 848e3ee55775d5ecdf3562cbb569195ae0adc2fe Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Fri, 21 Oct 2022 14:22:14 +0200 Subject: [PATCH] rbd: return abnormal in NodeGetVolumeStats When we do stat on the targetpath, if there is any error we can check is it due to corruption. If yes, cephcsi can return abnormal in the NodeGetVolumeStats so that consumer (CO/admin) and detect and take further action. Signed-off-by: Madhu Rajanna --- internal/rbd/nodeserver.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/rbd/nodeserver.go b/internal/rbd/nodeserver.go index 96d7989a5..e1df954b7 100644 --- a/internal/rbd/nodeserver.go +++ b/internal/rbd/nodeserver.go @@ -1268,6 +1268,17 @@ func (ns *NodeServer) NodeGetVolumeStats( stat, err := os.Stat(targetPath) if err != nil { + if util.IsCorruptedMountError(err) { + log.WarningLog(ctx, "corrupted mount detected in %q: %v", targetPath, err) + + return &csi.NodeGetVolumeStatsResponse{ + VolumeCondition: &csi.VolumeCondition{ + Abnormal: true, + Message: err.Error(), + }, + }, nil + } + return nil, status.Errorf(codes.InvalidArgument, "failed to get stat for targetpath %q: %v", targetPath, err) }