[Bug 4216] New: Poor file I/O performance on FAT32 filesystems

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Tue Apr 8 20:50:50 CDT 2014


http://bz.selenic.com/show_bug.cgi?id=4216

          Priority: normal
            Bug ID: 4216
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: Poor file I/O performance on FAT32 filesystems
          Severity: bug
    Classification: Unclassified
                OS: Windows
          Reporter: andy.ja.lee at gmail.com
          Hardware: PC
            Status: UNCONFIRMED
           Version: 2.9.2
         Component: Mercurial
           Product: Mercurial

It appears that checknlink in util.py always returns false when the FS is FAT32
since FAT32 does not support hard linking (which causes the oslink() call to
barf up an OSError).

This results in many extraneous file copies being made by scmutil.py (in
vfs.__call__ due to _trustnlink being false).  This can have a noticeable
impact on the performance of commits due to copies of 00manifest.d being made
(in my case a 550 MB file).  This becomes especially unfortunate when trying to
run hg convert on a moderate to large sized repo.

Since FAT32 doesn't support hard links all, I don't think the copy operations
are actually required to prevent repo corruption?  If possible, checknlink
should have logic to detect a lack of hard link support and return true.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list