Awatmath.1494
net.unix-wizards
utcsrgv!utzoo!decvax!watmath!dmmartindale
Thu Jan 14 22:45:31 1982
Re: UNIX internals question
It probably isn't just because you are writing to a newly-mounted filesystem;
you're likely writing to a newly-allocated file on a newly-mounted filesystem
which has had its superblock rebuilt.
An icheck -s will happily set s_nfree in the superblock to 0, and the first
time an inode is allocated ialloc() must go out and read the i-list to find
100 (or whatever) new free inodes.  Now, after using this algorithm for
a while, the first 1/4 (say) of the i-list becomes completely full.
In a good-sized filesystem, the i-list may be tens of cylinders, and
reading through several cylinders before finding the free inodes is what
causes the delay.  Create 100 more files, and the 100th one will suffer
the same delay.  In Berkeley UNIX, the problem was fixed by having ialloc
keep track of where it quit searching last time and start from there.
(It's actually more sophisticated, but this is the gist of the fix.)

-----------------------------------------------------------------
gopher://quux.org/ conversion by John Goerzen <[email protected]>
of http://communication.ucsd.edu/A-News/


This Usenet Oldnews Archive
article may be copied and distributed freely, provided:

1. There is no money collected for the text(s) of the articles.

2. The following notice remains appended to each copy:

The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996
Bruce Jones, Henry Spencer, David Wiseman.