Ceph-client内核代码分析(二)

1、rbd模块加载

module_init(rbd_init);

加载过程:

1、检查兼容性;

2、创建slab缓存;

    rbd_img_request_cache
    rbd_obj_request_cache
    rbd_segment_name_cache

3、创建延迟工作队列;

    RBD_DRV_NAME,是工作队列名称,也是rescuer线程名称
    WQ_MEM_RECLAIM,多创建了一个rescuer线程,保证在任何内存压力之下至少有一个执行上下文
    0,WQ_DFL_ACTIVE,决定了一个 wq 在同一时刻最多有几个per-CPU执行上下文

4、判断是否为所有rbd块使用唯一的主设备号,默认不使用唯一主设备号;

    major number:表示不同的设备类型
    minor number:表示同一个设备的的不同分区

5、注册设备,注册总线

2、rbd模块卸载

1、释放ida;

    IDR based id allocator, use when translation from id to pointer isn't necessary.

2、注销总线;

3、注销设备;

4、释放工作队列;

5、释放slab缓存;

 

转载于:https://my.oschina.net/fengfengfeng/blog/381051

你可能感兴趣的:(Ceph-client内核代码分析(二))