summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fsimpl
AgeCommit message (Collapse)Author
2020-08-26Merge release-20200818.0-56-gdf3c105f4 (automated)gVisor bot
2020-08-25Use new reference count utility throughout gvisor.Dean Deng
This uses the refs_vfs2 template in vfs2 as well as objects common to vfs1 and vfs2. Note that vfs1-only refcounts are not replaced, since vfs1 will be deleted soon anyway. The following structs now use the new tool, with leak check enabled: devpts:rootInode fuse:inode kernfs:Dentry kernfs:dir kernfs:readonlyDir kernfs:StaticDirectory proc:fdDirInode proc:fdInfoDirInode proc:subtasksInode proc:taskInode proc:tasksInode vfs:FileDescription vfs:MountNamespace vfs:Filesystem sys:dir kernel:FSContext kernel:ProcessGroup kernel:Session shm:Shm mm:aioMappable mm:SpecialMappable transport:queue And the following use the template, but because they currently are not leak checked, a TODO is left instead of enabling leak check in this patch: kernel:FDTable tun:tunEndpoint Updates #1486. PiperOrigin-RevId: 328460377
2020-08-25Merge release-20200818.0-55-g247dcd62d (automated)gVisor bot
2020-08-25Return non-zero size for tmpfs statfs(2).Jamie Liu
This does not implement accepting or enforcing any size limit, which will be more complex and has performance implications; it just returns a fixed non-zero size. Updates #1936 PiperOrigin-RevId: 328428588
2020-08-25Merge release-20200818.0-54-gcb573c8e0 (automated)gVisor bot
2020-08-25Expose basic coverage information to userspace through kcov interface.Dean Deng
In Linux, a kernel configuration is set that compiles the kernel with a custom function that is called at the beginning of every basic block, which updates the memory-mapped coverage information. The Go coverage tool does not allow us to inject arbitrary instructions into basic blocks, but it does provide data that we can convert to a kcov-like format and transfer them to userspace through a memory mapping. Note that this is not a strict implementation of kcov, which is especially tricky to do because we do not have the same coverage tools available in Go that that are available for the actual Linux kernel. In Linux, a kernel configuration is set that compiles the kernel with a custom function that is called at the beginning of every basic block to write program counters to the kcov memory mapping. In Go, however, coverage tools only give us a count of basic blocks as they are executed. Every time we return to userspace, we collect the coverage information and write out PCs for each block that was executed, providing userspace with the illusion that the kcov data is always up to date. For convenience, we also generate a unique synthetic PC for each block instead of using actual PCs. Finally, we do not provide thread-specific coverage data (each kcov instance only contains PCs executed by the thread owning it); instead, we will supply data for any file specified by -- instrumentation_filter. Also, fix issue in nogo that was causing pkg/coverage:coverage_nogo compilation to fail. PiperOrigin-RevId: 328426526
2020-08-25Merge release-20200818.0-52-g430487c9e (automated)gVisor bot
2020-08-25[go-marshal] Enable auto-marshalling for host tty.Ayush Ranjan
PiperOrigin-RevId: 328415633
2020-08-25Merge release-20200818.0-51-gbee07a2d6 (automated)gVisor bot
2020-08-25Merge release-20200818.0-50-gc28bbee99 (automated)gVisor bot
2020-08-25overlay: clonePrivateMount must pass a Dentry reference to MakeVirtualDentry.Nicolas Lacasse
PiperOrigin-RevId: 328410065
2020-08-25Merge release-20200818.0-49-g1f0d23c7a (automated)gVisor bot
2020-08-25Merge release-20200818.0-47-g3cba0a41d (automated)gVisor bot
2020-08-25Merge release-20200818.0-46-g3b2e50f53 (automated)gVisor bot
2020-08-25Merge release-20200818.0-45-gb0c53f847 (automated)gVisor bot
2020-08-25Merge release-20200818.0-44-gb83758cd8 (automated)gVisor bot
2020-08-25Merge release-20200818.0-40-g46485f9d4 (automated)gVisor bot
2020-08-25Merge release-20200818.0-38-gc61f6fcf6 (automated)gVisor bot
2020-08-25Fix deadlock in gofer direct IO.Dean Deng
Fixes several java runtime tests: java/nio/channels/FileChannel/directio/ReadDirect.java java/nio/channels/FileChannel/directio/PreadDirect.java Updates #3576. PiperOrigin-RevId: 328281849
2020-08-25Merge release-20200818.0-37-gf1821fdb6 (automated)gVisor bot
2020-08-25Merge release-20200818.0-36-g4ad858a58 (automated)gVisor bot
2020-08-24Flush in fsimpl/gofer.regularFileFD.OnClose() if there are no dirty pages.Jamie Liu
This is closer to indistinguishable from VFS1 behavior. PiperOrigin-RevId: 328256068
2020-08-24Merge release-20200818.0-34-g2b0b5e252 (automated)gVisor bot
2020-08-24Merge release-20200818.0-32-g339d266be (automated)gVisor bot
2020-08-24Merge release-20200810.0-94-gbae25d2a0 (automated)gVisor bot
2020-08-24Update inotify documentation for gofer filesystem.Dean Deng
We now allow hard links to be created within gofer fs (see github.com/google/gvisor/commit/f20e63e31b56784c596897e86f03441f9d05f567). Update the inotify documentation accordingly. PiperOrigin-RevId: 328177485
2020-08-22Implement GetFilesystem for verity fsgVisor bot
verity GetFilesystem is implemented by mounting the underlying file system, save the mount, and store both the underlying root dentry and root Merkle file dentry in verity's root dentry. PiperOrigin-RevId: 327959334
2020-08-22Merge release-20200810.0-90-g17bc5c1b0 (automated)gVisor bot
2020-08-21Merge release-20200810.0-87-gbd3383a7e (automated)gVisor bot
2020-08-21Merge release-20200810.0-85-g0ea03f501 (automated)gVisor bot
2020-08-21Clarify seek behaviour for kernfs.GenericDirectoryFD.Rahat Mahmood
- Remove comment about GenericDirectoryFD not being compatible with dynamic directories. It is currently being used to implement dynamic directories. - Try to handle SEEK_END better than setting the offset to infinity. SEEK_END is poorly defined for dynamic directories anyways, so at least try make it work correctly for the static entries. Updates #1193. PiperOrigin-RevId: 327890128
2020-08-21Merge release-20200810.0-84-g5f33fdf37 (automated)gVisor bot
2020-08-21Pass overlay credentials via context in copy up.Nicolas Lacasse
Some VFS operations (those which operate on FDs) get their credentials via the context instead of via an explicit creds param. For these cases, we must pass the overlay credentials on the context. PiperOrigin-RevId: 327881259
2020-08-21Merge release-20200810.0-83-g5ec3d4ed3 (automated)gVisor bot
2020-08-21Make mounts ReadWrite first, then later change to ReadOnly.Nicolas Lacasse
This lets us create "synthetic" mountpoint directories in ReadOnly mounts during VFS setup. Also add context.WithMountNamespace, as some filesystems (like overlay) require a MountNamespace on ctx to handle vfs.Filesystem Operations. PiperOrigin-RevId: 327874971
2020-08-21Merge release-20200810.0-82-gc9e752b64 (automated)gVisor bot
2020-08-21Merge release-20200810.0-81-g2c422b7f2 (automated)gVisor bot
2020-08-21Fix parent directory creation in CreateDeviceFile.Nicolas Lacasse
It was not properly creating recursive directories. Added tests for this case. Updates #1196 PiperOrigin-RevId: 327850811
2020-08-21Merge release-20200810.0-80-gc24db90be (automated)gVisor bot
2020-08-21Merge release-20200810.0-79-g0324b94a7 (automated)gVisor bot
2020-08-20Merge release-20200810.0-77-ge8a25a283 (automated)gVisor bot
2020-08-20Merge release-20200810.0-76-gdf4822709 (automated)gVisor bot
2020-08-20Merge release-20200810.0-75-g3163aff86 (automated)gVisor bot
2020-08-20Add reference count checking to the fsimpl/host package.Dean Deng
Includes a minor refactor for inode construction. Updates #1486. PiperOrigin-RevId: 327694933
2020-08-20Merge release-20200810.0-74-g129018ab3 (automated)gVisor bot
2020-08-20Consistent precondition formattingMichael Pratt
Our "Preconditions:" blocks are very useful to determine the input invariants, but they are bit inconsistent throughout the codebase, which makes them harder to read (particularly cases with 5+ conditions in a single paragraph). I've reformatted all of the cases to fit in simple rules: 1. Cases with a single condition are placed on a single line. 2. Cases with multiple conditions are placed in a bulleted list. This format has been added to the style guide. I've also mentioned "Postconditions:", though those are much less frequently used, and all uses already match this style. PiperOrigin-RevId: 327687465
2020-08-20Merge release-20200810.0-72-g7ca62b9da (automated)gVisor bot
2020-08-20Merge release-20200810.0-71-g710adf23c (automated)gVisor bot
2020-08-20Merge release-20200810.0-70-gd2e32395c (automated)gVisor bot
2020-08-20Merge release-20200810.0-69-gbe76c7ce6 (automated)gVisor bot