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)))
}

目录
相关文章
|
SQL 存储 数据采集
数据中台建设方法论
数据中台建设方法论
|
7月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
7月前
|
Linux 虚拟化 iOS开发
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
278 29
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
|
机器学习/深度学习 监控 安全
2024年中测评:5款实用的消防巡检系统
本文对市面上5款主流的消防巡检系统进行了深入的测评分析,包括草料二维码、橙子巡检、巡检卫士等等。
|
弹性计算 安全 Java
关于如何将Web项目部署到阿里云ecs服务器-5个步骤搞定
关于如何将Web项目部署到阿里云ecs服务器-5个步骤搞定
关于如何将Web项目部署到阿里云ecs服务器-5个步骤搞定
|
SQL Oracle 关系型数据库
多环境数据同步(Navicat工具)
多环境数据同步(Navicat工具)
387 0
|
人工智能 API 调度
大语言模型 LLM 管理功能特点解析
大语言模型领域正快速发展,涵盖技术革新、跨领域应用及行业影响。随着技术进步,更多创新性AI应用和服务涌现。Botnow加速迭代AI应用开发平台,赋能各行各业。新发布的模型管理功能包括模型仓库和模型服务,支持模型文件托管、部署及推理服务,提升使用效率,降低成本。模型服务具备本地推理和接入外部模型的能力,满足中大型企业对大语言模型自主可控的需求。
|
存储 边缘计算 安全
5G 边缘计算的安全保障:构建可信的边缘智能
5G 边缘计算的安全保障:构建可信的边缘智能
452 0
|
运维 Devops API
阿里云云效操作报错合集之调用api报错:没有权限,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
机器学习/深度学习 人工智能 达摩院
港大阿里“视觉AI任意门”,一键向场景中无缝传送物体
本文主要展示了阿里和港大的AI版「任意门」,实现零样本的图像嵌入。