In the following line of code:
https://github.com/kubernetes/kubernetes/blob/master/pkg/volume/scaleio/sio_volume.go#L216
The code provides logic for when the device is not busy. It also needs to include logic for when the device is busy. In that case, the code should return an error, letting Kubernetes know that it was not able to complete the TearDown() call.
SafeMounter
It seems that SafeMounter will fail if there's already a file system that does not match the requested type. It will skip formatting, but it fails. This creates a situation where the attached device (that was attempted to be formatted) is never detached and remains in a loop. Causing the pod to fail, and subsequent attempt to deploy a new pod with the same volume will also fail.
TearDown()
In the following line of code: https://github.com/kubernetes/kubernetes/blob/master/pkg/volume/scaleio/sio_volume.go#L216 The code provides logic for when the device is
not busy
. It also needs to include logic for when the device is busy. In that case, the code should return an error, letting Kubernetes know that it was not able to complete theTearDown()
call.SafeMounter
It seems that SafeMounter will fail if there's already a file system that does not match the requested type. It will skip formatting, but it fails. This creates a situation where the attached device (that was attempted to be formatted) is never detached and remains in a loop. Causing the pod to fail, and subsequent attempt to deploy a new pod with the same volume will also fail.