mirror of https://github.com/docker/docs.git
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.
This commit is contained in:
parent
948bb29d27
commit
b5795749d1
|
@ -38,7 +38,6 @@ type MetaData struct {
|
||||||
type DeviceSet struct {
|
type DeviceSet struct {
|
||||||
MetaData
|
MetaData
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
initialized bool
|
|
||||||
root string
|
root string
|
||||||
devicePrefix string
|
devicePrefix string
|
||||||
TransactionId uint64
|
TransactionId uint64
|
||||||
|
@ -450,11 +449,6 @@ func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
|
||||||
devices.Lock()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
utils.Debugf("Error init: %s\n", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if devices.Devices[hash] != nil {
|
if devices.Devices[hash] != nil {
|
||||||
return fmt.Errorf("hash %s already exists", hash)
|
return fmt.Errorf("hash %s already exists", hash)
|
||||||
}
|
}
|
||||||
|
@ -522,11 +516,6 @@ func (devices *DeviceSet) RemoveDevice(hash string) error {
|
||||||
devices.Lock()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
utils.Debugf("\n--->Err: %s\n", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return devices.removeDevice(hash)
|
return devices.removeDevice(hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -635,10 +624,6 @@ func (devices *DeviceSet) Shutdown() error {
|
||||||
utils.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
|
utils.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if !devices.initialized {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
for path, count := range devices.activeMounts {
|
for path, count := range devices.activeMounts {
|
||||||
for i := count; i > 0; i-- {
|
for i := count; i > 0; i-- {
|
||||||
if err := syscall.Unmount(path, 0); err != nil {
|
if err := syscall.Unmount(path, 0); err != nil {
|
||||||
|
@ -671,10 +656,6 @@ func (devices *DeviceSet) MountDevice(hash, path string, readOnly bool) error {
|
||||||
devices.Lock()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
return fmt.Errorf("Error initializing devmapper: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := devices.activateDeviceIfNeeded(hash); err != nil {
|
if err := devices.activateDeviceIfNeeded(hash); err != nil {
|
||||||
return fmt.Errorf("Error activating devmapper device for '%s': %s", hash, err)
|
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()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return devices.Devices[hash] != nil
|
return devices.Devices[hash] != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,10 +724,6 @@ func (devices *DeviceSet) HasInitializedDevice(hash string) bool {
|
||||||
devices.Lock()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
info := devices.Devices[hash]
|
info := devices.Devices[hash]
|
||||||
return info != nil && info.Initialized
|
return info != nil && info.Initialized
|
||||||
}
|
}
|
||||||
|
@ -758,10 +732,6 @@ func (devices *DeviceSet) HasActivatedDevice(hash string) bool {
|
||||||
devices.Lock()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
info := devices.Devices[hash]
|
info := devices.Devices[hash]
|
||||||
if info == nil {
|
if info == nil {
|
||||||
return false
|
return false
|
||||||
|
@ -774,11 +744,6 @@ func (devices *DeviceSet) SetInitialized(hash string) error {
|
||||||
devices.Lock()
|
devices.Lock()
|
||||||
defer devices.Unlock()
|
defer devices.Unlock()
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
utils.Debugf("\n--->Err: %s\n", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
info := devices.Devices[hash]
|
info := devices.Devices[hash]
|
||||||
if info == nil {
|
if info == nil {
|
||||||
return fmt.Errorf("Unknown device %s", hash)
|
return fmt.Errorf("Unknown device %s", hash)
|
||||||
|
@ -800,10 +765,6 @@ func (devices *DeviceSet) Status() *Status {
|
||||||
|
|
||||||
status := &Status{}
|
status := &Status{}
|
||||||
|
|
||||||
if err := devices.ensureInit(); err != nil {
|
|
||||||
return status
|
|
||||||
}
|
|
||||||
|
|
||||||
status.PoolName = devices.getPoolName()
|
status.PoolName = devices.getPoolName()
|
||||||
status.DataLoopback = path.Join(devices.loopbackDir(), "data")
|
status.DataLoopback = path.Join(devices.loopbackDir(), "data")
|
||||||
status.MetadataLoopback = path.Join(devices.loopbackDir(), "metadata")
|
status.MetadataLoopback = path.Join(devices.loopbackDir(), "metadata")
|
||||||
|
@ -827,24 +788,18 @@ func (devices *DeviceSet) Status() *Status {
|
||||||
return status
|
return status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (devices *DeviceSet) ensureInit() error {
|
func NewDeviceSet(root string) (*DeviceSet, 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 {
|
|
||||||
SetDevDir("/dev")
|
SetDevDir("/dev")
|
||||||
|
|
||||||
return &DeviceSet{
|
devices := &DeviceSet{
|
||||||
initialized: false,
|
|
||||||
root: root,
|
root: root,
|
||||||
MetaData: MetaData{Devices: make(map[string]*DevInfo)},
|
MetaData: MetaData{Devices: make(map[string]*DevInfo)},
|
||||||
activeMounts: make(map[string]int),
|
activeMounts: make(map[string]int),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := devices.initDevmapper(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return devices, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,13 +23,14 @@ type Driver struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Init(home string) (graphdriver.Driver, error) {
|
func Init(home string) (graphdriver.Driver, error) {
|
||||||
d := &Driver{
|
deviceSet, err := NewDeviceSet(home);
|
||||||
DeviceSet: NewDeviceSet(home),
|
if err != nil {
|
||||||
home: home,
|
|
||||||
}
|
|
||||||
if err := d.DeviceSet.ensureInit(); err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
d := &Driver{
|
||||||
|
DeviceSet: deviceSet,
|
||||||
|
home: home,
|
||||||
|
}
|
||||||
return d, nil
|
return d, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue