From b5795749d1688f99df422dd7068b189e5b25e5e9 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 24 Oct 2013 21:04:49 +0200 Subject: [PATCH] Remove devicemapper lazy initialization We now always initialize devicemapper on startup, so no need for the code that did lazy initialization, we just delete it. --- devmapper/deviceset.go | 61 ++++++------------------------------------ devmapper/driver.go | 11 ++++---- 2 files changed, 14 insertions(+), 58 deletions(-) diff --git a/devmapper/deviceset.go b/devmapper/deviceset.go index a80f2a93e7..e7e57ab6a4 100644 --- a/devmapper/deviceset.go +++ b/devmapper/deviceset.go @@ -38,7 +38,6 @@ type MetaData struct { type DeviceSet struct { MetaData sync.Mutex - initialized bool root string devicePrefix string TransactionId uint64 @@ -450,11 +449,6 @@ func (devices *DeviceSet) AddDevice(hash, baseHash string) error { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - utils.Debugf("Error init: %s\n", err) - return err - } - if devices.Devices[hash] != nil { return fmt.Errorf("hash %s already exists", hash) } @@ -522,11 +516,6 @@ func (devices *DeviceSet) RemoveDevice(hash string) error { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - utils.Debugf("\n--->Err: %s\n", err) - return err - } - return devices.removeDevice(hash) } @@ -635,10 +624,6 @@ func (devices *DeviceSet) Shutdown() error { utils.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root) defer devices.Unlock() - if !devices.initialized { - return nil - } - for path, count := range devices.activeMounts { for i := count; i > 0; i-- { if err := syscall.Unmount(path, 0); err != nil { @@ -671,10 +656,6 @@ func (devices *DeviceSet) MountDevice(hash, path string, readOnly bool) error { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - return fmt.Errorf("Error initializing devmapper: %s", err) - } - if err := devices.activateDeviceIfNeeded(hash); err != nil { return fmt.Errorf("Error activating devmapper device for '%s': %s", hash, err) } @@ -736,9 +717,6 @@ func (devices *DeviceSet) HasDevice(hash string) bool { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - return false - } return devices.Devices[hash] != nil } @@ -746,10 +724,6 @@ func (devices *DeviceSet) HasInitializedDevice(hash string) bool { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - return false - } - info := devices.Devices[hash] return info != nil && info.Initialized } @@ -758,10 +732,6 @@ func (devices *DeviceSet) HasActivatedDevice(hash string) bool { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - return false - } - info := devices.Devices[hash] if info == nil { return false @@ -774,11 +744,6 @@ func (devices *DeviceSet) SetInitialized(hash string) error { devices.Lock() defer devices.Unlock() - if err := devices.ensureInit(); err != nil { - utils.Debugf("\n--->Err: %s\n", err) - return err - } - info := devices.Devices[hash] if info == nil { return fmt.Errorf("Unknown device %s", hash) @@ -800,10 +765,6 @@ func (devices *DeviceSet) Status() *Status { status := &Status{} - if err := devices.ensureInit(); err != nil { - return status - } - status.PoolName = devices.getPoolName() status.DataLoopback = path.Join(devices.loopbackDir(), "data") status.MetadataLoopback = path.Join(devices.loopbackDir(), "metadata") @@ -827,24 +788,18 @@ func (devices *DeviceSet) Status() *Status { return status } -func (devices *DeviceSet) ensureInit() error { - if !devices.initialized { - devices.initialized = true - if err := devices.initDevmapper(); err != nil { - utils.Debugf("\n--->Err: %s\n", err) - return err - } - } - return nil -} - -func NewDeviceSet(root string) *DeviceSet { +func NewDeviceSet(root string) (*DeviceSet, error) { SetDevDir("/dev") - return &DeviceSet{ - initialized: false, + devices := &DeviceSet{ root: root, MetaData: MetaData{Devices: make(map[string]*DevInfo)}, activeMounts: make(map[string]int), } + + if err := devices.initDevmapper(); err != nil { + return nil, err + } + + return devices, nil } diff --git a/devmapper/driver.go b/devmapper/driver.go index e095b33be5..f62c61787d 100644 --- a/devmapper/driver.go +++ b/devmapper/driver.go @@ -23,13 +23,14 @@ type Driver struct { } func Init(home string) (graphdriver.Driver, error) { - d := &Driver{ - DeviceSet: NewDeviceSet(home), - home: home, - } - if err := d.DeviceSet.ensureInit(); err != nil { + deviceSet, err := NewDeviceSet(home); + if err != nil { return nil, err } + d := &Driver{ + DeviceSet: deviceSet, + home: home, + } return d, nil }