1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge remote-tracking branch 'alexlarsson/dm-readonly-images' into dm

Conflicts:
	devmapper/deviceset_devmapper.go
This commit is contained in:
Solomon Hykes 2013-10-18 03:40:46 +00:00
commit d3505d836a
2 changed files with 12 additions and 6 deletions

View file

@ -650,7 +650,7 @@ func (devices *DeviceSet) Shutdown() error {
return nil return nil
} }
func (devices *DeviceSet) MountDevice(hash, path string) error { func (devices *DeviceSet) MountDevice(hash, path string, readOnly bool) error {
devices.Lock() devices.Lock()
defer devices.Unlock() defer devices.Unlock()
@ -666,9 +666,15 @@ func (devices *DeviceSet) MountDevice(hash, path string) error {
info := devices.Devices[hash] info := devices.Devices[hash]
err := syscall.Mount(info.DevName(), path, "ext4", syscall.MS_MGC_VAL, "discard") var flags uintptr = syscall.MS_MGC_VAL
if readOnly {
flags = flags | syscall.MS_RDONLY
}
err := syscall.Mount(info.DevName(), path, "ext4", flags, "discard")
if err != nil && err == syscall.EINVAL { if err != nil && err == syscall.EINVAL {
err = syscall.Mount(info.DevName(), path, "ext4", syscall.MS_MGC_VAL, "") err = syscall.Mount(info.DevName(), path, "ext4", flags, "")
} }
if err != nil { if err != nil {
utils.Debugf("\n--->Err: %s\n", err) utils.Debugf("\n--->Err: %s\n", err)

View file

@ -385,7 +385,7 @@ func (image *Image) ensureImageDevice(devices *devmapper.DeviceSet) error {
return err return err
} }
if err := devices.MountDevice(image.ID, mountDir); err != nil { if err := devices.MountDevice(image.ID, mountDir, false); err != nil {
utils.Debugf("Error mounting device: %s", err) utils.Debugf("Error mounting device: %s", err)
devices.RemoveDevice(image.ID) devices.RemoveDevice(image.ID)
return err return err
@ -459,7 +459,7 @@ func (image *Image) Mount(runtime *Runtime, root, rw string, id string) error {
} }
utils.Debugf("Mounting container %s at %s for container", id, root) utils.Debugf("Mounting container %s at %s for container", id, root)
if err := devices.MountDevice(id, root); err != nil { if err := devices.MountDevice(id, root, false); err != nil {
return err return err
} }
@ -494,7 +494,7 @@ func (image *Image) Changes(runtime *Runtime, root, rw, id string) ([]Change, er
// We re-use rw for the temporary mount of the base image as its // We re-use rw for the temporary mount of the base image as its
// not used by device-mapper otherwise // not used by device-mapper otherwise
err = devices.MountDevice(image.ID, rw) err = devices.MountDevice(image.ID, rw, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }