@@ -28,6 +28,8 @@ import (
2828
2929var criuFeatures * criurpc.CriuFeatures
3030
31+ var ErrCriuMissingFeatures = errors .New ("criu is missing features" )
32+
3133func (c * Container ) checkCriuFeatures (criuOpts * CriuOpts , rpcOpts * criurpc.CriuOpts , criuFeat * criurpc.CriuFeatures ) error {
3234 t := criurpc .CriuReqType_FEATURE_CHECK
3335
@@ -50,14 +52,14 @@ func (c *Container) checkCriuFeatures(criuOpts *CriuOpts, rpcOpts *criurpc.CriuO
5052 return errors .New ("CRIU feature check failed" )
5153 }
5254
53- missingFeatures := false
55+ var missingFeatures [] string
5456
5557 // The outer if checks if the fields actually exist
5658 if (criuFeat .MemTrack != nil ) &&
5759 (criuFeatures .MemTrack != nil ) {
5860 // The inner if checks if they are set to true
5961 if * criuFeat .MemTrack && ! * criuFeatures .MemTrack {
60- missingFeatures = true
62+ missingFeatures = append ( missingFeatures , "MemTrack" )
6163 logrus .Debugf ("CRIU does not support MemTrack" )
6264 }
6365 }
@@ -67,13 +69,13 @@ func (c *Container) checkCriuFeatures(criuOpts *CriuOpts, rpcOpts *criurpc.CriuO
6769 if (criuFeat .LazyPages != nil ) &&
6870 (criuFeatures .LazyPages != nil ) {
6971 if * criuFeat .LazyPages && ! * criuFeatures .LazyPages {
70- missingFeatures = true
72+ missingFeatures = append ( missingFeatures , "LazyPages" )
7173 logrus .Debugf ("CRIU does not support LazyPages" )
7274 }
7375 }
7476
75- if missingFeatures {
76- return errors . New ( "CRIU is missing features" )
77+ if len ( missingFeatures ) != 0 {
78+ return fmt . Errorf ( "%w: %v" , ErrCriuMissingFeatures , missingFeatures )
7779 }
7880
7981 return nil
0 commit comments