7:48:08[INFO][8390 ][-1226060944][ proxyfs_open],new file fi 152535600 file: /aa ,Size:229 oflags:0
17:48:08[INFO][8392 ][-1226060944][ proxyfs_write],start fi->fh 152535600 /aa 229 7 flags:1
17:48:08[INFO][8392 ][-1226060944][ proxyfs_write], initcfile
17:48:08[INFO][8392 ][-1226060944][ proxyfs_write],end /aa 229 7 file->Size:236
17:48:08[INFO][8392 ][-1251382416][ proxyfs_release],start file: /aa,Size:236 flags:0
17:48:08[INFO][8392 ][-1251382416][ send_data_pre], start get File md5
17:48:08[INFO][8392 ][-1251382416][ send_data_pre], get File md5 fc9a9c6c3b0ffd5903258a1e1d93a5cb
17:48:09[INFO][9390 ][-1226060944][ proxyfs_open],from map fi 152535600 file: /aa ,Size:236 oflags:0
17:48:09[INFO][9514 ][-1251382416][ proxyfs_release],end file: md5 fc9a9c6c3b0ffd5903258a1e1d93a5cb ,Size:236
17:48:09[INFO][9514 ][-1217528976][ proxyfs_write],start fi->fh 152535600 /aa 229 4 flags:1
17:48:09[INFO][9514 ][-1217528976][ proxyfs_write], initcfile
17:48:09[INFO][9514 ][-1217528976][ proxyfs_write],end /aa 229 4 file->Size:236
17:48:09[INFO][9515 ][-1226060944][ proxyfs_release],start file: /aa,Size:236 flags:0
17:48:09[INFO][9515 ][-1226060944][ send_data_pre], start get File md5
17:48:09[INFO][9515 ][-1226060944][ send_data_pre], get File md5 b1fbe5db983b507bafd91d9fd362258b
17:48:10[INFO][10636 ][-1226060944][ proxyfs_release],152535600 ,152535600
17:48:10[INFO][10637 ][-1226060944][ proxyfs_release],end file: md5 b1fbe5db983b507bafd91d9fd362258b ,Size:236
比较健康的状态。一次写进入 release状态,open 操作到达。获取了文件对象。增加了链接。
release 发送完数据,不删除对象。在release 释放之前也不会write write 也锁住了。
write 时会重新设置file 对象。然后完成下一次的操作。
不足:文件对象是在release 时获取的,从map 中,那么如果这个时候其他地方有修改是不会采用修改后的
对象版本的,需要在filemap 和 dir 获取之间选择一个版本,
但是没有明确的信息知道那个版本是最新的。
这种情况:在release 到了服务器,然后服务器接受了另外一个修改,然后本地修改的是自己release 的版本。
最合理的情况:修改的是服务器上的版本。
但是这个问题就和目录结构缓存一样是没有办法避免的。把缓存时间设置到最低。
每次请求去找服务器要最新数据。
继续延伸: 就算是open 获取的是最新数据,但是在write 时,数据已经被修改过了。
除非在每次操作时都设置锁,让其他的该动不能进行。
但这就像是理想与现实的关系。现实情况下,我们不需要达到这样的精度。这种情况有可能发生。但是不会造成问题。在别人没有提出这样严格需求的情况下。
阅读(426) | 评论(0) | 转发(0) |