From 34afa97581de3c49ea68e47debdf8dc22e221971 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Thu, 27 Jan 2022 15:44:05 -0500 Subject: [PATCH] overlay.Get(): default to read-only for layers in additionalStores When mounting a layer, if the layer in question lives in an additional store, default to mounting it read-only. Signed-off-by: Nalin Dahyabhai --- drivers/overlay/overlay.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/overlay/overlay.go b/drivers/overlay/overlay.go index 15ba57467d..b22f9dfb20 100644 --- a/drivers/overlay/overlay.go +++ b/drivers/overlay/overlay.go @@ -1055,17 +1055,22 @@ func (d *Driver) getLower(parent string) (string, error) { } func (d *Driver) dir(id string) string { + p, _ := d.dir2(id) + return p +} + +func (d *Driver) dir2(id string) (string, bool) { newpath := path.Join(d.home, id) if _, err := os.Stat(newpath); err != nil { for _, p := range d.AdditionalImageStores() { l := path.Join(p, d.name, id) _, err = os.Stat(l) if err == nil { - return l + return l, true } } } - return newpath + return newpath, false } func (d *Driver) getLowerDirs(id string) ([]string, error) { @@ -1260,11 +1265,11 @@ func (d *Driver) Get(id string, options graphdriver.MountOpts) (_ string, retErr func (d *Driver) get(id string, disableShifting bool, options graphdriver.MountOpts) (_ string, retErr error) { d.locker.Lock(id) defer d.locker.Unlock(id) - dir := d.dir(id) + dir, inAdditionalStore := d.dir2(id) if _, err := os.Stat(dir); err != nil { return "", err } - readWrite := true + readWrite := !inAdditionalStore if !d.SupportsShifting() || options.DisableShifting { disableShifting = true