|
@@ -3,10 +3,10 @@ package volume
|
|
import (
|
|
import (
|
|
"fmt"
|
|
"fmt"
|
|
"os"
|
|
"os"
|
|
- "runtime"
|
|
|
|
"strings"
|
|
"strings"
|
|
|
|
|
|
"github.com/docker/docker/pkg/stringid"
|
|
"github.com/docker/docker/pkg/stringid"
|
|
|
|
+ "github.com/docker/docker/pkg/system"
|
|
)
|
|
)
|
|
|
|
|
|
// DefaultDriverName is the driver name used for the driver
|
|
// DefaultDriverName is the driver name used for the driver
|
|
@@ -80,20 +80,20 @@ func (m *MountPoint) Setup() (string, error) {
|
|
}
|
|
}
|
|
return m.Volume.Mount(m.ID)
|
|
return m.Volume.Mount(m.ID)
|
|
}
|
|
}
|
|
- if len(m.Source) > 0 {
|
|
|
|
- if _, err := os.Stat(m.Source); err != nil {
|
|
|
|
- if !os.IsNotExist(err) {
|
|
|
|
- return "", err
|
|
|
|
- }
|
|
|
|
- if runtime.GOOS != "windows" { // Windows does not have deprecation issues here
|
|
|
|
- if err := os.MkdirAll(m.Source, 0755); err != nil {
|
|
|
|
- return "", err
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ if len(m.Source) == 0 {
|
|
|
|
+ return "", fmt.Errorf("Unable to setup mount point, neither source nor volume defined")
|
|
|
|
+ }
|
|
|
|
+ // system.MkdirAll() produces an error if m.Source exists and is a file (not a directory),
|
|
|
|
+ // so first check if the path does not exist
|
|
|
|
+ if _, err := os.Stat(m.Source); err != nil {
|
|
|
|
+ if !os.IsNotExist(err) {
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+ if err := system.MkdirAll(m.Source, 0755); err != nil {
|
|
|
|
+ return "", err
|
|
}
|
|
}
|
|
- return m.Source, nil
|
|
|
|
}
|
|
}
|
|
- return "", fmt.Errorf("Unable to setup mount point, neither source nor volume defined")
|
|
|
|
|
|
+ return m.Source, nil
|
|
}
|
|
}
|
|
|
|
|
|
// Path returns the path of a volume in a mount point.
|
|
// Path returns the path of a volume in a mount point.
|