Thread (138 messages) 138 messages, 9 authors, 2015-11-06

Re: [Bug 106241] New: shutdown(3)/close(3) behaviour is incorrect for sockets in accept(3)

From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2015-10-21 21:28:32

On Wed, Oct 21, 2015 at 02:18:30PM -0700, Eric Dumazet wrote:
On Wed, 2015-10-21 at 18:04 +0200, Casper.Dik@oracle.com wrote:
quoted
It is only expensive within the process itself. 
thread synchro would require additional barriers to maintain this state,
for a very unlikely case.

The atomic_{inc|dec}() on file refcount are already a problem.
To be fair, this would avoid at least _that_ - file refcount updates would
be less frequent.  However, unlike file->f_count, *descriptor* refcounts
would be much harder to keep in different cachelines.
We certainly do not use/take a lock to find a file pointer into file
descriptor table.

(This lock is only used at open() or close() time)
as well as dup2() and friends, of course.  But yes, we are pretty careful
about avoiding non-local stores on the normal "get file by descriptor" path -
in case of non-shared descriptor table we don't do them at all, and in case
of shared one we only modify refcount in struct file.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help