I just typed 'svn add HACKING' as a test and the hard disk went "grind
grind grind." The second time was fast cuz everything was in the
cache, so I ran the same command using strace.
The result is quite pitiful.
svn traverses the entire WC, locking everything in sight. It should
only lock the current dir -- not the whole tree. Of course, it also
happens to be verifying the format of every .svn dir and reading in
every single entries file.
At unlock time, it uses SIX separate syscalls to unlink the lock file.
First, it stats the .svn dir. Then it stats the .svn/lock file. Then
it chmod's it. Then it does a stat/chmod *again*. Then it finally
unlinks the thing. The correct behavior is: unlink the file; if that
fails, then see if it exists and/or whether to make it writable.