diff options
| author | Andrew Morton <akpm@digeo.com> | 2003-02-03 17:01:56 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2003-02-03 17:01:56 -0800 |
| commit | 46b11ba936036868bd84dc0777f835af7851b1e1 (patch) | |
| tree | d419fd77439cb4830a54e7aefb4321f3b1322edb /include/linux | |
| parent | b345e6d2a8865bc2c42bb5b186ff700a8723993e (diff) | |
[PATCH] fix i_sem contention in sys_unlink()
Truncates can take a very long time. Especially if there is a lot of
writeout happening, because truncate must wait on in-progress I/O.
And sys_unlink() is performing that truncate while holding the parent
directory's i_sem. This basically shuts down new accesses to the entire
directory until the synchronous I/O completes.
In the testing I've been doing, that directory is /tmp, and this hurts.
So change sys_unlink() to perform the actual truncate outside i_sem.
When there is a continuous streaming write to the same disk, this patch
reduces the time for `make -j4 bzImage' from 370 seconds to 220.
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions
