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

來源:互聯網
上載者:User

標籤:devicemapper   docker   

//建立thin pool//調用路徑:NewDeviceSet->initDevmapper->createPool1.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)}//建立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 = 0if 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=dmTaskCreateFct1.4 func dmTaskCreateFct(taskType int) *CDmTask {return (*CDmTask)(C.dm_task_create(C.int(taskType)))}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.