阿弥陀佛
发布时间:2013-02-13 12:19:04
/* the buffer could optimze by reduce the copy in memory. Because lot of data in dmu buffer only have one dr. So we needn't copy the data by dbuf_fix_old_data. */dbuf_dirty_record_t *dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t *tx){dnode_t *dn;objset_t *os;dbuf_dirty_record_t **drp, .........【阅读全文】
发布时间:2013-01-13 20:53:21
zfs是有两个缓冲区的。首先是dmu buffer,如果dmu buffer中没有数据再找arc buffer,如果找到了,那么就直接调用回调函数,将arc buffer的内容传给dmu buffer。如果再找不到就找磁盘。具体的实现细节如下: dbuf_read 首先会看 dmu buffer的状态,如果是UNCACHED。就会调用 dbuf_read_impl函数。dbuf_read_impl函数会调用dsl_read,进而从arcbuffer中找数据。找的方法是根据db的db_blkptr来查找。 点击(此处)折叠或打开(voi......【阅读全文】
发布时间:2013-01-11 14:12:28
http://www.makelinux.net/books/lkd2/ch11lev1sec5vmalloc 函数常常和kmalloc作为内核申请内存的主要函数,vmalloc申请的内存是内存的虚拟地址是连续的,而kmalloc申请的内存的物理地址是连续的。而内核大多采用kmalloc,主要的原因是由于kmalloc申请的内存是物理上连续的,效率高,而vmalloc申请的内存虚拟地址连续,但是使用的时候需要经过一个页表转换,有开销,效率低。而且某些硬件设备是不经过内存管理单元的。vmalloc的使用场合是内核模块动态的加载进内核的时候,使用vmalloc,而不是使用kmalloc,或者是需要......【阅读全文】