mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-06 16:04:26 +01:00
Gopkg.lock says it's "dbea6f2bd41658b84b00417ceefa416b979cbf10"
but it is actually "5017d4e9a9cf2d4381db99eacd9baf84b95bfb14".
We need to make sure Gopkg.lock does not lie otherwise `dep ensure`
would really fetch the locked revision and it causes build failure
due to API changes.
Introduced by: 76d9db3e0b (vendor: Add github.com/gogo/protobuf).
While at it, constraint containerd/cgroups to a working revision.
Fixes: #1447
Signed-off-by: Peng Tao <bergwolf@hyper.sh>
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package wclayer
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/hcserror"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var prepareLayerLock sync.Mutex
|
|
|
|
// PrepareLayer finds a mounted read-write layer matching path and enables the
|
|
// the filesystem filter for use on that layer. This requires the paths to all
|
|
// parent layers, and is necessary in order to view or interact with the layer
|
|
// as an actual filesystem (reading and writing files, creating directories, etc).
|
|
// Disabling the filter must be done via UnprepareLayer.
|
|
func PrepareLayer(path string, parentLayerPaths []string) (err error) {
|
|
title := "hcsshim::PrepareLayer"
|
|
fields := logrus.Fields{
|
|
"path": path,
|
|
}
|
|
logrus.WithFields(fields).Debug(title)
|
|
defer func() {
|
|
if err != nil {
|
|
fields[logrus.ErrorKey] = err
|
|
logrus.WithFields(fields).Error(err)
|
|
} else {
|
|
logrus.WithFields(fields).Debug(title + " - succeeded")
|
|
}
|
|
}()
|
|
|
|
// Generate layer descriptors
|
|
layers, err := layerPathsToDescriptors(parentLayerPaths)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// This lock is a temporary workaround for a Windows bug. Only allowing one
|
|
// call to prepareLayer at a time vastly reduces the chance of a timeout.
|
|
prepareLayerLock.Lock()
|
|
defer prepareLayerLock.Unlock()
|
|
err = prepareLayer(&stdDriverInfo, path, layers)
|
|
if err != nil {
|
|
return hcserror.New(err, title+" - failed", "")
|
|
}
|
|
return nil
|
|
}
|