graph driver-device mapper-04libdevmapper基本操作
生活随笔
收集整理的這篇文章主要介紹了
graph driver-device mapper-04libdevmapper基本操作
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// 創(chuàng)建thin pool
// 調(diào)用路徑: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的大小。通過ioctlsize, err := GetBlockDeviceSize(dataFile)if err != nil {return fmt.Errorf("Can't get data size %s", err)}//創(chuàng)建thin pool的參數(shù)params := fmt.Sprintf("%s %s %d 32768 1 skip_block_zeroing", metadataFile.Name(), dataFile.Name(), poolBlockSize)//加入函數(shù)參數(shù)if err := task.AddTarget(0, size/512, "thin-pool", params); err != nil {return fmt.Errorf("Can't add target %s", err)}//創(chuàng)建一個(gè)同步量var cookie uint = 0if err := task.SetCookie(&cookie, 0); err != nil {return fmt.Errorf("Can't set cookie %s", err)}//運(yùn)行任務(wù)if err := task.Run(); err != nil {return fmt.Errorf("Error running DeviceCreate (createPool) %s", err)}//等待thin pool創(chuàng)建完畢UdevWait(cookie)return nil
}// 創(chuàng)建操作,task封裝對(duì)devicemapper的操作
1.2 func createTask(t TaskType, name string) (*Task, error) {//創(chuàng)建tasktype相應(yīng)的封裝函數(shù)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
}// 創(chuàng)建一個(gè)指定的操作類型
1.3 func TaskCreate(tasktype TaskType) *Task {//創(chuàng)建操作Ctask := DmTaskCreate(int(tasktype))if Ctask == nil {return nil}task := &Task{unmanaged: Ctask}runtime.SetFinalizer(task, (*Task).destroy)return task
}// 創(chuàng)建指定的操作
// DmTaskCreate=dmTaskCreateFct
1.4 func dmTaskCreateFct(taskType int) *CDmTask {return (*CDmTask)(C.dm_task_create(C.int(taskType)))
}
總結(jié)
以上是生活随笔為你收集整理的graph driver-device mapper-04libdevmapper基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 番茄小说app是免费的吗(好看的小说尽在
- 下一篇: 4.6 Routing -- Rende