From bb585b9c106e8e81a445b2b864d673bc9f5991cd Mon Sep 17 00:00:00 2001 From: John Howard Date: Wed, 14 Sep 2016 11:35:31 -0700 Subject: [PATCH] Windows: Move to fstab options as per OCI Signed-off-by: John Howard --- daemon/oci_windows.go | 9 ++++++--- libcontainerd/client_windows.go | 8 +++++++- libcontainerd/windowsoci/oci_windows.go | 8 ++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/daemon/oci_windows.go b/daemon/oci_windows.go index c93afcf3a4..6ccc3f7e95 100644 --- a/daemon/oci_windows.go +++ b/daemon/oci_windows.go @@ -46,11 +46,14 @@ func (daemon *Daemon) createSpec(c *container.Container) (*libcontainerd.Spec, e return nil, err } for _, mount := range mounts { - s.Mounts = append(s.Mounts, windowsoci.Mount{ + m := windowsoci.Mount{ Source: mount.Source, Destination: mount.Destination, - Readonly: !mount.Writable, - }) + } + if !mount.Writable { + m.Options = append(m.Options, "ro") + } + s.Mounts = append(s.Mounts, m) } // In s.Process diff --git a/libcontainerd/client_windows.go b/libcontainerd/client_windows.go index 0e0d1a78c8..d37b3a07ff 100644 --- a/libcontainerd/client_windows.go +++ b/libcontainerd/client_windows.go @@ -126,7 +126,13 @@ func (clnt *client) Create(containerID string, checkpoint string, checkpointDir mds[i] = hcsshim.MappedDir{ HostPath: mount.Source, ContainerPath: mount.Destination, - ReadOnly: mount.Readonly} + ReadOnly: false, + } + for _, o := range mount.Options { + if strings.ToLower(o) == "ro" { + mds[i].ReadOnly = true + } + } } configuration.MappedDirectories = mds diff --git a/libcontainerd/windowsoci/oci_windows.go b/libcontainerd/windowsoci/oci_windows.go index f38dcd33c0..49a4b7e220 100644 --- a/libcontainerd/windowsoci/oci_windows.go +++ b/libcontainerd/windowsoci/oci_windows.go @@ -96,11 +96,11 @@ type Mount struct { Destination string `json:"destination"` // Type specifies the mount kind. Type string `json:"type"` - // Source specifies the source path of the mount. In the case of bind mounts - // this would be the file on the host. + // Source specifies the source path of the mount. In the case of bind mounts on + // Linux based systems this would be the file on the host. Source string `json:"source"` - // Readonly specifies if the mount should be read-only - Readonly bool `json:"readonly"` + // Options are fstab style mount options. + Options []string `json:"options,omitempty"` } // HvRuntime contains settings specific to Hyper-V containers