如何理解blk_plug_device(),blk_remove_plug()

各位大虾好:

         小弟在看文件系统相关代码时,对Block层的blk_plug_device(),blk_remove_plug()这个两个函数不大理解,ULK上说“blk_plug_device()是指的是插入到某个块设备驱动程序处理的请求队列中,blk_remove_plug()是拔去一个请求队列q”。但在2.6.24的__make_request()函数中:
         1   当通过elv_queue_empty()判断请求队列为空时调用了blk_plug_device(),这是什么原因?
         2   而当该bio操作有sync标志时会调用__generic_unplug_device(),这个我能想明白,要立刻处理此bio,但为什么在里面又调用了blk_remove_plug()?
         怎么感觉上述的调用和ULK上对这两个函数功能描述不大对应啊,我是新手,还请大家多多指教,谢谢了

作者: weweyangyang   发布时间: 2011-01-06

哎,还是没人回啊,只好自己顶了,各位大侠别嫌太简单啊,小弟真心求教啊

作者: weweyangyang   发布时间: 2011-01-10