NTFS的几个patch

本文记录了NTFS-3G在移植后遇到的几个问题及其修复方法,包括读目录返回EIO的错误、文件名长度导致创建文件失败、分区满时的写入问题、内存泄漏以及大容量硬盘的位图搜索性能优化。
摘要由CSDN通过智能技术生成

NTFS-3G移植后在项目测试过程中发现的一些bug, 摘录了一些放在blog上.


a.读目录返回EIO, 是index allocation里面的文件名的index entry的长度正好快到这个allocation结束的时候, 判断有问题.
=== (+5,-2) src/kware/ufs/ntfs-3g/libntfs-3g/dir.c ===
@@ -1372,8 +1372,11 @@
         dirent = (char*)dirent + ie->key.file_name.file_name_length + 1;//do not forget the ending \0
         info++;
 
-        do
+        do{
             ie = (INDEX_ENTRY*)((u8*)ie + le16_to_cpu(ie->length));
+            if (ie->ie_flags & INDEX_ENTRY_END)
+                break;
+            }
         while(last_index == ie->indexed_file || ie->key.file_name.file_name_type == FILE_NAME_DOS);
         last_index = ie->indexed_file;
     }
其实这样还有bug,应该是:
        do{
            ie = (INDEX_ENTRY*)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值