20楼#
发布于:2008-06-22 12:15
是的!cache的大小 从他驱动中得到的是明文的大小,也就是,那么cache的 lazy write 就是在写的时候就要比较offset 和得到的明文的大小,所以一旦=>明文大小的时候就停止写了!而且文件驱动规定了lazy write 的写的时候是不能改变文件大小的,也不能在文件尾添加。改变文件大小的时候是在一开始app 写的时候,fsd要检查是不是超过endoffile,如果超过就会setcachefile size 的这个函数来通知,然后明确的让cache 调用setimforationfile 改变大小
|
|
21楼#
发布于:2008-06-23 13:19
引用第20楼qianjunhua于2008-06-22 12:15发表的 : 是让cache更新fcb里的文件大小,还是更新cache里的文件大小? |
|
22楼#
发布于:2008-06-24 10:21
引用第20楼qianjunhua于2008-06-22 12:15发表的 : qianjunhua,你说 当 offset=>明文大小 时就会停止写, 这个确实能够解释,应用报告的 “磁盘已满”或“延迟写失败”的这种错误, 并且你说 “文件大小的时候是在一开始app 写的时候”也就是说要想解决这个问题必须在app的写的时候就改变其大小, 这个改变大小 改如何处理了?是在直接在setimforationfile处理 还是除了setimforationfile 以外的地方也要进行处理? qianjunhua 请你给个详细点的说明 ,谢谢! |
|
|
23楼#
发布于:2008-06-24 14:04
应该是在fcb里面直接修改文件的大小,这样ntfs 在适当的时候会用fbc里面的值来调用ccsetcachefilesize 这个函数,来通知cache 这个时候文件的大小
|
|
24楼#
发布于:2008-06-24 17:04
引用第23楼qianjunhua于2008-06-24 14:04发表的 : fcb里面直接修改文件的大小? 呵呵 好想法 这样可以吗?你试验过没 如果直接修改FCB的话 ,还不如 自己下发 setfileinformation来修改FCB 这样似乎能更好一些 |
|
|
上一页
下一页