Messages in this thread | | | Date | Wed, 29 Sep 1999 14:07:15 -0400 (EDT) | From | Alexander Viro <> | Subject | Re: [PATCH] Re: Solaris 100K TCP connections, good example? was:[Fwd: [Fwd: |
| |
On Wed, 29 Sep 1999, Chuck Lever wrote:
> free_inodes() walks the in_use list looking for inodes with a zero > reference count. it's not clear to me how a zero reference count inode can > get onto the in_use list, though. i would think that iput is careful > enough to move inodes whose reference count goes to zero to the unused > list. all other references to the i_count field in the kernel i can find
Wrong. unused is for freed inodes. Inodes in in_use with zero i_count can be immediately taken (without read_inode()). It _is_ needed - take it away and you will get a helluva lot of fs accesses. Think of soft pagefaults.
iput() moves the thing to unused if it is unhashed (and thus can not be ever found via hash lookup). Real cleaning is left to free_inodes() when and if necessary.
However, scanning the list is probably an overkill - I'll look if we can make the things better. In principle, iput() might move the stuff out of in_use (in separate list), provided that iget()/igrab() would care to put them back. I'm not on a Linux box right now, so I can't tell whether it will be enough. I'll check it this evening, OK? Al -- Two of my imaginary friends reproduced once ... with negative results. Ben <float@interport.net> in ASR
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |