Commit Graph

3320 Commits

Author SHA1 Message Date
gVisor bot 6111950f89 Merge pull request #2770 from mikaelmello:patch-1
PiperOrigin-RevId: 313283624
2020-05-26 16:00:17 -07:00
gVisor bot 90bc302084 Merge pull request #2766 from geethanjalieswaran:makefile-change
PiperOrigin-RevId: 313283145
2020-05-26 15:54:47 -07:00
Mikael Mello be6e9bbf55
Fix typo in Wordpress tutorial page 2020-05-25 18:33:49 -03:00
Geethanjali Eswaran 76d0aa47f4 Fix typo in 'make tests' recipe
test_tag_filter => test_tag_filters
Ref: https://docs.bazel.build/versions/master/command-line-reference.html#flag--test_tag_filters
2020-05-23 11:00:27 +00:00
Dean Deng ba2bf9fc13 Skip socket tests only if running on vfs1.
PiperOrigin-RevId: 312763249
2020-05-21 16:32:48 -07:00
Jamie Liu 198642df76 Fix IsRunningWithVFS1() on the runsc-based test runner.
Updates #1035

PiperOrigin-RevId: 312736450
2020-05-21 14:02:43 -07:00
Fabricio Voznika cdf48e8516 Fix TestTmpFile
Split check for file in /tmp from working directory test.
Fix readonly case which should not fail to create working
dir.

PiperOrigin-RevId: 312702930
2020-05-21 11:08:10 -07:00
Fabricio Voznika 7bde26934a Add IsRunningWithVFS1 to test util
VFS2 is adding more functionality than VFS1. In order to test
new functionality, it's required to skip some tests with VFS1.
To skip tests, use:

SKIP_IF(IsRunningWithVFS1());

The test will run in Linux and gVisor with VFS2 enabled.

Updates #1035

PiperOrigin-RevId: 312698616
2020-05-21 10:48:25 -07:00
gVisor bot 7369aaee32 Merge pull request #2719 from geethanjalieswaran:doc-changes
PiperOrigin-RevId: 312687935
2020-05-21 09:55:11 -07:00
Reapor-Yurnero 059879e143 Implement gap tracking in the segment set.
This change was derived from a change by:
  Reapor-Yurnero <reapor.yurnero@gmail.com>

And has been modified by:
  Adin Scannell <ascannell@google.com>

(The original change author is preserved for the commit.)

This change implements gap tracking in the segment set by adding additional
information in each node, and using that information to speed up gap finding
from a linear scan to a O(log(n)) walk of the tree.

This gap tracking is optional, and will default to off except for segment
instances that set gapTracking equal to 1 in their const lists.

PiperOrigin-RevId: 312621607
2020-05-20 22:50:07 -07:00
Jay Zhuang 8298c5bd4d Avoid all caps FIONREAD as test name.
PiperOrigin-RevId: 312596169
2020-05-20 18:40:16 -07:00
Rahat Mahmood 49d2cf287d Remove implicit dependencies for leaf packages.
These packages don't actually use go_stateify or go_marshal, but end
up implicitly dependent on the respective packages due to our build
rules.

These unnecessary dependencies make them unusuable in certain contexts
due to circular dependency.

PiperOrigin-RevId: 312595738
2020-05-20 18:35:32 -07:00
Zeling Feng 5f3eeb4728 Test that we have PAWS mechanism
If there is a Timestamps option in the arriving segment and SEG.TSval
< TS.Recent and if TS.Recent is valid, then treat the arriving segment
as not acceptable: Send an acknowledgement in reply as specified in
RFC-793 page 69 and drop the segment.

https://tools.ietf.org/html/rfc1323#page-19

PiperOrigin-RevId: 312590678
2020-05-20 17:53:35 -07:00
Ian Lewis 61e6879882 Update the Docker quickstart to use 'runsc install'
PiperOrigin-RevId: 312573487
2020-05-20 16:05:49 -07:00
gVisor bot a338eed1d8 Internal change.
PiperOrigin-RevId: 312559963
2020-05-20 14:57:59 -07:00
Dean Deng 76369b6480 Move fsimpl/host file offset from inode to fileDescription.
PiperOrigin-RevId: 312559861
2020-05-20 14:53:51 -07:00
Fabricio Voznika 10abad0040 Add hugetlb and rdma cgroups to runsc
Updates #2713

PiperOrigin-RevId: 312559463
2020-05-20 14:49:13 -07:00
Nicolas Lacasse 2374660f11 Automated rollback of changelist 312522097
PiperOrigin-RevId: 312529859
2020-05-20 12:17:06 -07:00
gVisor bot 6efce83821 Merge pull request #2688 from lubinszARM:pr_goid
PiperOrigin-RevId: 312524376
2020-05-20 11:48:12 -07:00
Nicolas Lacasse 7f57a09008 Upgrade to Bazel 3.1.0.
This upgrades the Kokoro images, bazel toolchains used by RBE runners, and
rules_go, gazelle, and go toolchain versions.

PiperOrigin-RevId: 312522097
2020-05-20 11:36:24 -07:00
Adin Scannell 5bf33a3863 Unbreak permalink.
The permalink should be "linux" not "Linux.

PiperOrigin-RevId: 312518858
2020-05-20 11:20:40 -07:00
Dean Deng 05c89af6ed Implement mmap for host fs in vfs2.
In VFS1, both fs/host and fs/gofer used the same utils for host file mappings.
Refactor parts of fsimpl/gofer to create similar utils to share with
fsimpl/host (memory accounting code moved to fsutil, page rounding arithmetic
moved to usermem).

Updates #1476.

PiperOrigin-RevId: 312345090
2020-05-19 13:46:42 -07:00
Jamie Liu 064347afdf Skip itimer "fairness" tests on ptrace.
With additional logging, the issue described by the new comment looks like:

D0518 21:28:08.416810    6777 task_signals.go:459] [   8] Notified of signal 27
D0518 21:28:08.416852    6777 task_block.go:223] [   8] Interrupt queued
D0518 21:28:08.417013    6777 task_run.go:250] [   8] Switching to sentry
D0518 21:28:08.417033    6777 task_signals.go:220] [   8] Signal 27: delivering to handler
D0518 21:28:08.417127    6777 task_run.go:248] [   8] Switching to app
D0518 21:28:08.443765    6777 task_signals.go:519] [   8] Refusing masked signal 27 // ED: note the ~26ms elapsed since TID 8 "switched to app"
D0518 21:28:08.443814    6777 task_signals.go:465] [   6] Notified of group signal 27
D0518 21:28:08.443832    6777 task_block.go:223] [   6] Interrupt queued
D0518 21:28:08.443914    6777 task_block.go:223] [   6] Interrupt queued
D0518 21:28:08.443859    6777 task_run.go:250] [   8] Switching to sentry
I0518 21:28:08.443936    6777 strace.go:576] [   8] exe E rt_sigreturn()

Slow context switches on ptrace are probably due to kernel scheduling delays.
Slow context switches on KVM are less clear, so leave that bug and TODO open.

PiperOrigin-RevId: 312322782
2020-05-19 11:53:03 -07:00
Dean Deng d06de1bede Fix flaky udp tests by polling before reading.
On native Linux, calling recv/read right after send/write sometimes returns
EWOULDBLOCK, if the data has not made it to the receiving socket (even though
the endpoints are on the same host). Poll before reading to avoid this.

Making this change also uncovered a hostinet bug (gvisor.dev/issue/2726),
which is noted in this CL.

PiperOrigin-RevId: 312320587
2020-05-19 11:41:52 -07:00
gVisor bot 5823629442 Merge pull request #2687 from lubinszARM:pr_tls_1
PiperOrigin-RevId: 312299234
2020-05-19 09:55:20 -07:00
Geethanjali Eswaran fff2232b5f Typo fix in README
'make test TARGETS=""'
TARGET => TARGETS
2020-05-19 08:51:54 +05:30
Adin Scannell f2f2dec728 Add simplified badge and Build workflow.
PiperOrigin-RevId: 312159017
2020-05-18 14:53:23 -07:00
Adin Scannell cbfb55869e Implement Go branch updater with GitHub actions.
PiperOrigin-RevId: 312155686
2020-05-18 14:36:16 -07:00
Fabricio Voznika 20e6efd302 Remove IfChange/ThenChange lint from VFS2
As new functionality is added to VFS2, corresponding files in VFS1
don't need to be changed.

PiperOrigin-RevId: 312153799
2020-05-18 14:26:09 -07:00
Zeling Feng 99a18ec8b4 Support TCP options for packetimpact
PiperOrigin-RevId: 312119730
2020-05-18 11:31:38 -07:00
Fabricio Voznika 32ab382c80 Improve unsupported syscall message
PiperOrigin-RevId: 312104899
2020-05-18 10:23:22 -07:00
Adin Scannell c27e334f26 Fix typo a => an.
Always happens.

PiperOrigin-RevId: 312097591
2020-05-18 09:49:58 -07:00
Adin Scannell 420b791a3d Minor formatting updates for gvisor.dev.
* Aggregate architecture Overview in "What is gVisor?" as it makes more sense
  in one place.

* Drop "user-space kernel" and use "application kernel". The term "user-space
  kernel" is confusing when some platform implementation do not run in
  user-space (instead running in guest ring zero).

* Clear up the relationship between the Platform page in the user guide and the
  Platform page in the architecture guide, and ensure they are cross-linked.

* Restore the call-to-action quick start link in the main page, and drop the
  GitHub link (which also appears in the top-right).

* Improve image formatting by centering all doc and blog images, and move the
  image captions to the alt text.

PiperOrigin-RevId: 311845158
2020-05-15 20:05:18 -07:00
Bhasker Hariharan 679fd2527b Remove debug log left behind by mistake.
PiperOrigin-RevId: 311808460
2020-05-15 15:06:08 -07:00
Adin Scannell c5a939d76c Update vm scripts to handle existing kbuilder user.
PiperOrigin-RevId: 311751972
2020-05-15 10:09:54 -07:00
Adin Scannell 1847165a8c Minor text updates and jquery ordering.
PiperOrigin-RevId: 311744091
2020-05-15 09:31:17 -07:00
Adin Scannell 4502b73d00 Update Kokoro images to include newer gcloud.
PiperOrigin-RevId: 311658774
2020-05-14 20:22:45 -07:00
Jamie Liu fb7e5f1676 Make utimes_test pass on VFS2.
PiperOrigin-RevId: 311657502
2020-05-14 20:09:55 -07:00
gVisor bot 326abf5e36 Internal change.
PiperOrigin-RevId: 311645222
2020-05-14 18:17:33 -07:00
Adin Scannell f589a85889 Run issue_reviver via GitHub.
PiperOrigin-RevId: 311600872
2020-05-14 14:02:43 -07:00
gVisor bot bdf7bb71d2 Merge pull request #2663 from lubinszARM:pr_sigfp_fork
PiperOrigin-RevId: 311573552
2020-05-14 11:38:57 -07:00
Nicolas Lacasse 47dfba7661 Port memfd_create to vfs2 and finish implementation of file seals.
Closes #2612.

PiperOrigin-RevId: 311548074
2020-05-14 09:35:54 -07:00
Mithun Iyer f1ad2d54ab Fix TCP segment retransmit timeout handling.
As per RFC 1122 and Linux retransmit timeout handling:
- The segment retransmit timeout needs to exponentially increase and
  cap at a predefined value.
- TCP connection needs to timeout after a predefined number of
  segment retransmissions.
- TCP connection should not timeout when the retranmission timeout
  exceeds MaxRTO, predefined upper bound.

Fixes #2673

PiperOrigin-RevId: 311463961
2020-05-13 21:26:54 -07:00
Bhasker Hariharan 8b8774d715 Stub support for TCP_SYNCNT and TCP_WINDOW_CLAMP.
This change adds support for TCP_SYNCNT and TCP_WINDOW_CLAMP options
in GetSockOpt/SetSockOpt. This change does not really change any
behaviour in Netstack and only stores/returns the stored value.

Actual honoring of these options will be added as required.

Fixes #2626, #2625

PiperOrigin-RevId: 311453777
2020-05-13 19:49:09 -07:00
Jamie Liu 64afaf0e9b Fix runsc association of gofers and FDs on VFS2.
Updates #1487

PiperOrigin-RevId: 311443628
2020-05-13 18:18:09 -07:00
Nicolas Lacasse db655f020e Resolve remaining TODOs for tmpfs.
Closes #1197

PiperOrigin-RevId: 311438223
2020-05-13 17:36:37 -07:00
Bhasker Hariharan 8605c97136 Automated rollback of changelist 311285868
PiperOrigin-RevId: 311424257
2020-05-13 16:13:37 -07:00
Jamie Liu d846077628 Enable overlayfs_stale_read by default for runsc.
Linux 4.18 and later make reads and writes coherent between pre-copy-up and
post-copy-up FDs representing the same file on an overlay filesystem. However,
memory mappings remain incoherent:

- Documentation/filesystems/overlayfs.rst, "Non-standard behavior": "If a file
  residing on a lower layer is opened for read-only and then memory mapped with
  MAP_SHARED, then subsequent changes to the file are not reflected in the
  memory mapping."

- fs/overlay/file.c:ovl_mmap() passes through to the underlying FD without any
  management of coherence in the overlay.

- Experimentally on Linux 5.2:

```
$ cat mmap_cat_page.c
#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <unistd.h>

int main(int argc, char **argv) {
  if (argc < 2) {
    errx(1, "syntax: %s [FILE]", argv[0]);
  }
  const int fd = open(argv[1], O_RDONLY);
  if (fd < 0) {
    err(1, "open(%s)", argv[1]);
  }
  const size_t page_size = sysconf(_SC_PAGE_SIZE);
  void* page = mmap(NULL, page_size, PROT_READ, MAP_SHARED, fd, 0);
  if (page == MAP_FAILED) {
    err(1, "mmap");
  }
  for (;;) {
    write(1, page, strnlen(page, page_size));
    if (getc(stdin) == EOF) {
      break;
    }
  }
  return 0;
}

$ gcc -O2 -o mmap_cat_page mmap_cat_page.c
$ mkdir lowerdir upperdir workdir overlaydir
$ echo old > lowerdir/file
$ sudo mount -t overlay -o "lowerdir=lowerdir,upperdir=upperdir,workdir=workdir" none overlaydir
$ ./mmap_cat_page overlaydir/file
old
^Z
[1]+  Stopped                 ./mmap_cat_page overlaydir/file
$ echo new > overlaydir/file
$ cat overlaydir/file
new
$ fg
./mmap_cat_page overlaydir/file

old
```

Therefore, while the VFS1 gofer client's behavior of reopening read FDs is only
necessary pre-4.18, replacing existing memory mappings (in both sentry and
application address spaces) with mappings of the new FD is required regardless
of kernel version, and this latter behavior is common to both VFS1 and VFS2.
Re-document accordingly, and change the runsc flag to enabled by default.

New test:
- Before this CL: https://source.cloud.google.com/results/invocations/5b222d2c-e918-4bae-afc4-407f5bac509b
- After this CL: https://source.cloud.google.com/results/invocations/f28c747e-d89c-4d8c-a461-602b33e71aab

PiperOrigin-RevId: 311361267
2020-05-13 10:53:37 -07:00
Fabricio Voznika 18cb3d24cb Use VFS2 mount names
Updates #1487

PiperOrigin-RevId: 311356385
2020-05-13 10:31:29 -07:00
Bin Lu ba27514083 add arm64 support to goid
Adding a method to get g on Arm64

Signed-off-by: Bin Lu <bin.lu@arm.com>
2020-05-13 04:35:47 -04:00