Fix FD table's next/hint FD
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 27 Jul 2015 18:22:36 +0000 (14:22 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 28 Jul 2015 23:57:18 +0000 (19:57 -0400)
commit9f5d0d1d1d6e234ff4761b299eee01efeab473d5
tree81e5feb3e1645a513602fbcc8c7476df17a80e2c
parent098465df597ad59fc831bb60fb53533c9e8b3313
Fix FD table's next/hint FD

The purpose of next_fd was to track the next available FD, to decrease
the pain of scanning the entire FD space.  The old version was not used
and was incorrectly updated.

It is now a hint too, instead of the definitive minimum available FD.
Imagine FDs 0-10 are in use; the min/hint is 11.  Then close FD 5.  The
min/hint is now 5.  Then open a new FD and get 5, with a min of 6.  6 is
not actually available.

If we wanted to maintain the hint as the actual FD, we'd have to scan
the FD space when 5 opens to find the next zero bit.  If we later close
4, we'd need to update the min again, and somewhat wasted the effort of
scanning.  It's simpler to treat it as a hint that is <= the minimum
available FD.
kern/include/vfs.h
kern/src/vfs.c