首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

linux内核源码翻阅之facebook硬盘加速flashcache之四

2013-09-18 
linux内核源码阅读之facebook硬盘加速flashcache之四这一小节介绍一下flashcache读写入口和读写的基础实现

linux内核源码阅读之facebook硬盘加速flashcache之四

这一小节介绍一下flashcache读写入口和读写的基础实现。首先,不管是模块还是程序,必须先找到入口,用户态代码会经常去先看main函数,内核看module_init,同样看IO流时候也要找到入口。flashcache作为一个dm_target,入口就是struct target_type 的map函数,对应的是flashcache_map函数:

1208     r = dm_kcopyd_client_create(FLASHCACHE_COPY_PAGES, &dmc->kcp_client);1209     if (r) {1210          ti->error = "Failed to initialize kcopyd client\n";1211          dm_io_client_destroy(dmc->io_client);1212          goto bad3;1213     }

第二个参数dm_io_region是源地址,第四个参数是目的地址,定义如下struct dm_io_region {
     struct block_device *bdev;
     sector_t sector;
     sector_t count;          /* If this is zero the region is ignored. */
};
dm_kcopyd_notify_fn fn是kcopyd处理完请求的回调函数context 是回调函数参数,在flashcache都设置对应的kcached_job小结一下,以上两类函数其实本质是一样的,调用者填写好源地址和目的地址,地址可以是内存中的也可以是设备的,填好之后就调用函数,再接着就等回调通知。就好比我们在网上购物,帐号(dm_client)登录,我们只负责填好订单(dm_io_region),具体的生产制造物流过程我不关心,我只关心门铃响(dm_kcopyd_notify_fn)的时候我要的物品都已经送上门来了。

热点排行