blktap目录中定义了一些用户层的虚拟磁盘访问接口,下面介绍如何添加自定义虚拟磁盘访问接口,基于xen4.0
1:首先在tapdisk.h中添加
extern struct tap_disk tapdisk_mydisk;
其中tapdisk_mydisk即为自己定义的虚拟磁盘名称。
2:同时在tapdisk.h中添加:
static disk_info_t mydisk_disk = {
DISK_TYPE_MYDISK ,
"mydisk disk (mydisk)",
"mydisk",
0,
0,
#ifdef TAPDISK
&tapdisk_mydisk,
#endif
};
3:在blktaplib.h中添加 DISK_TYPE_MYDISK的定义,如:#define DISK_TYPE_MYDISK 6
4:在tapdisk.h中将自定义的mydisk添加到dtypes中,注意其添加的位置应该与#define DISK_TYPE_MYDISK 6保持一致。
static disk_info_t *dtypes[] = {
&aio_disk,
&sync_disk,
&vmdk_disk,
&ram_disk,
&qcow_disk,
&qcow2_disk,
&mydisk_disk,
};
5:建立block-mydisk.c文件,定义struct tap_disk tapdisk_mydisk,添加相应的td_open,td_queue_read等函数
6:上述步骤完成后,此时在domu的配置文件中利用tap:mydisk:image来启动时,提示未知的磁盘类型mydisk
因没有在BlktapController.py中添加自定义的磁盘类型。
在blktap1_disk_types中添加mydisk,此时重新利用tap:mydisk:image来启动domu时即可成功启动。