|
@@ -114,6 +114,28 @@ get_block_size(int fd)
|
|
return (int64_t)size;
|
|
return (int64_t)size;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+extern void DevmapperLogCallback(int level, char *file, int line, int dm_errno_or_class, char *str);
|
|
|
|
+
|
|
|
|
+static void
|
|
|
|
+log_cb(int level, const char *file, int line,
|
|
|
|
+ int dm_errno_or_class, const char *f, ...)
|
|
|
|
+{
|
|
|
|
+ char buffer[256];
|
|
|
|
+ va_list ap;
|
|
|
|
+
|
|
|
|
+ va_start(ap, f);
|
|
|
|
+ vsnprintf(buffer, 256, f, ap);
|
|
|
|
+ va_end(ap);
|
|
|
|
+
|
|
|
|
+ DevmapperLogCallback(level, (char *)file, line, dm_errno_or_class, buffer);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void
|
|
|
|
+log_with_errno_init ()
|
|
|
|
+{
|
|
|
|
+ dm_log_with_errno_init(log_cb);
|
|
|
|
+}
|
|
|
|
+
|
|
*/
|
|
*/
|
|
import "C"
|
|
import "C"
|
|
|
|
|
|
@@ -127,6 +149,10 @@ import (
|
|
"unsafe"
|
|
"unsafe"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+type DevmapperLogger interface {
|
|
|
|
+ log(level int, file string, line int, dmError int, message string)
|
|
|
|
+}
|
|
|
|
+
|
|
const (
|
|
const (
|
|
DeviceCreate TaskType = iota
|
|
DeviceCreate TaskType = iota
|
|
DeviceReload
|
|
DeviceReload
|
|
@@ -351,6 +377,13 @@ func LogInitVerbose(level int) {
|
|
C.dm_log_init_verbose(C.int(level))
|
|
C.dm_log_init_verbose(C.int(level))
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+var dmLogger DevmapperLogger = nil
|
|
|
|
+
|
|
|
|
+func logInit(logger DevmapperLogger) {
|
|
|
|
+ dmLogger = logger
|
|
|
|
+ C.log_with_errno_init()
|
|
|
|
+}
|
|
|
|
+
|
|
func SetDevDir(dir string) error {
|
|
func SetDevDir(dir string) error {
|
|
c_dir := C.CString(dir)
|
|
c_dir := C.CString(dir)
|
|
defer free(c_dir)
|
|
defer free(c_dir)
|