vfs: conditionally clear close-on-exec flag
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 31 Oct 2015 23:06:40 +0000 (16:06 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 31 Oct 2015 23:14:51 +0000 (16:14 -0700)
commitfc90888d07b8e17eec49c04bdb26344fdea96c3b
treebc5dd1d51b64c378cfed016eefa3046f860fa8c0
parentf3f86e33dc3da437fa4f204588ce7c78ea756982
vfs: conditionally clear close-on-exec flag

We clear the close-on-exec flag when opening and closing files, and the
bit was almost always already clear before.  Avoid dirtying the
cacheline if the clearning isn't necessary.  That avoids unnecessary
cacheline dirtying and bouncing in multi-socket environments.

Eric Dumazet has a file descriptor benchmark that goes 4% faster from
this on his two-socket machine.  It's probably partly superlinear
improvement due to getting slightly less spinlock contention on the
file_lock spinlock due to less work in the critical section.

Tested-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/file.c