Merge pull request #8075 from swagatbora90/removeIntermediate

Fix retry logic within devmapper device deactivation
This commit is contained in:
Derek McGowan 2023-02-09 22:21:49 -08:00 committed by GitHub
commit 676b942fef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -88,6 +88,15 @@ func NewPoolDevice(ctx context.Context, config *Config) (*PoolDevice, error) {
return poolDevice, nil
}
func skipRetry(err error) bool {
if err == nil {
return true // skip retry if no error
} else if !errors.Is(err, unix.EBUSY) {
return true // skip retry if error is not due to device or resource busy
}
return false
}
func retry(ctx context.Context, f func() error) error {
var (
maxRetries = 100
@ -97,9 +106,8 @@ func retry(ctx context.Context, f func() error) error {
for attempt := 1; attempt <= maxRetries; attempt++ {
retryErr = f()
if retryErr == nil {
return nil
} else if retryErr != unix.EBUSY {
if skipRetry(retryErr) {
return retryErr
}