devmapper_wrapper_deferred_remove.go 1016 B

12345678910111213141516171819202122232425262728293031323334
  1. // +build linux,cgo,!libdm_no_deferred_remove
  2. package devicemapper
  3. /*
  4. #cgo LDFLAGS: -L. -ldevmapper
  5. #include <libdevmapper.h>
  6. */
  7. import "C"
  8. // LibraryDeferredRemovalSupport is supported when statically linked.
  9. const LibraryDeferredRemovalSupport = true
  10. func dmTaskDeferredRemoveFct(task *cdmTask) int {
  11. return int(C.dm_task_deferred_remove((*C.struct_dm_task)(task)))
  12. }
  13. func dmTaskGetInfoWithDeferredFct(task *cdmTask, info *Info) int {
  14. Cinfo := C.struct_dm_info{}
  15. defer func() {
  16. info.Exists = int(Cinfo.exists)
  17. info.Suspended = int(Cinfo.suspended)
  18. info.LiveTable = int(Cinfo.live_table)
  19. info.InactiveTable = int(Cinfo.inactive_table)
  20. info.OpenCount = int32(Cinfo.open_count)
  21. info.EventNr = uint32(Cinfo.event_nr)
  22. info.Major = uint32(Cinfo.major)
  23. info.Minor = uint32(Cinfo.minor)
  24. info.ReadOnly = int(Cinfo.read_only)
  25. info.TargetCount = int32(Cinfo.target_count)
  26. info.DeferredRemove = int(Cinfo.deferred_remove)
  27. }()
  28. return int(C.dm_task_get_info((*C.struct_dm_task)(task), &Cinfo))
  29. }