gvisor/pkg
Fabricio Voznika 276ff149a4 Add MultiGetAttr message to 9P
While using remote-validation, the vast majority of time spent during
FS operations is re-walking the path to check for modifications and
then closing the file given that in most cases it has not been
modified externally.

This change introduces a new 9P message called MultiGetAttr which bulks
query attributes of several files in one shot. The returned attributes are
then used to update cached dentries before they are walked. File attributes
are updated for files that still exist. Dentries that have been deleted are
removed from the cache. And negative cache entries are removed if a new
file/directory was created externally. Similarly, synthetic dentries are
replaced if a file/directory is created externally.

The bulk update needs to be carefull not to follow symlinks, cross mount
points, because the gofer doesn't know how to resolve symlinks and where
mounts points are located. It also doesn't walk to the parent ("..") to
avoid deadlocks.

Here are the results:

Workload        VFS1       VFS2     Change
bazel action     115s       70s	     28.8s
Stat/100      11,043us   7,623us      974us

Updates #1638

PiperOrigin-RevId: 369325957
2021-04-19 16:25:01 -07:00
..
abi
amutex Invert dependency between the context and amutex packages. 2020-09-15 15:14:53 -07:00
atomicbitops Automated rollback of changelist 303799678 2020-04-01 11:06:26 -07:00
binary Move Align{Up,Down} into binary package. 2020-02-11 11:09:31 -08:00
bits Misc fixes to make stat_test pass (almost) 2020-03-25 14:59:15 -07:00
bpf Fix more nogo tests 2020-11-03 15:23:32 -08:00
buffer pkg/buffer: Reorganize internal structure to allow dynamic sizes. 2020-09-22 17:56:40 -07:00
cleanup Move Cleanup to its own package 2020-05-28 14:49:06 -07:00
compressio
context Support VFS2 save/restore. 2020-10-23 17:48:33 -07:00
control
coverage
cpuid [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
crypto Internal change. 2020-12-03 14:47:16 -08:00
eventchannel [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
fd [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
fdchannel [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
fdnotifier [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
flipcall [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
fspath Port most syscalls to VFS2. 2020-02-25 13:37:34 -08:00
gohacks
goid Bump build constraints to Go 1.18 2021-02-18 15:30:58 -08:00
hostarch [syserror] Split usermem package 2021-03-29 13:30:21 -07:00
ilist Make ilist split safe. 2021-01-11 13:18:01 -08:00
iovec Move `MaxIovs` back to a variable in `iovec.go`. 2021-03-15 20:11:41 -07:00
linewriter
lisafs
log Remove dependency on golang.org/x/sys/unix 2021-03-03 14:26:30 -08:00
marshal [syserror] Remove syserror from go_marshal 2021-04-14 11:28:49 -07:00
memutil
merkletree
metric Add field support to the sentry metrics. 2021-04-15 20:02:50 -07:00
p9 Add MultiGetAttr message to 9P 2021-04-19 16:25:01 -07:00
pool Remove existing nogo exceptions. 2020-12-11 12:06:49 -08:00
procid [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
rand Actually wrap rand.Reader in bufio.Reader. 2020-03-20 17:02:13 -07:00
refs Add logging option to leak checker. 2020-10-28 18:23:29 -07:00
refsvfs2 Combine reference count logs into one message. 2021-01-15 14:40:26 -08:00
ring0 Merge pull request #5767 from avagin:mxcsr 2021-04-09 17:15:06 -07:00
safecopy Use assembly stub to take the address of assembly functions 2021-04-14 14:14:21 -07:00
safemem
seccomp [syserror] Split usermem package 2021-03-29 13:30:21 -07:00
secio Standardize on tools directory. 2020-01-27 12:21:00 -08:00
segment Fix simple mistakes identified by goreportcard. 2021-01-12 12:38:22 -08:00
sentry
shim [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
sleep Consolidate most synchronization primitive linknames in the sync package. 2020-12-02 19:08:32 -08:00
state Make type sanity checking happen only in race builds. 2021-01-05 18:15:27 -08:00
sync [syserror] Remove syserror from go_marshal 2021-04-14 11:28:49 -07:00
syncevent Consolidate most synchronization primitive linknames in the sync package. 2020-12-02 19:08:32 -08:00
syserr Implement /proc/sys/net/ipv4/ip_local_port_range 2021-03-08 20:40:34 -08:00
syserror Translate syserror when validating partial IO errors 2021-03-18 12:19:57 -07:00
tcpip Fix TCP RACK flaky unit tests. 2021-04-19 14:44:05 -07:00
test
unet [op] Replace syscall package usage with golang.org/x/sys/unix in pkg/. 2021-03-03 10:25:58 -08:00
urpc Add benchmarks targets to BuildKite. 2021-01-05 13:21:54 -08:00
usermem [syserror] Split usermem package 2021-03-29 13:30:21 -07:00
waiter