Merge pull request #96 from mrunalp/dev_mount_fix

Don't make modifications to /dev when it is bind mounted
This commit is contained in:
Michael Crosby 2015-08-04 17:07:03 -04:00
commit a28f627c39
1 changed files with 16 additions and 10 deletions

View File

@ -27,6 +27,8 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
if err := prepareRoot(config); err != nil { if err := prepareRoot(config); err != nil {
return newSystemError(err) return newSystemError(err)
} }
setupDev := len(config.Devices) == 0
for _, m := range config.Mounts { for _, m := range config.Mounts {
for _, precmd := range m.PremountCmds { for _, precmd := range m.PremountCmds {
if err := mountCmd(precmd); err != nil { if err := mountCmd(precmd); err != nil {
@ -43,6 +45,7 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
} }
} }
} }
if !setupDev {
if err := createDevices(config); err != nil { if err := createDevices(config); err != nil {
return newSystemError(err) return newSystemError(err)
} }
@ -52,6 +55,7 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
if err := setupDevSymlinks(config.Rootfs); err != nil { if err := setupDevSymlinks(config.Rootfs); err != nil {
return newSystemError(err) return newSystemError(err)
} }
}
if err := syscall.Chdir(config.Rootfs); err != nil { if err := syscall.Chdir(config.Rootfs); err != nil {
return newSystemError(err) return newSystemError(err)
} }
@ -63,9 +67,11 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
if err != nil { if err != nil {
return newSystemError(err) return newSystemError(err)
} }
if !setupDev {
if err := reOpenDevNull(config.Rootfs); err != nil { if err := reOpenDevNull(config.Rootfs); err != nil {
return newSystemError(err) return newSystemError(err)
} }
}
if config.Readonlyfs { if config.Readonlyfs {
if err := setReadonly(); err != nil { if err := setReadonly(); err != nil {
return newSystemError(err) return newSystemError(err)