发布时间:2013-08-04 18:31:34
1.通过sys_write()__block_commit_write() mark_buffer_dirty() __set_page_dirty() // fs/buffer.c2.MAP_SHARED方式做mmap()后,写page导致缺页do_page_fault() handle_pte_fault() do_linear_fault() __do_fault filemap_fau.........【阅读全文】
发布时间:2013-08-04 18:29:29
pagecache层在调用文件系统提供的get_block()函数分配数据块时,如果成功分配,那么需要调用unmap_underlying_metadata()对新分配的数据块做如下处理:根据新分配磁盘块的块号,从文件系统所在的块设备基树中查找相应的buffer,如果buffer存在,1.清除buffer的dirty标志,2.等待buffer的IO完毕.那么,文件系统为什么无法保证buffer.........【阅读全文】
发布时间:2013-08-04 18:27:59
Q:I_FREEING标识inode正在被释放,由于竞争,drop_pagecache_sb(),igrab()等函数中看到的I_FREEING,I_WILL_FREE置位的inode是否可能正在被释放到slab?A:不会,由于supberblock的i_sb_list受inode_lock保护,drop_pagecache_sb()和dispose_list()竞争时,如果drop_pagecache_sb竞争到了inode_lock锁,dispose_list()要销毁inode.........【阅读全文】
发布时间:2013-08-04 18:26:53
I_DIRTY是三个标志I_DIRTY_SYNC,I_DIRTY_DATASYNC,I_DIRTY_PAGES的组合,其中,I_DIRTY_SYNC,I_DIRTY_PAGES分别表示:inode的属性(如:修改时间)改变和inode有脏页,I_DIRTY_DATASYNC的含义就不太容易理解,我们先从sys_write()看inode的DIRTY标志的变化:1.无论是否有数据写入,文件的修改时间都会更新,即I_DIRTY_SYNC标志会置.........【阅读全文】