If a device has been scheduled for deferred deactivation and container is started again and we need to activate device again, we need to cancel the deferred deactivation which is already scheduled on the device. Create a method for the same. Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Upstream-commit: 20b38f427aa05186bd09c8c4201dcc95ed56aa46 Component: engine
35 lines
751 B
Go
35 lines
751 B
Go
// +build linux
|
|
|
|
package devicemapper
|
|
|
|
import "C"
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
// Due to the way cgo works this has to be in a separate file, as devmapper.go has
|
|
// definitions in the cgo block, which is incompatible with using "//export"
|
|
|
|
//export DevmapperLogCallback
|
|
func DevmapperLogCallback(level C.int, file *C.char, line C.int, dm_errno_or_class C.int, message *C.char) {
|
|
msg := C.GoString(message)
|
|
if level < 7 {
|
|
if strings.Contains(msg, "busy") {
|
|
dmSawBusy = true
|
|
}
|
|
|
|
if strings.Contains(msg, "File exists") {
|
|
dmSawExist = true
|
|
}
|
|
|
|
if strings.Contains(msg, "No such device or address") {
|
|
dmSawEnxio = true
|
|
}
|
|
}
|
|
|
|
if dmLogger != nil {
|
|
dmLogger.DMLog(int(level), C.GoString(file), int(line), int(dm_errno_or_class), msg)
|
|
}
|
|
}
|