Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 558344
Collapse All | Expand All

(-)a/daemon/graphdriver/devmapper/deviceset.go (-5 / +9 lines)
Lines 1485-1496 func (devices *DeviceSet) deactivatePool() error { Link Here
1485
	if err != nil {
1485
	if err != nil {
1486
		return err
1486
		return err
1487
	}
1487
	}
1488
	if d, err := devicemapper.GetDeps(devname); err == nil {
1488
1489
		// Access to more Debug output
1489
	if devinfo.Exists == 0 {
1490
		logrus.Debugf("[devmapper] devicemapper.GetDeps() %s: %#v", devname, d)
1490
		return nil
1491
	}
1491
	}
1492
	if devinfo.Exists != 0 {
1492
	if err := devicemapper.RemoveDevice(devname); err != nil {
1493
		return devicemapper.RemoveDevice(devname)
1493
		return err
1494
	}
1495
1496
	if d, err := devicemapper.GetDeps(devname); err == nil {
1497
		logrus.Warnf("[devmapper] device %s still has %d active dependents", devname, d.Count)
1494
	}
1498
	}
1495
1499
1496
	return nil
1500
	return nil
(-)a/pkg/devicemapper/devmapper_wrapper.go (-3 / +15 lines)
Lines 38-44 static void log_with_errno_init() Link Here
38
*/
38
*/
39
import "C"
39
import "C"
40
40
41
import "unsafe"
41
import (
42
	"reflect"
43
	"unsafe"
44
)
42
45
43
type (
46
type (
44
	CDmTask C.struct_dm_task
47
	CDmTask C.struct_dm_task
Lines 184-195 func dmTaskGetDepsFct(task *CDmTask) *Deps { Link Here
184
	if Cdeps == nil {
187
	if Cdeps == nil {
185
		return nil
188
		return nil
186
	}
189
	}
190
191
	// golang issue: https://github.com/golang/go/issues/11925
192
	hdr := reflect.SliceHeader{
193
		Data: uintptr(unsafe.Pointer(uintptr(unsafe.Pointer(Cdeps)) + unsafe.Sizeof(*Cdeps))),
194
		Len:  int(Cdeps.count),
195
		Cap:  int(Cdeps.count),
196
	}
197
	devices := *(*[]C.uint64_t)(unsafe.Pointer(&hdr))
198
187
	deps := &Deps{
199
	deps := &Deps{
188
		Count:  uint32(Cdeps.count),
200
		Count:  uint32(Cdeps.count),
189
		Filler: uint32(Cdeps.filler),
201
		Filler: uint32(Cdeps.filler),
190
	}
202
	}
191
	for _, device := range Cdeps.device {
203
	for _, device := range devices {
192
		deps.Device = append(deps.Device, (uint64)(device))
204
		deps.Device = append(deps.Device, uint64(device))
193
	}
205
	}
194
	return deps
206
	return deps
195
}
207
}

Return to bug 558344