updated patch for files struct access

Bill Hawes (whawes@star.net)
Sun, 01 Feb 1998 10:29:22 -0500


This is a multi-part message in MIME format.
--------------00357648A86FCFCC77DA6D21
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I've made some changes to the patch for accessing the files structure array,
dropping the separate fd_get() in favor of fget() and moving the new functions
into file.h. The use of fd_get() is retained, though, as this seems to be the
most straightforward way to ensure that locks are removed.

Protecting the file structures by incrementing the f_count impacts lock handling
because there are two kinds of locks: one type is removed when the last use of a
file for the process is retired, and the other type is removed when the file
f_count is going to 0. Consider the case where the clone task A holds a lock on
a file, and a clone task B closes the file while the task A is accessing it.
When task A finishes with the file, the close processing needs to call the
locks_remove_locks function; otherwise, no matter which type of lock is being
used, it won't be released.

The patch handles this with a fd_put() routine that checks whether the file is
still installed as the original fd slot. If it is, we only need to decrement
f_count. But if the original slot is NULL or has another file, we must call
close_fp to handle the lock removal.

I've also extended the patch so that it now covers most of the uses of the
files->fd[] array, except for some cases in the architecture-specific
directories. I'm running it here with no problems, and as it doesn't change
behavior (except by protecting against file closing), it should be safe to
apply.

Regards,
Bill
--------------00357648A86FCFCC77DA6D21
Content-Type: application/x-gzip; name="files_84-patch.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="files_84-patch.gz"

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
PlFuCalvkhYvd27t/B9jbU6SElsAAA==
--------------00357648A86FCFCC77DA6D21--