> 2.1.30 sucks up system time (at least on my 486DX33 8MB test target).
> When compiling a kernel, 2.1.30 spends almost 50% more time inside the
> kernel than 2.1.29.
have you turned SMP off in the top Makefile? LCT#15 (Linus Cute Trick #15)
> The problem is the change of search order in get_empty_inode(). Changing
> i_prev back to i_next resolves the problem.
>
> Ingo, wasn't this a performance change for NFS?
duh. nope. wait, does the following help:
--------------------------------------------------------------->
--- linux-2.1.30_vanilla/fs/inode.c Fri Mar 28 12:31:53 1997
+++ linux/fs/inode.c Sat Mar 29 12:20:43 1997
@@ -523,6 +523,7 @@
if (best->i_count)
goto repeat;
found_good:
+ first_inode = best;
clear_inode(best);
best->i_count = 1;
best->i_nlink = 1;
<---------------------------------------------------------------
the problem is that free inodes are inserted in chunks, and
get_free_inode() gets the wrong end ... by moving first_inode we can get
around this: free inodes get always inserted before first_inode and we
search the list backwards.
( i've noticed this one, but Thomas Schoebel-Theuer wrote me about his new
inode implementation, so i didnt care about it. Then Linus put my
half-done patch suggestion into 2.1.30 ... )
please tell me if this fixes the problem so i can post it to linux-kernel.
Ingo