From 09b8195a43f95d478307b139c690ac5e2ec47187 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Mon, 11 Mar 2024 13:55:02 +0100 Subject: [PATCH] overlay: create the merged path only if it does not exist follow-up for ccb70a79a69a1a5137ff24720520534bfbcc2316 more information here: https://github.com/containers/storage/issues/1827#issuecomment-1988332922 Signed-off-by: Giuseppe Scrivano --- drivers/overlay/overlay.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/overlay/overlay.go b/drivers/overlay/overlay.go index f007aa9437..5f491a4cfa 100644 --- a/drivers/overlay/overlay.go +++ b/drivers/overlay/overlay.go @@ -1666,9 +1666,12 @@ func (d *Driver) get(id string, disableShifting bool, options graphdriver.MountO } mergedDir := path.Join(dir, "merged") - // Create the driver merged dir - if err := idtools.MkdirAs(mergedDir, 0o700, rootUID, rootGID); err != nil && !os.IsExist(err) { - return "", err + // attempt to create the merged dir only if it doesn't exist. + if _, err := os.Stat(mergedDir); err != nil { + // Create the driver merged dir + if err := idtools.MkdirAs(mergedDir, 0o700, rootUID, rootGID); err != nil && !os.IsExist(err) { + return "", err + } } if count := d.ctr.Increment(mergedDir); count > 1 { return mergedDir, nil