Skip to content

Commit b890c20

Browse files
committed
pkg/archive: use mount pkg
It makes sense to use mount package here because - it no longer requires /proc to be mounted - it provides verbose errors so the caller doesn't have to Signed-off-by: Kir Kolyshkin <[email protected]>
1 parent 83ed668 commit b890c20

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

pkg/archive/archive_linux.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"syscall"
1111

1212
"github.com/containerd/continuity/fs"
13+
"github.com/docker/docker/pkg/mount"
1314
"github.com/docker/docker/pkg/system"
1415
"github.com/pkg/errors"
1516
"golang.org/x/sys/unix"
@@ -152,9 +153,8 @@ func mknodChar0Overlay(cleansedOriginalPath string) error {
152153
return errors.Wrapf(err, "failed to create a dummy lower file %s", lowerDummy)
153154
}
154155
mOpts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lower, upper, work)
155-
// docker/pkg/mount.Mount() requires procfs to be mounted. So we use syscall.Mount() directly instead.
156-
if err := syscall.Mount("overlay", merged, "overlay", uintptr(0), mOpts); err != nil {
157-
return errors.Wrapf(err, "failed to mount overlay (%s) on %s", mOpts, merged)
156+
if err := mount.Mount("overlay", merged, "overlay", mOpts); err != nil {
157+
return err
158158
}
159159
mergedDummy := filepath.Join(merged, dummyBase)
160160
if err := os.Remove(mergedDummy); err != nil {
@@ -237,9 +237,8 @@ func createDirWithOverlayOpaque(tmp string) (string, error) {
237237
return "", errors.Wrapf(err, "failed to create a dummy lower directory %s", lowerDummy)
238238
}
239239
mOpts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lower, upper, work)
240-
// docker/pkg/mount.Mount() requires procfs to be mounted. So we use syscall.Mount() directly instead.
241-
if err := syscall.Mount("overlay", merged, "overlay", uintptr(0), mOpts); err != nil {
242-
return "", errors.Wrapf(err, "failed to mount overlay (%s) on %s", mOpts, merged)
240+
if err := mount.Mount("overlay", merged, "overlay", mOpts); err != nil {
241+
return "", err
243242
}
244243
mergedDummy := filepath.Join(merged, dummyBase)
245244
if err := os.Remove(mergedDummy); err != nil {

pkg/archive/archive_linux_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"syscall"
1010
"testing"
1111

12+
"github.com/docker/docker/pkg/mount"
1213
"github.com/docker/docker/pkg/reexec"
1314
"github.com/docker/docker/pkg/system"
1415
rsystem "github.com/opencontainers/runc/libcontainer/system"
@@ -204,11 +205,11 @@ func supportsOverlay(dir string) error {
204205
}
205206
}
206207
mOpts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lower, upper, work)
207-
if err := syscall.Mount("overlay", merged, "overlay", uintptr(0), mOpts); err != nil {
208-
return errors.Wrapf(err, "failed to mount overlay (%s) on %s", mOpts, merged)
208+
if err := mount.Mount("overlay", merged, "overlay", mOpts); err != nil {
209+
return err
209210
}
210-
if err := syscall.Unmount(merged, 0); err != nil {
211-
return errors.Wrapf(err, "failed to unmount %s", merged)
211+
if err := mount.Unmount(merged); err != nil {
212+
return err
212213
}
213214
return nil
214215
}

pkg/mount/mount.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func Mount(device, target, mType, options string) error {
105105
return mount(device, target, mType, uintptr(flag), data)
106106
}
107107

108-
// Mount will mount filesystem according to the specified configuration.
108+
// ForceMount will mount filesystem according to the specified configuration.
109109
// Options must be specified like the mount or fstab unix commands:
110110
// "opt1=val1,opt2=val2". See flags.go for supported option flags.
111111
//

0 commit comments

Comments
 (0)