|
@@ -18,7 +18,7 @@ import (
|
|
"syscall"
|
|
"syscall"
|
|
"time"
|
|
"time"
|
|
|
|
|
|
- log "github.com/Sirupsen/logrus"
|
|
|
|
|
|
+ "github.com/Sirupsen/logrus"
|
|
"github.com/docker/docker/daemon/graphdriver"
|
|
"github.com/docker/docker/daemon/graphdriver"
|
|
"github.com/docker/docker/pkg/devicemapper"
|
|
"github.com/docker/docker/pkg/devicemapper"
|
|
"github.com/docker/docker/pkg/parsers"
|
|
"github.com/docker/docker/pkg/parsers"
|
|
@@ -205,7 +205,7 @@ func (devices *DeviceSet) ensureImage(name string, size int64) (string, error) {
|
|
if !os.IsNotExist(err) {
|
|
if !os.IsNotExist(err) {
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
- log.Debugf("Creating loopback file %s for device-manage use", filename)
|
|
|
|
|
|
+ logrus.Debugf("Creating loopback file %s for device-manage use", filename)
|
|
file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0600)
|
|
file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0600)
|
|
if err != nil {
|
|
if err != nil {
|
|
return "", err
|
|
return "", err
|
|
@@ -320,21 +320,21 @@ func (devices *DeviceSet) deviceFileWalkFunction(path string, finfo os.FileInfo)
|
|
|
|
|
|
// Skip some of the meta files which are not device files.
|
|
// Skip some of the meta files which are not device files.
|
|
if strings.HasSuffix(finfo.Name(), ".migrated") {
|
|
if strings.HasSuffix(finfo.Name(), ".migrated") {
|
|
- log.Debugf("Skipping file %s", path)
|
|
|
|
|
|
+ logrus.Debugf("Skipping file %s", path)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
if strings.HasPrefix(finfo.Name(), ".") {
|
|
if strings.HasPrefix(finfo.Name(), ".") {
|
|
- log.Debugf("Skipping file %s", path)
|
|
|
|
|
|
+ logrus.Debugf("Skipping file %s", path)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
if finfo.Name() == deviceSetMetaFile {
|
|
if finfo.Name() == deviceSetMetaFile {
|
|
- log.Debugf("Skipping file %s", path)
|
|
|
|
|
|
+ logrus.Debugf("Skipping file %s", path)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
- log.Debugf("Loading data for file %s", path)
|
|
|
|
|
|
+ logrus.Debugf("Loading data for file %s", path)
|
|
|
|
|
|
hash := finfo.Name()
|
|
hash := finfo.Name()
|
|
if hash == "base" {
|
|
if hash == "base" {
|
|
@@ -347,7 +347,7 @@ func (devices *DeviceSet) deviceFileWalkFunction(path string, finfo os.FileInfo)
|
|
}
|
|
}
|
|
|
|
|
|
if dinfo.DeviceId > MaxDeviceId {
|
|
if dinfo.DeviceId > MaxDeviceId {
|
|
- log.Errorf("Ignoring Invalid DeviceId=%d", dinfo.DeviceId)
|
|
|
|
|
|
+ logrus.Errorf("Ignoring Invalid DeviceId=%d", dinfo.DeviceId)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
@@ -355,17 +355,17 @@ func (devices *DeviceSet) deviceFileWalkFunction(path string, finfo os.FileInfo)
|
|
devices.markDeviceIdUsed(dinfo.DeviceId)
|
|
devices.markDeviceIdUsed(dinfo.DeviceId)
|
|
devices.Unlock()
|
|
devices.Unlock()
|
|
|
|
|
|
- log.Debugf("Added deviceId=%d to DeviceIdMap", dinfo.DeviceId)
|
|
|
|
|
|
+ logrus.Debugf("Added deviceId=%d to DeviceIdMap", dinfo.DeviceId)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) constructDeviceIdMap() error {
|
|
func (devices *DeviceSet) constructDeviceIdMap() error {
|
|
- log.Debugf("[deviceset] constructDeviceIdMap()")
|
|
|
|
- defer log.Debugf("[deviceset] constructDeviceIdMap() END")
|
|
|
|
|
|
+ logrus.Debugf("[deviceset] constructDeviceIdMap()")
|
|
|
|
+ defer logrus.Debugf("[deviceset] constructDeviceIdMap() END")
|
|
|
|
|
|
var scan = func(path string, info os.FileInfo, err error) error {
|
|
var scan = func(path string, info os.FileInfo, err error) error {
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Debugf("Can't walk the file %s", path)
|
|
|
|
|
|
+ logrus.Debugf("Can't walk the file %s", path)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
@@ -381,7 +381,7 @@ func (devices *DeviceSet) constructDeviceIdMap() error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) unregisterDevice(id int, hash string) error {
|
|
func (devices *DeviceSet) unregisterDevice(id int, hash string) error {
|
|
- log.Debugf("unregisterDevice(%v, %v)", id, hash)
|
|
|
|
|
|
+ logrus.Debugf("unregisterDevice(%v, %v)", id, hash)
|
|
info := &DevInfo{
|
|
info := &DevInfo{
|
|
Hash: hash,
|
|
Hash: hash,
|
|
DeviceId: id,
|
|
DeviceId: id,
|
|
@@ -392,7 +392,7 @@ func (devices *DeviceSet) unregisterDevice(id int, hash string) error {
|
|
devices.devicesLock.Unlock()
|
|
devices.devicesLock.Unlock()
|
|
|
|
|
|
if err := devices.removeMetadata(info); err != nil {
|
|
if err := devices.removeMetadata(info); err != nil {
|
|
- log.Debugf("Error removing metadata: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error removing metadata: %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -400,7 +400,7 @@ func (devices *DeviceSet) unregisterDevice(id int, hash string) error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) registerDevice(id int, hash string, size uint64, transactionId uint64) (*DevInfo, error) {
|
|
func (devices *DeviceSet) registerDevice(id int, hash string, size uint64, transactionId uint64) (*DevInfo, error) {
|
|
- log.Debugf("registerDevice(%v, %v)", id, hash)
|
|
|
|
|
|
+ logrus.Debugf("registerDevice(%v, %v)", id, hash)
|
|
info := &DevInfo{
|
|
info := &DevInfo{
|
|
Hash: hash,
|
|
Hash: hash,
|
|
DeviceId: id,
|
|
DeviceId: id,
|
|
@@ -426,7 +426,7 @@ func (devices *DeviceSet) registerDevice(id int, hash string, size uint64, trans
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) activateDeviceIfNeeded(info *DevInfo) error {
|
|
func (devices *DeviceSet) activateDeviceIfNeeded(info *DevInfo) error {
|
|
- log.Debugf("activateDeviceIfNeeded(%v)", info.Hash)
|
|
|
|
|
|
+ logrus.Debugf("activateDeviceIfNeeded(%v)", info.Hash)
|
|
|
|
|
|
if devinfo, _ := devicemapper.GetInfo(info.Name()); devinfo != nil && devinfo.Exists != 0 {
|
|
if devinfo, _ := devicemapper.GetInfo(info.Name()); devinfo != nil && devinfo.Exists != 0 {
|
|
return nil
|
|
return nil
|
|
@@ -542,7 +542,7 @@ func (devices *DeviceSet) createRegisterDevice(hash string) (*DevInfo, error) {
|
|
}
|
|
}
|
|
|
|
|
|
if err := devices.openTransaction(hash, deviceId); err != nil {
|
|
if err := devices.openTransaction(hash, deviceId); err != nil {
|
|
- log.Debugf("Error opening transaction hash = %s deviceId = %d", hash, deviceId)
|
|
|
|
|
|
+ logrus.Debugf("Error opening transaction hash = %s deviceId = %d", hash, deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
@@ -554,7 +554,7 @@ func (devices *DeviceSet) createRegisterDevice(hash string) (*DevInfo, error) {
|
|
// happen. Now we have a mechianism to find
|
|
// happen. Now we have a mechianism to find
|
|
// a free device Id. So something is not right.
|
|
// a free device Id. So something is not right.
|
|
// Give a warning and continue.
|
|
// Give a warning and continue.
|
|
- log.Errorf("Device Id %d exists in pool but it is supposed to be unused", deviceId)
|
|
|
|
|
|
+ logrus.Errorf("Device Id %d exists in pool but it is supposed to be unused", deviceId)
|
|
deviceId, err = devices.getNextFreeDeviceId()
|
|
deviceId, err = devices.getNextFreeDeviceId()
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
@@ -563,14 +563,14 @@ func (devices *DeviceSet) createRegisterDevice(hash string) (*DevInfo, error) {
|
|
devices.refreshTransaction(deviceId)
|
|
devices.refreshTransaction(deviceId)
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
- log.Debugf("Error creating device: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error creating device: %s", err)
|
|
devices.markDeviceIdFree(deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
break
|
|
break
|
|
}
|
|
}
|
|
|
|
|
|
- log.Debugf("Registering device (id %v) with FS size %v", deviceId, devices.baseFsSize)
|
|
|
|
|
|
+ logrus.Debugf("Registering device (id %v) with FS size %v", deviceId, devices.baseFsSize)
|
|
info, err := devices.registerDevice(deviceId, hash, devices.baseFsSize, devices.OpenTransactionId)
|
|
info, err := devices.registerDevice(deviceId, hash, devices.baseFsSize, devices.OpenTransactionId)
|
|
if err != nil {
|
|
if err != nil {
|
|
_ = devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
|
|
_ = devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
|
|
@@ -594,7 +594,7 @@ func (devices *DeviceSet) createRegisterSnapDevice(hash string, baseInfo *DevInf
|
|
}
|
|
}
|
|
|
|
|
|
if err := devices.openTransaction(hash, deviceId); err != nil {
|
|
if err := devices.openTransaction(hash, deviceId); err != nil {
|
|
- log.Debugf("Error opening transaction hash = %s deviceId = %d", hash, deviceId)
|
|
|
|
|
|
+ logrus.Debugf("Error opening transaction hash = %s deviceId = %d", hash, deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -606,7 +606,7 @@ func (devices *DeviceSet) createRegisterSnapDevice(hash string, baseInfo *DevInf
|
|
// happen. Now we have a mechianism to find
|
|
// happen. Now we have a mechianism to find
|
|
// a free device Id. So something is not right.
|
|
// a free device Id. So something is not right.
|
|
// Give a warning and continue.
|
|
// Give a warning and continue.
|
|
- log.Errorf("Device Id %d exists in pool but it is supposed to be unused", deviceId)
|
|
|
|
|
|
+ logrus.Errorf("Device Id %d exists in pool but it is supposed to be unused", deviceId)
|
|
deviceId, err = devices.getNextFreeDeviceId()
|
|
deviceId, err = devices.getNextFreeDeviceId()
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
@@ -615,7 +615,7 @@ func (devices *DeviceSet) createRegisterSnapDevice(hash string, baseInfo *DevInf
|
|
devices.refreshTransaction(deviceId)
|
|
devices.refreshTransaction(deviceId)
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
- log.Debugf("Error creating snap device: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error creating snap device: %s", err)
|
|
devices.markDeviceIdFree(deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -625,7 +625,7 @@ func (devices *DeviceSet) createRegisterSnapDevice(hash string, baseInfo *DevInf
|
|
if _, err := devices.registerDevice(deviceId, hash, baseInfo.Size, devices.OpenTransactionId); err != nil {
|
|
if _, err := devices.registerDevice(deviceId, hash, baseInfo.Size, devices.OpenTransactionId); err != nil {
|
|
devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
|
|
devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
devices.markDeviceIdFree(deviceId)
|
|
- log.Debugf("Error registering device: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error registering device: %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -660,7 +660,7 @@ func (devices *DeviceSet) setupBaseImage() error {
|
|
}
|
|
}
|
|
|
|
|
|
if oldInfo != nil && !oldInfo.Initialized {
|
|
if oldInfo != nil && !oldInfo.Initialized {
|
|
- log.Debugf("Removing uninitialized base image")
|
|
|
|
|
|
+ logrus.Debugf("Removing uninitialized base image")
|
|
if err := devices.DeleteDevice(""); err != nil {
|
|
if err := devices.DeleteDevice(""); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -681,7 +681,7 @@ func (devices *DeviceSet) setupBaseImage() error {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- log.Debugf("Initializing base device-mapper thin volume")
|
|
|
|
|
|
+ logrus.Debugf("Initializing base device-mapper thin volume")
|
|
|
|
|
|
// Create initial device
|
|
// Create initial device
|
|
info, err := devices.createRegisterDevice("")
|
|
info, err := devices.createRegisterDevice("")
|
|
@@ -689,7 +689,7 @@ func (devices *DeviceSet) setupBaseImage() error {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
- log.Debugf("Creating filesystem on base device-mapper thin volume")
|
|
|
|
|
|
+ logrus.Debugf("Creating filesystem on base device-mapper thin volume")
|
|
|
|
|
|
if err = devices.activateDeviceIfNeeded(info); err != nil {
|
|
if err = devices.activateDeviceIfNeeded(info); err != nil {
|
|
return err
|
|
return err
|
|
@@ -730,7 +730,7 @@ func (devices *DeviceSet) DMLog(level int, file string, line int, dmError int, m
|
|
}
|
|
}
|
|
|
|
|
|
// FIXME(vbatts) push this back into ./pkg/devicemapper/
|
|
// FIXME(vbatts) push this back into ./pkg/devicemapper/
|
|
- log.Debugf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message)
|
|
|
|
|
|
+ logrus.Debugf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message)
|
|
}
|
|
}
|
|
|
|
|
|
func major(device uint64) uint64 {
|
|
func major(device uint64) uint64 {
|
|
@@ -846,24 +846,24 @@ func (devices *DeviceSet) removeTransactionMetaData() error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) rollbackTransaction() error {
|
|
func (devices *DeviceSet) rollbackTransaction() error {
|
|
- log.Debugf("Rolling back open transaction: TransactionId=%d hash=%s device_id=%d", devices.OpenTransactionId, devices.DeviceIdHash, devices.DeviceId)
|
|
|
|
|
|
+ logrus.Debugf("Rolling back open transaction: TransactionId=%d hash=%s device_id=%d", devices.OpenTransactionId, devices.DeviceIdHash, devices.DeviceId)
|
|
|
|
|
|
// A device id might have already been deleted before transaction
|
|
// A device id might have already been deleted before transaction
|
|
// closed. In that case this call will fail. Just leave a message
|
|
// closed. In that case this call will fail. Just leave a message
|
|
// in case of failure.
|
|
// in case of failure.
|
|
if err := devicemapper.DeleteDevice(devices.getPoolDevName(), devices.DeviceId); err != nil {
|
|
if err := devicemapper.DeleteDevice(devices.getPoolDevName(), devices.DeviceId); err != nil {
|
|
- log.Errorf("Unable to delete device: %s", err)
|
|
|
|
|
|
+ logrus.Errorf("Unable to delete device: %s", err)
|
|
}
|
|
}
|
|
|
|
|
|
dinfo := &DevInfo{Hash: devices.DeviceIdHash}
|
|
dinfo := &DevInfo{Hash: devices.DeviceIdHash}
|
|
if err := devices.removeMetadata(dinfo); err != nil {
|
|
if err := devices.removeMetadata(dinfo); err != nil {
|
|
- log.Errorf("Unable to remove metadata: %s", err)
|
|
|
|
|
|
+ logrus.Errorf("Unable to remove metadata: %s", err)
|
|
} else {
|
|
} else {
|
|
devices.markDeviceIdFree(devices.DeviceId)
|
|
devices.markDeviceIdFree(devices.DeviceId)
|
|
}
|
|
}
|
|
|
|
|
|
if err := devices.removeTransactionMetaData(); err != nil {
|
|
if err := devices.removeTransactionMetaData(); err != nil {
|
|
- log.Errorf("Unable to remove transaction meta file %s: %s", devices.transactionMetaFile(), err)
|
|
|
|
|
|
+ logrus.Errorf("Unable to remove transaction meta file %s: %s", devices.transactionMetaFile(), err)
|
|
}
|
|
}
|
|
|
|
|
|
return nil
|
|
return nil
|
|
@@ -883,7 +883,7 @@ func (devices *DeviceSet) processPendingTransaction() error {
|
|
// If open transaction Id is less than pool transaction Id, something
|
|
// If open transaction Id is less than pool transaction Id, something
|
|
// is wrong. Bail out.
|
|
// is wrong. Bail out.
|
|
if devices.OpenTransactionId < devices.TransactionId {
|
|
if devices.OpenTransactionId < devices.TransactionId {
|
|
- log.Errorf("Open Transaction id %d is less than pool transaction id %d", devices.OpenTransactionId, devices.TransactionId)
|
|
|
|
|
|
+ logrus.Errorf("Open Transaction id %d is less than pool transaction id %d", devices.OpenTransactionId, devices.TransactionId)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
@@ -940,7 +940,7 @@ func (devices *DeviceSet) refreshTransaction(DeviceId int) error {
|
|
|
|
|
|
func (devices *DeviceSet) closeTransaction() error {
|
|
func (devices *DeviceSet) closeTransaction() error {
|
|
if err := devices.updatePoolTransactionId(); err != nil {
|
|
if err := devices.updatePoolTransactionId(); err != nil {
|
|
- log.Debugf("Failed to close Transaction")
|
|
|
|
|
|
+ logrus.Debugf("Failed to close Transaction")
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
return nil
|
|
@@ -963,9 +963,9 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
|
|
|
|
// https://github.com/docker/docker/issues/4036
|
|
// https://github.com/docker/docker/issues/4036
|
|
if supported := devicemapper.UdevSetSyncSupport(true); !supported {
|
|
if supported := devicemapper.UdevSetSyncSupport(true); !supported {
|
|
- log.Warnf("Udev sync is not supported. This will lead to unexpected behavior, data loss and errors")
|
|
|
|
|
|
+ logrus.Warnf("Udev sync is not supported. This will lead to unexpected behavior, data loss and errors")
|
|
}
|
|
}
|
|
- log.Debugf("devicemapper: udev sync support: %v", devicemapper.UdevSyncSupported())
|
|
|
|
|
|
+ logrus.Debugf("devicemapper: udev sync support: %v", devicemapper.UdevSyncSupported())
|
|
|
|
|
|
if err := os.MkdirAll(devices.metadataDir(), 0700); err != nil && !os.IsExist(err) {
|
|
if err := os.MkdirAll(devices.metadataDir(), 0700); err != nil && !os.IsExist(err) {
|
|
return err
|
|
return err
|
|
@@ -985,13 +985,13 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
// - The target of this device is at major <maj> and minor <min>
|
|
// - The target of this device is at major <maj> and minor <min>
|
|
// - If <inode> is defined, use that file inside the device as a loopback image. Otherwise use the device itself.
|
|
// - If <inode> is defined, use that file inside the device as a loopback image. Otherwise use the device itself.
|
|
devices.devicePrefix = fmt.Sprintf("docker-%d:%d-%d", major(sysSt.Dev), minor(sysSt.Dev), sysSt.Ino)
|
|
devices.devicePrefix = fmt.Sprintf("docker-%d:%d-%d", major(sysSt.Dev), minor(sysSt.Dev), sysSt.Ino)
|
|
- log.Debugf("Generated prefix: %s", devices.devicePrefix)
|
|
|
|
|
|
+ logrus.Debugf("Generated prefix: %s", devices.devicePrefix)
|
|
|
|
|
|
// Check for the existence of the thin-pool device
|
|
// Check for the existence of the thin-pool device
|
|
- log.Debugf("Checking for existence of the pool '%s'", devices.getPoolName())
|
|
|
|
|
|
+ logrus.Debugf("Checking for existence of the pool '%s'", devices.getPoolName())
|
|
info, err := devicemapper.GetInfo(devices.getPoolName())
|
|
info, err := devicemapper.GetInfo(devices.getPoolName())
|
|
if info == nil {
|
|
if info == nil {
|
|
- log.Debugf("Error device devicemapper.GetInfo: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error device devicemapper.GetInfo: %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1007,7 +1007,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
|
|
|
|
// If the pool doesn't exist, create it
|
|
// If the pool doesn't exist, create it
|
|
if info.Exists == 0 && devices.thinPoolDevice == "" {
|
|
if info.Exists == 0 && devices.thinPoolDevice == "" {
|
|
- log.Debugf("Pool doesn't exist. Creating it.")
|
|
|
|
|
|
+ logrus.Debugf("Pool doesn't exist. Creating it.")
|
|
|
|
|
|
var (
|
|
var (
|
|
dataFile *os.File
|
|
dataFile *os.File
|
|
@@ -1029,7 +1029,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
|
|
|
|
data, err := devices.ensureImage("data", devices.dataLoopbackSize)
|
|
data, err := devices.ensureImage("data", devices.dataLoopbackSize)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Debugf("Error device ensureImage (data): %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error device ensureImage (data): %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1062,7 +1062,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
|
|
|
|
metadata, err := devices.ensureImage("metadata", devices.metaDataLoopbackSize)
|
|
metadata, err := devices.ensureImage("metadata", devices.metaDataLoopbackSize)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Debugf("Error device ensureImage (metadata): %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error device ensureImage (metadata): %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1102,7 +1102,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
// Setup the base image
|
|
// Setup the base image
|
|
if doInit {
|
|
if doInit {
|
|
if err := devices.setupBaseImage(); err != nil {
|
|
if err := devices.setupBaseImage(); err != nil {
|
|
- log.Debugf("Error device setupBaseImage: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error device setupBaseImage: %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1111,8 +1111,8 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
|
|
func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
|
|
- log.Debugf("[deviceset] AddDevice(hash=%s basehash=%s)", hash, baseHash)
|
|
|
|
- defer log.Debugf("[deviceset] AddDevice(hash=%s basehash=%s) END", hash, baseHash)
|
|
|
|
|
|
+ logrus.Debugf("[deviceset] AddDevice(hash=%s basehash=%s)", hash, baseHash)
|
|
|
|
+ defer logrus.Debugf("[deviceset] AddDevice(hash=%s basehash=%s) END", hash, baseHash)
|
|
|
|
|
|
baseInfo, err := devices.lookupDevice(baseHash)
|
|
baseInfo, err := devices.lookupDevice(baseHash)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -1143,7 +1143,7 @@ func (devices *DeviceSet) deleteDevice(info *DevInfo) error {
|
|
// manually
|
|
// manually
|
|
if err := devices.activateDeviceIfNeeded(info); err == nil {
|
|
if err := devices.activateDeviceIfNeeded(info); err == nil {
|
|
if err := devicemapper.BlockDeviceDiscard(info.DevName()); err != nil {
|
|
if err := devicemapper.BlockDeviceDiscard(info.DevName()); err != nil {
|
|
- log.Debugf("Error discarding block on device: %s (ignoring)", err)
|
|
|
|
|
|
+ logrus.Debugf("Error discarding block on device: %s (ignoring)", err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1151,18 +1151,18 @@ func (devices *DeviceSet) deleteDevice(info *DevInfo) error {
|
|
devinfo, _ := devicemapper.GetInfo(info.Name())
|
|
devinfo, _ := devicemapper.GetInfo(info.Name())
|
|
if devinfo != nil && devinfo.Exists != 0 {
|
|
if devinfo != nil && devinfo.Exists != 0 {
|
|
if err := devices.removeDeviceAndWait(info.Name()); err != nil {
|
|
if err := devices.removeDeviceAndWait(info.Name()); err != nil {
|
|
- log.Debugf("Error removing device: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error removing device: %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if err := devices.openTransaction(info.Hash, info.DeviceId); err != nil {
|
|
if err := devices.openTransaction(info.Hash, info.DeviceId); err != nil {
|
|
- log.Debugf("Error opening transaction hash = %s deviceId = %d", "", info.DeviceId)
|
|
|
|
|
|
+ logrus.Debugf("Error opening transaction hash = %s deviceId = %d", "", info.DeviceId)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
if err := devicemapper.DeleteDevice(devices.getPoolDevName(), info.DeviceId); err != nil {
|
|
if err := devicemapper.DeleteDevice(devices.getPoolDevName(), info.DeviceId); err != nil {
|
|
- log.Debugf("Error deleting device: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Error deleting device: %s", err)
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1195,8 +1195,8 @@ func (devices *DeviceSet) DeleteDevice(hash string) error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) deactivatePool() error {
|
|
func (devices *DeviceSet) deactivatePool() error {
|
|
- log.Debugf("[devmapper] deactivatePool()")
|
|
|
|
- defer log.Debugf("[devmapper] deactivatePool END")
|
|
|
|
|
|
+ logrus.Debugf("[devmapper] deactivatePool()")
|
|
|
|
+ defer logrus.Debugf("[devmapper] deactivatePool END")
|
|
devname := devices.getPoolDevName()
|
|
devname := devices.getPoolDevName()
|
|
|
|
|
|
devinfo, err := devicemapper.GetInfo(devname)
|
|
devinfo, err := devicemapper.GetInfo(devname)
|
|
@@ -1205,7 +1205,7 @@ func (devices *DeviceSet) deactivatePool() error {
|
|
}
|
|
}
|
|
if d, err := devicemapper.GetDeps(devname); err == nil {
|
|
if d, err := devicemapper.GetDeps(devname); err == nil {
|
|
// Access to more Debug output
|
|
// Access to more Debug output
|
|
- log.Debugf("[devmapper] devicemapper.GetDeps() %s: %#v", devname, d)
|
|
|
|
|
|
+ logrus.Debugf("[devmapper] devicemapper.GetDeps() %s: %#v", devname, d)
|
|
}
|
|
}
|
|
if devinfo.Exists != 0 {
|
|
if devinfo.Exists != 0 {
|
|
return devicemapper.RemoveDevice(devname)
|
|
return devicemapper.RemoveDevice(devname)
|
|
@@ -1215,13 +1215,13 @@ func (devices *DeviceSet) deactivatePool() error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) deactivateDevice(info *DevInfo) error {
|
|
func (devices *DeviceSet) deactivateDevice(info *DevInfo) error {
|
|
- log.Debugf("[devmapper] deactivateDevice(%s)", info.Hash)
|
|
|
|
- defer log.Debugf("[devmapper] deactivateDevice END(%s)", info.Hash)
|
|
|
|
|
|
+ logrus.Debugf("[devmapper] deactivateDevice(%s)", info.Hash)
|
|
|
|
+ defer logrus.Debugf("[devmapper] deactivateDevice END(%s)", info.Hash)
|
|
|
|
|
|
// Wait for the unmount to be effective,
|
|
// Wait for the unmount to be effective,
|
|
// by watching the value of Info.OpenCount for the device
|
|
// by watching the value of Info.OpenCount for the device
|
|
if err := devices.waitClose(info); err != nil {
|
|
if err := devices.waitClose(info); err != nil {
|
|
- log.Errorf("Error waiting for device %s to close: %s", info.Hash, err)
|
|
|
|
|
|
+ logrus.Errorf("Error waiting for device %s to close: %s", info.Hash, err)
|
|
}
|
|
}
|
|
|
|
|
|
devinfo, err := devicemapper.GetInfo(info.Name())
|
|
devinfo, err := devicemapper.GetInfo(info.Name())
|
|
@@ -1271,8 +1271,8 @@ func (devices *DeviceSet) removeDeviceAndWait(devname string) error {
|
|
// a) the device registered at <device_set_prefix>-<hash> is removed,
|
|
// a) the device registered at <device_set_prefix>-<hash> is removed,
|
|
// or b) the 10 second timeout expires.
|
|
// or b) the 10 second timeout expires.
|
|
func (devices *DeviceSet) waitRemove(devname string) error {
|
|
func (devices *DeviceSet) waitRemove(devname string) error {
|
|
- log.Debugf("[deviceset %s] waitRemove(%s)", devices.devicePrefix, devname)
|
|
|
|
- defer log.Debugf("[deviceset %s] waitRemove(%s) END", devices.devicePrefix, devname)
|
|
|
|
|
|
+ logrus.Debugf("[deviceset %s] waitRemove(%s)", devices.devicePrefix, devname)
|
|
|
|
+ defer logrus.Debugf("[deviceset %s] waitRemove(%s) END", devices.devicePrefix, devname)
|
|
i := 0
|
|
i := 0
|
|
for ; i < 1000; i++ {
|
|
for ; i < 1000; i++ {
|
|
devinfo, err := devicemapper.GetInfo(devname)
|
|
devinfo, err := devicemapper.GetInfo(devname)
|
|
@@ -1282,7 +1282,7 @@ func (devices *DeviceSet) waitRemove(devname string) error {
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
if i%100 == 0 {
|
|
if i%100 == 0 {
|
|
- log.Debugf("Waiting for removal of %s: exists=%d", devname, devinfo.Exists)
|
|
|
|
|
|
+ logrus.Debugf("Waiting for removal of %s: exists=%d", devname, devinfo.Exists)
|
|
}
|
|
}
|
|
if devinfo.Exists == 0 {
|
|
if devinfo.Exists == 0 {
|
|
break
|
|
break
|
|
@@ -1309,7 +1309,7 @@ func (devices *DeviceSet) waitClose(info *DevInfo) error {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
if i%100 == 0 {
|
|
if i%100 == 0 {
|
|
- log.Debugf("Waiting for unmount of %s: opencount=%d", info.Hash, devinfo.OpenCount)
|
|
|
|
|
|
+ logrus.Debugf("Waiting for unmount of %s: opencount=%d", info.Hash, devinfo.OpenCount)
|
|
}
|
|
}
|
|
if devinfo.OpenCount == 0 {
|
|
if devinfo.OpenCount == 0 {
|
|
break
|
|
break
|
|
@@ -1325,9 +1325,9 @@ func (devices *DeviceSet) waitClose(info *DevInfo) error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) Shutdown() error {
|
|
func (devices *DeviceSet) Shutdown() error {
|
|
- log.Debugf("[deviceset %s] Shutdown()", devices.devicePrefix)
|
|
|
|
- log.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
|
|
|
|
- defer log.Debugf("[deviceset %s] Shutdown() END", devices.devicePrefix)
|
|
|
|
|
|
+ logrus.Debugf("[deviceset %s] Shutdown()", devices.devicePrefix)
|
|
|
|
+ logrus.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
|
|
|
|
+ defer logrus.Debugf("[deviceset %s] Shutdown() END", devices.devicePrefix)
|
|
|
|
|
|
var devs []*DevInfo
|
|
var devs []*DevInfo
|
|
|
|
|
|
@@ -1344,12 +1344,12 @@ func (devices *DeviceSet) Shutdown() error {
|
|
// container. This means it'll go away from the global scope directly,
|
|
// container. This means it'll go away from the global scope directly,
|
|
// and the device will be released when that container dies.
|
|
// and the device will be released when that container dies.
|
|
if err := syscall.Unmount(info.mountPath, syscall.MNT_DETACH); err != nil {
|
|
if err := syscall.Unmount(info.mountPath, syscall.MNT_DETACH); err != nil {
|
|
- log.Debugf("Shutdown unmounting %s, error: %s", info.mountPath, err)
|
|
|
|
|
|
+ logrus.Debugf("Shutdown unmounting %s, error: %s", info.mountPath, err)
|
|
}
|
|
}
|
|
|
|
|
|
devices.Lock()
|
|
devices.Lock()
|
|
if err := devices.deactivateDevice(info); err != nil {
|
|
if err := devices.deactivateDevice(info); err != nil {
|
|
- log.Debugf("Shutdown deactivate %s , error: %s", info.Hash, err)
|
|
|
|
|
|
+ logrus.Debugf("Shutdown deactivate %s , error: %s", info.Hash, err)
|
|
}
|
|
}
|
|
devices.Unlock()
|
|
devices.Unlock()
|
|
}
|
|
}
|
|
@@ -1361,7 +1361,7 @@ func (devices *DeviceSet) Shutdown() error {
|
|
info.lock.Lock()
|
|
info.lock.Lock()
|
|
devices.Lock()
|
|
devices.Lock()
|
|
if err := devices.deactivateDevice(info); err != nil {
|
|
if err := devices.deactivateDevice(info); err != nil {
|
|
- log.Debugf("Shutdown deactivate base , error: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Shutdown deactivate base , error: %s", err)
|
|
}
|
|
}
|
|
devices.Unlock()
|
|
devices.Unlock()
|
|
info.lock.Unlock()
|
|
info.lock.Unlock()
|
|
@@ -1370,7 +1370,7 @@ func (devices *DeviceSet) Shutdown() error {
|
|
devices.Lock()
|
|
devices.Lock()
|
|
if devices.thinPoolDevice == "" {
|
|
if devices.thinPoolDevice == "" {
|
|
if err := devices.deactivatePool(); err != nil {
|
|
if err := devices.deactivatePool(); err != nil {
|
|
- log.Debugf("Shutdown deactivate pool , error: %s", err)
|
|
|
|
|
|
+ logrus.Debugf("Shutdown deactivate pool , error: %s", err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1437,8 +1437,8 @@ func (devices *DeviceSet) MountDevice(hash, path, mountLabel string) error {
|
|
}
|
|
}
|
|
|
|
|
|
func (devices *DeviceSet) UnmountDevice(hash string) error {
|
|
func (devices *DeviceSet) UnmountDevice(hash string) error {
|
|
- log.Debugf("[devmapper] UnmountDevice(hash=%s)", hash)
|
|
|
|
- defer log.Debugf("[devmapper] UnmountDevice(hash=%s) END", hash)
|
|
|
|
|
|
+ logrus.Debugf("[devmapper] UnmountDevice(hash=%s)", hash)
|
|
|
|
+ defer logrus.Debugf("[devmapper] UnmountDevice(hash=%s) END", hash)
|
|
|
|
|
|
info, err := devices.lookupDevice(hash)
|
|
info, err := devices.lookupDevice(hash)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -1460,11 +1460,11 @@ func (devices *DeviceSet) UnmountDevice(hash string) error {
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
- log.Debugf("[devmapper] Unmount(%s)", info.mountPath)
|
|
|
|
|
|
+ logrus.Debugf("[devmapper] Unmount(%s)", info.mountPath)
|
|
if err := syscall.Unmount(info.mountPath, syscall.MNT_DETACH); err != nil {
|
|
if err := syscall.Unmount(info.mountPath, syscall.MNT_DETACH); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- log.Debugf("[devmapper] Unmount done")
|
|
|
|
|
|
+ logrus.Debugf("[devmapper] Unmount done")
|
|
|
|
|
|
if err := devices.deactivateDevice(info); err != nil {
|
|
if err := devices.deactivateDevice(info); err != nil {
|
|
return err
|
|
return err
|
|
@@ -1586,7 +1586,7 @@ func (devices *DeviceSet) getUnderlyingAvailableSpace(loopFile string) (uint64,
|
|
buf := new(syscall.Statfs_t)
|
|
buf := new(syscall.Statfs_t)
|
|
err := syscall.Statfs(loopFile, buf)
|
|
err := syscall.Statfs(loopFile, buf)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Warnf("Couldn't stat loopfile filesystem %v: %v", loopFile, err)
|
|
|
|
|
|
+ logrus.Warnf("Couldn't stat loopfile filesystem %v: %v", loopFile, err)
|
|
return 0, err
|
|
return 0, err
|
|
}
|
|
}
|
|
return buf.Bfree * uint64(buf.Bsize), nil
|
|
return buf.Bfree * uint64(buf.Bsize), nil
|
|
@@ -1596,7 +1596,7 @@ func (devices *DeviceSet) isRealFile(loopFile string) (bool, error) {
|
|
if loopFile != "" {
|
|
if loopFile != "" {
|
|
fi, err := os.Stat(loopFile)
|
|
fi, err := os.Stat(loopFile)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Warnf("Couldn't stat loopfile %v: %v", loopFile, err)
|
|
|
|
|
|
+ logrus.Warnf("Couldn't stat loopfile %v: %v", loopFile, err)
|
|
return false, err
|
|
return false, err
|
|
}
|
|
}
|
|
return fi.Mode().IsRegular(), nil
|
|
return fi.Mode().IsRegular(), nil
|