04 2018 档案
摘要:1、iobuf用来收发数据时候使用的缓冲区,由iobuf_pool来管理使用。 在iobuf.h中定义了如下几个机构体: 在iobuf.c开头定义了一个数组,此数组作为全局变量,定义了有8种大小的iobuf。 每一个记录表示某类型iobuf的页面大小以及在anena中的数量, 也就是说某个类型iob
阅读全文
摘要:一般来说,我们写个客户端程序大概的样子是这样的: 我们这里按照程序执行的思路,一句一句的解读程序的执行过程。 1、 fs2 = glfs_new (argv[1]); 1.1 这句内部定义如下:在(glfs.c中)pub_glfs_new 到这里,基本内存资源都已经初始化完毕了,event_pool
阅读全文
摘要:socket.c在4000行位置定义了一组结构函数,我们可以从这里开始找到入口,如果是客户端则需要调用connect, 如果是服务端则需要调用listen, 在connect函数的第3541行处,将socket加入到eventpool的监控范围,
阅读全文
摘要:1. 前言 在C语言i中,存储变量的结构体加上一组函数指针,大概就可以算是一个对象模型了;如果将一组函数指针捆绑为结构体, 后期根据配置或者环境需要绑定到不同实现模块中的一组函数,可以认为是C语言面对对象的设计实现了。 2. 概述 事件模型,定义在"libgusterfs/src/"下几个文件中:
阅读全文
摘要:Jimmy的文档:Glusterfs的rpc模块分析 第一节、rpc服务器端实现原理及代码分析 第二节、rpc客户端实现原理及代码分析 第三节、rpc通信过程分析 经过阅读源码对比之前提及的文档,我个人理解的rpc_client对象如下图,
阅读全文
摘要:关于3.2.5版本分析,详见《GlusterFS之内存池(mem-pool)实现原理及代码详解》 此4.0.1版本内存池与版本3中的描述变化有点大,总的原理还是类似LINUX中的SLAB算法,定义一系列大小类型的池子, 1. 一共定义了15个池,每个池子大小都是依次幂级数增长的 结构体 mem_po
阅读全文

浙公网安备 33010602011771号