diff --git a/volume/volume.go b/volume/volume.go index 238124fa84..d73e2d511f 100644 --- a/volume/volume.go +++ b/volume/volume.go @@ -124,7 +124,20 @@ type MountPoint struct { // Setup sets up a mount point by either mounting the volume if it is // configured, or creating the source directory if supplied. -func (m *MountPoint) Setup(mountLabel string, rootUID, rootGID int) (string, error) { +func (m *MountPoint) Setup(mountLabel string, rootUID, rootGID int) (path string, err error) { + defer func() { + if err == nil { + if label.RelabelNeeded(m.Mode) { + if err = label.Relabel(m.Source, mountLabel, label.IsShared(m.Mode)); err != nil { + path = "" + err = errors.Wrapf(err, "error setting label on mount source '%s'", m.Source) + return + } + } + } + return + }() + if m.Volume != nil { id := m.ID if id == "" { @@ -152,11 +165,6 @@ func (m *MountPoint) Setup(mountLabel string, rootUID, rootGID int) (string, err } } } - if label.RelabelNeeded(m.Mode) { - if err := label.Relabel(m.Source, mountLabel, label.IsShared(m.Mode)); err != nil { - return "", errors.Wrapf(err, "error setting label on mount source '%s'", m.Source) - } - } return m.Source, nil }