diff --git a/pkg/hostman/container/volume_mount/disk/disk.go b/pkg/hostman/container/volume_mount/disk/disk.go index c78ee93d4f..50083f2465 100644 --- a/pkg/hostman/container/volume_mount/disk/disk.go +++ b/pkg/hostman/container/volume_mount/disk/disk.go @@ -33,6 +33,7 @@ import ( "yunion.io/x/onecloud/pkg/hostman/guestman/desc" "yunion.io/x/onecloud/pkg/hostman/storageman" "yunion.io/x/onecloud/pkg/httperrors" + "yunion.io/x/onecloud/pkg/util/mountutils" "yunion.io/x/onecloud/pkg/util/procutils" ) @@ -176,6 +177,11 @@ func (d disk) mountDisk(devPath string, mntPoint string, fs string, resUid int, if err := container_storage.MountWithResId(devPath, mntPoint, fs, resUid, resGid); err != nil { return errors.Wrapf(err, "mount %s to %s", devPath, mntPoint) } + // make mount point shared + if err := mountutils.MakeShared(mntPoint); err != nil { + return errors.Wrapf(err, "mount %s to %s", devPath, mntPoint) + } + return nil } diff --git a/pkg/util/mountutils/mount.go b/pkg/util/mountutils/mount.go index a70365ad89..7faf12bcbf 100644 --- a/pkg/util/mountutils/mount.go +++ b/pkg/util/mountutils/mount.go @@ -264,3 +264,11 @@ func getMountPointDevices(mountPoint string) ([]string, error) { } return devs.List(), nil } + +func MakeShared(mountPoint string) error { + out, err := procutils.NewRemoteCommandAsFarAsPossible("mount", "--make-shared", mountPoint).Output() + if err != nil { + return errors.Wrapf(err, "'mount --make-shared %s' failed: %s", mountPoint, out) + } + return nil +}