graph driver-device mapper-04libdevmapper基本操作

简介:
// 创建thin pool // 调用路径:NewDeviceSet->initDevmapper->createPool 1.1 func createPool(poolName string, dataFile, metadataFile *os.File, poolBlockSize uint32) error { //通过task封装与libdevmapper的交互 task, err := createTask(DeviceCreate, poolName) if task == nil { return err } //data block device的大小。通过ioctl size, err := GetBlockDeviceSize(dataFile) if err != nil { return fmt.Errorf("Can't get data size %s", err) } //创建thin pool的參数 params := fmt.Sprintf("%s %s %d 32768 1 skip_block_zeroing", metadataFile.Name(), dataFile.Name(), poolBlockSize) //加入函数參数 if err := task.AddTarget(0, size/512, "thin-pool", params); err != nil { return fmt.Errorf("Can't add target %s", err) } //创建一个同步量 var cookie uint = 0 if err := task.SetCookie(&cookie, 0); err != nil { return fmt.Errorf("Can't set cookie %s", err) } //运行任务 if err := task.Run(); err != nil { return fmt.Errorf("Error running DeviceCreate (createPool) %s", err) } //等待thin pool创建完毕 UdevWait(cookie) return nil } // 创建操作,task封装对devicemapper的操作 1.2 func createTask(t TaskType, name string) (*Task, error) { //创建tasktype相应的封装函数 task := TaskCreate(t) if task == nil { return nil, fmt.Errorf("Can't create task of type %d", int(t)) } if err := task.SetName(name); err != nil { return nil, fmt.Errorf("Can't set task name %s", name) } return task, nil } // 创建一个指定的操作类型 1.3 func TaskCreate(tasktype TaskType) *Task { //创建操作 Ctask := DmTaskCreate(int(tasktype)) if Ctask == nil { return nil } task := &Task{unmanaged: Ctask} runtime.SetFinalizer(task, (*Task).destroy) return task } // 创建指定的操作 // DmTaskCreate=dmTaskCreateFct 1.4 func dmTaskCreateFct(taskType int) *CDmTask { return (*CDmTask)(C.dm_task_create(C.int(taskType))) }





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5157614.html,如需转载请自行联系原作者
相关文章
|
10月前
|
Linux
device_node转换成platform_device
device_node转换成platform_device
86 0
module_platform_driver源码分析
module_platform_driver源码分析
|
并行计算 PyTorch Go
成功解决The NVIDIA driver on your system is too old (found version 8000).Please update your GPU driver
成功解决The NVIDIA driver on your system is too old (found version 8000).Please update your GPU driver
|
Linux
platform_device_register和platform_driver_register
http://www.linuxidc.com/Linux/2012-01/51725.htm   #include #include #include #include #include #include #include #include #include #...
1401 0
|
Linux
关于platform_device和platform_driver的匹配【转】
转自:http://blog.csdn.net/dfysy/article/details/5959451 版权声明:本文为博主原创文章,未经博主允许不得转载。 说句老实话,我不太喜欢现在Linux 2.6这套bus, platform, device,device driver 的模式。
863 0
|
数据格式 芯片 SoC
Device Tree Usage 【转】
转自:http://blog.chinaunix.net/uid-20522771-id-3457184.html   原文链接:http://devicetree.org/Device_Tree_Usage#How_Interrupts_Work   Device Tree Usage ...
892 0