|
@@ -6,7 +6,6 @@ import (
|
|
"github.com/dotcloud/docker/utils"
|
|
"github.com/dotcloud/docker/utils"
|
|
"io"
|
|
"io"
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
- "os"
|
|
|
|
"os/exec"
|
|
"os/exec"
|
|
"path"
|
|
"path"
|
|
"path/filepath"
|
|
"path/filepath"
|
|
@@ -104,7 +103,7 @@ func (devices *DeviceSet) hasImage(name string) bool {
|
|
dirname := devices.loopbackDir()
|
|
dirname := devices.loopbackDir()
|
|
filename := path.Join(dirname, name)
|
|
filename := path.Join(dirname, name)
|
|
|
|
|
|
- _, err := os.Stat(filename)
|
|
|
|
|
|
+ _, err := osStat(filename)
|
|
return err == nil
|
|
return err == nil
|
|
}
|
|
}
|
|
|
|
|
|
@@ -116,16 +115,16 @@ func (devices *DeviceSet) ensureImage(name string, size int64) (string, error) {
|
|
dirname := devices.loopbackDir()
|
|
dirname := devices.loopbackDir()
|
|
filename := path.Join(dirname, name)
|
|
filename := path.Join(dirname, name)
|
|
|
|
|
|
- if err := os.MkdirAll(dirname, 0700); err != nil && !os.IsExist(err) {
|
|
|
|
|
|
+ if err := osMkdirAll(dirname, 0700); err != nil && !osIsExist(err) {
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
|
|
|
|
- if _, err := os.Stat(filename); err != nil {
|
|
|
|
- if !os.IsNotExist(err) {
|
|
|
|
|
|
+ if _, err := osStat(filename); err != nil {
|
|
|
|
+ if !osIsNotExist(err) {
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
utils.Debugf("Creating loopback file %s for device-manage use", filename)
|
|
utils.Debugf("Creating loopback file %s for device-manage use", filename)
|
|
- file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0600)
|
|
|
|
|
|
+ file, err := osOpenFile(filename, osORdWr|osOCreate, 0600)
|
|
if err != nil {
|
|
if err != nil {
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
@@ -173,7 +172,7 @@ func (devices *DeviceSet) saveMetadata() error {
|
|
if err := tmpFile.Close(); err != nil {
|
|
if err := tmpFile.Close(); err != nil {
|
|
return fmt.Errorf("Error closing metadata file %s: %s", tmpFile.Name(), err)
|
|
return fmt.Errorf("Error closing metadata file %s: %s", tmpFile.Name(), err)
|
|
}
|
|
}
|
|
- if err := os.Rename(tmpFile.Name(), devices.jsonFile()); err != nil {
|
|
|
|
|
|
+ if err := osRename(tmpFile.Name(), devices.jsonFile()); err != nil {
|
|
return fmt.Errorf("Error committing metadata file", err)
|
|
return fmt.Errorf("Error committing metadata file", err)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -251,7 +250,7 @@ func (devices *DeviceSet) loadMetaData() error {
|
|
devices.NewTransactionId = devices.TransactionId
|
|
devices.NewTransactionId = devices.TransactionId
|
|
|
|
|
|
jsonData, err := ioutil.ReadFile(devices.jsonFile())
|
|
jsonData, err := ioutil.ReadFile(devices.jsonFile())
|
|
- if err != nil && !os.IsNotExist(err) {
|
|
|
|
|
|
+ if err != nil && !osIsNotExist(err) {
|
|
utils.Debugf("\n--->Err: %s\n", err)
|
|
utils.Debugf("\n--->Err: %s\n", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -336,10 +335,9 @@ func (devices *DeviceSet) setupBaseImage() error {
|
|
}
|
|
}
|
|
|
|
|
|
func setCloseOnExec(name string) {
|
|
func setCloseOnExec(name string) {
|
|
- fileInfos, _ := ioutil.ReadDir("/proc/self/fd")
|
|
|
|
- if fileInfos != nil {
|
|
|
|
|
|
+ if fileInfos, _ := ioutil.ReadDir("/proc/self/fd"); fileInfos != nil {
|
|
for _, i := range fileInfos {
|
|
for _, i := range fileInfos {
|
|
- link, _ := os.Readlink(filepath.Join("/proc/self/fd", i.Name()))
|
|
|
|
|
|
+ link, _ := osReadlink(filepath.Join("/proc/self/fd", i.Name()))
|
|
if link == name {
|
|
if link == name {
|
|
fd, err := strconv.Atoi(i.Name())
|
|
fd, err := strconv.Atoi(i.Name())
|
|
if err == nil {
|
|
if err == nil {
|
|
@@ -371,7 +369,7 @@ func (devices *DeviceSet) ResizePool(size int64) error {
|
|
datafilename := path.Join(dirname, "data")
|
|
datafilename := path.Join(dirname, "data")
|
|
metadatafilename := path.Join(dirname, "metadata")
|
|
metadatafilename := path.Join(dirname, "metadata")
|
|
|
|
|
|
- datafile, err := os.OpenFile(datafilename, os.O_RDWR, 0)
|
|
|
|
|
|
+ datafile, err := osOpenFile(datafilename, osORdWr, 0)
|
|
if datafile == nil {
|
|
if datafile == nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -386,19 +384,19 @@ func (devices *DeviceSet) ResizePool(size int64) error {
|
|
return fmt.Errorf("Can't shrink file")
|
|
return fmt.Errorf("Can't shrink file")
|
|
}
|
|
}
|
|
|
|
|
|
- dataloopback := FindLoopDeviceFor(datafile)
|
|
|
|
|
|
+ dataloopback := FindLoopDeviceFor(&osFile{File: datafile})
|
|
if dataloopback == nil {
|
|
if dataloopback == nil {
|
|
return fmt.Errorf("Unable to find loopback mount for: %s", datafilename)
|
|
return fmt.Errorf("Unable to find loopback mount for: %s", datafilename)
|
|
}
|
|
}
|
|
defer dataloopback.Close()
|
|
defer dataloopback.Close()
|
|
|
|
|
|
- metadatafile, err := os.OpenFile(metadatafilename, os.O_RDWR, 0)
|
|
|
|
|
|
+ metadatafile, err := osOpenFile(metadatafilename, osORdWr, 0)
|
|
if metadatafile == nil {
|
|
if metadatafile == nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
defer metadatafile.Close()
|
|
defer metadatafile.Close()
|
|
|
|
|
|
- metadataloopback := FindLoopDeviceFor(metadatafile)
|
|
|
|
|
|
+ metadataloopback := FindLoopDeviceFor(&osFile{File: metadatafile})
|
|
if metadataloopback == nil {
|
|
if metadataloopback == nil {
|
|
return fmt.Errorf("Unable to find loopback mount for: %s", metadatafilename)
|
|
return fmt.Errorf("Unable to find loopback mount for: %s", metadatafilename)
|
|
}
|
|
}
|
|
@@ -463,7 +461,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
|
|
|
|
// Set the device prefix from the device id and inode of the docker root dir
|
|
// Set the device prefix from the device id and inode of the docker root dir
|
|
|
|
|
|
- st, err := os.Stat(devices.root)
|
|
|
|
|
|
+ st, err := osStat(devices.root)
|
|
if err != nil {
|
|
if err != nil {
|
|
return fmt.Errorf("Error looking up dir %s: %s", devices.root, err)
|
|
return fmt.Errorf("Error looking up dir %s: %s", devices.root, err)
|
|
}
|
|
}
|