• Andrew Morton's avatar
    [PATCH] reiserfs: reiserfs_file_write implementation · afd64673
    Andrew Morton authored
    From: Oleg Drokin <green@namesys.com>
    
    With the current 'one block at a time' algorithm, writes past the end of a
    file are slow because each new file block is separately added into the tree
    causing shifting of other items which is CPU expensive.
    
    With this new implementation if you write into file with big enough chunks,
    it uses half as much CPU.  Also this version is more SMP friendly than the
    current one.
    
    There are some known-bad applications that break with this patch (ie.  start
    to work very slow or even hang).
    
    This is because the filesystem returns a large value in the stat.st_blocksize
    hint (128k instead of 4k).  This tickles a small number of application bugs.
    One is KDE's kmail 3.04 (fixed by upgrading to 3.1+) and the other is
    sleepycat's database from before 1997.
    
    If you hit a slowdown problem that you believe is related to the increased
    "recommended i/o size" value, try to mount your fs with nolargeio=1 mount
    option (remount should work too).
    
    This patch exports block_commit_write(), generic_osync_inode() and
    remove_suid() to modules.
    afd64673
file.c 45.1 KB