From c3f1bb3287a10ed0d49f48630b92c69ff6ca4ff7 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Fri, 11 Oct 2013 20:37:11 -0700 Subject: [PATCH] Allow loopback and base fs sizes set by env var --- devmapper/deviceset_devmapper.go | 37 +++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/devmapper/deviceset_devmapper.go b/devmapper/deviceset_devmapper.go index 2107a305ae..720b57294b 100644 --- a/devmapper/deviceset_devmapper.go +++ b/devmapper/deviceset_devmapper.go @@ -12,11 +12,11 @@ import ( "path/filepath" "strconv" "strings" - "syscall" "sync" + "syscall" ) -const ( +var ( defaultDataLoopbackSize int64 = 100 * 1024 * 1024 * 1024 defaultMetaDataLoopbackSize int64 = 2 * 1024 * 1024 * 1024 defaultBaseFsSize uint64 = 10 * 1024 * 1024 * 1024 @@ -47,6 +47,30 @@ type DeviceSetDM struct { activeMounts map[string]int } +func init() { + var err error + + rawMetaSize := os.Getenv("DOCKER_LOOPBACK_META_SIZE") + rawDataSize := os.Getenv("DOCKER_LOOPBACK_DATA_SIZE") + rawBaseFSSize := os.Getenv("DOCKER_BASE_FS_SIZE") + + if rawMetaSize != "" { + if defaultMetaDataLoopbackSize, err = strconv.ParseInt(rawMetaSize, 0, 0); err != nil { + panic(err) + } + } + if rawDataSize != "" { + if defaultDataLoopbackSize, err = strconv.ParseInt(rawDataSize, 0, 0); err != nil { + panic(err) + } + } + if rawBaseFSSize != "" { + if defaultBaseFsSize, err = strconv.ParseUint(rawBaseFSSize, 0, 0); err != nil { + panic(err) + } + } +} + func getDevName(name string) string { return "/dev/mapper/" + name } @@ -317,7 +341,7 @@ func setCloseOnExec(name string) { if fileInfos != nil { for _, i := range fileInfos { link, _ := os.Readlink(filepath.Join("/proc/self/fd", i.Name())) - if link == name { + if link == name { fd, err := strconv.Atoi(i.Name()) if err == nil { syscall.CloseOnExec(fd) @@ -327,7 +351,7 @@ func setCloseOnExec(name string) { } } -func (devices *DeviceSetDM) log(level int, file string, line int, dmError int, message string) { +func (devices *DeviceSetDM) log(level int, file string, line int, dmError int, message string) { if level >= 7 { return // Ignore _LOG_DEBUG } @@ -335,7 +359,6 @@ func (devices *DeviceSetDM) log(level int, file string, line int, dmError int, m utils.Debugf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message) } - func (devices *DeviceSetDM) initDevmapper() error { logInit(devices) @@ -495,7 +518,6 @@ func (devices *DeviceSetDM) RemoveDevice(hash string) error { return err } - return devices.removeDevice(hash) } @@ -530,10 +552,9 @@ func (devices *DeviceSetDM) DeactivateDevice(hash string) error { } utils.Debugf("DeactivateDevice %s", hash) - return devices.deactivateDevice(hash); + return devices.deactivateDevice(hash) } - func (devices *DeviceSetDM) Shutdown() error { devices.Lock() defer devices.Unlock()