diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-04-08 01:55:07 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-04-08 01:55:07 +0000 |
commit | e949f65eeffe7b679e5bbf3136a3f8e9807fd670 (patch) | |
tree | 63fb8069611eefb1cb854f9b3d7d121469b90c69 /runsc/boot | |
parent | e86e426bace1598a0c7be525d3b70ff0502284d8 (diff) | |
parent | 56054fc1fb0b92cb985f96467f9059e202d8095c (diff) |
Merge release-20200323.0-89-g56054fc (automated)
Diffstat (limited to 'runsc/boot')
-rw-r--r-- | runsc/boot/fs.go | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/runsc/boot/fs.go b/runsc/boot/fs.go index 0f62842ea..82cc612d2 100644 --- a/runsc/boot/fs.go +++ b/runsc/boot/fs.go @@ -824,7 +824,20 @@ func (c *containerMounter) mountSubmount(ctx context.Context, conf *Config, mns inode, err := filesystem.Mount(ctx, mountDevice(m), mf, strings.Join(opts, ","), nil) if err != nil { - return fmt.Errorf("creating mount with source %q: %v", m.Source, err) + err := fmt.Errorf("creating mount with source %q: %v", m.Source, err) + // Check to see if this is a common error due to a Linux bug. + // This error is generated here in order to cause it to be + // printed to the user using Docker via 'runsc create' etc. rather + // than simply printed to the logs for the 'runsc boot' command. + // + // We check the error message string rather than type because the + // actual error types (syscall.EIO, syscall.EPIPE) are lost by file system + // implementation (e.g. p9). + // TODO(gvisor.dev/issue/1765): Remove message when bug is resolved. + if strings.Contains(err.Error(), syscall.EIO.Error()) || strings.Contains(err.Error(), syscall.EPIPE.Error()) { + return fmt.Errorf("%v: %s", err, specutils.FaqErrorMsg("memlock", "you may be encountering a Linux kernel bug")) + } + return err } // If there are submounts, we need to overlay the mount on top of a ramfs |