Remove devicemapper lazy initialization
| ... | ... |
@@ -38,7 +38,6 @@ type MetaData struct {
|
| 38 | 38 |
type DeviceSet struct {
|
| 39 | 39 |
MetaData |
| 40 | 40 |
sync.Mutex |
| 41 |
- initialized bool |
|
| 42 | 41 |
root string |
| 43 | 42 |
devicePrefix string |
| 44 | 43 |
TransactionId uint64 |
| ... | ... |
@@ -450,11 +449,6 @@ func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
|
| 450 | 450 |
devices.Lock() |
| 451 | 451 |
defer devices.Unlock() |
| 452 | 452 |
|
| 453 |
- if err := devices.ensureInit(); err != nil {
|
|
| 454 |
- utils.Debugf("Error init: %s\n", err)
|
|
| 455 |
- return err |
|
| 456 |
- } |
|
| 457 |
- |
|
| 458 | 453 |
if devices.Devices[hash] != nil {
|
| 459 | 454 |
return fmt.Errorf("hash %s already exists", hash)
|
| 460 | 455 |
} |
| ... | ... |
@@ -522,11 +516,6 @@ func (devices *DeviceSet) RemoveDevice(hash string) error {
|
| 522 | 522 |
devices.Lock() |
| 523 | 523 |
defer devices.Unlock() |
| 524 | 524 |
|
| 525 |
- if err := devices.ensureInit(); err != nil {
|
|
| 526 |
- utils.Debugf("\n--->Err: %s\n", err)
|
|
| 527 |
- return err |
|
| 528 |
- } |
|
| 529 |
- |
|
| 530 | 525 |
return devices.removeDevice(hash) |
| 531 | 526 |
} |
| 532 | 527 |
|
| ... | ... |
@@ -635,10 +624,6 @@ func (devices *DeviceSet) Shutdown() error {
|
| 635 | 635 |
utils.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
|
| 636 | 636 |
defer devices.Unlock() |
| 637 | 637 |
|
| 638 |
- if !devices.initialized {
|
|
| 639 |
- return nil |
|
| 640 |
- } |
|
| 641 |
- |
|
| 642 | 638 |
for path, count := range devices.activeMounts {
|
| 643 | 639 |
for i := count; i > 0; i-- {
|
| 644 | 640 |
if err := syscall.Unmount(path, 0); err != nil {
|
| ... | ... |
@@ -671,10 +656,6 @@ func (devices *DeviceSet) MountDevice(hash, path string, readOnly bool) error {
|
| 671 | 671 |
devices.Lock() |
| 672 | 672 |
defer devices.Unlock() |
| 673 | 673 |
|
| 674 |
- if err := devices.ensureInit(); err != nil {
|
|
| 675 |
- return fmt.Errorf("Error initializing devmapper: %s", err)
|
|
| 676 |
- } |
|
| 677 |
- |
|
| 678 | 674 |
if err := devices.activateDeviceIfNeeded(hash); err != nil {
|
| 679 | 675 |
return fmt.Errorf("Error activating devmapper device for '%s': %s", hash, err)
|
| 680 | 676 |
} |
| ... | ... |
@@ -736,9 +717,6 @@ func (devices *DeviceSet) HasDevice(hash string) bool {
|
| 736 | 736 |
devices.Lock() |
| 737 | 737 |
defer devices.Unlock() |
| 738 | 738 |
|
| 739 |
- if err := devices.ensureInit(); err != nil {
|
|
| 740 |
- return false |
|
| 741 |
- } |
|
| 742 | 739 |
return devices.Devices[hash] != nil |
| 743 | 740 |
} |
| 744 | 741 |
|
| ... | ... |
@@ -746,10 +724,6 @@ func (devices *DeviceSet) HasInitializedDevice(hash string) bool {
|
| 746 | 746 |
devices.Lock() |
| 747 | 747 |
defer devices.Unlock() |
| 748 | 748 |
|
| 749 |
- if err := devices.ensureInit(); err != nil {
|
|
| 750 |
- return false |
|
| 751 |
- } |
|
| 752 |
- |
|
| 753 | 749 |
info := devices.Devices[hash] |
| 754 | 750 |
return info != nil && info.Initialized |
| 755 | 751 |
} |
| ... | ... |
@@ -758,10 +732,6 @@ func (devices *DeviceSet) HasActivatedDevice(hash string) bool {
|
| 758 | 758 |
devices.Lock() |
| 759 | 759 |
defer devices.Unlock() |
| 760 | 760 |
|
| 761 |
- if err := devices.ensureInit(); err != nil {
|
|
| 762 |
- return false |
|
| 763 |
- } |
|
| 764 |
- |
|
| 765 | 761 |
info := devices.Devices[hash] |
| 766 | 762 |
if info == nil {
|
| 767 | 763 |
return false |
| ... | ... |
@@ -774,11 +744,6 @@ func (devices *DeviceSet) SetInitialized(hash string) error {
|
| 774 | 774 |
devices.Lock() |
| 775 | 775 |
defer devices.Unlock() |
| 776 | 776 |
|
| 777 |
- if err := devices.ensureInit(); err != nil {
|
|
| 778 |
- utils.Debugf("\n--->Err: %s\n", err)
|
|
| 779 |
- return err |
|
| 780 |
- } |
|
| 781 |
- |
|
| 782 | 777 |
info := devices.Devices[hash] |
| 783 | 778 |
if info == nil {
|
| 784 | 779 |
return fmt.Errorf("Unknown device %s", hash)
|
| ... | ... |
@@ -800,10 +765,6 @@ func (devices *DeviceSet) Status() *Status {
|
| 800 | 800 |
|
| 801 | 801 |
status := &Status{}
|
| 802 | 802 |
|
| 803 |
- if err := devices.ensureInit(); err != nil {
|
|
| 804 |
- return status |
|
| 805 |
- } |
|
| 806 |
- |
|
| 807 | 803 |
status.PoolName = devices.getPoolName() |
| 808 | 804 |
status.DataLoopback = path.Join(devices.loopbackDir(), "data") |
| 809 | 805 |
status.MetadataLoopback = path.Join(devices.loopbackDir(), "metadata") |
| ... | ... |
@@ -827,24 +788,18 @@ func (devices *DeviceSet) Status() *Status {
|
| 827 | 827 |
return status |
| 828 | 828 |
} |
| 829 | 829 |
|
| 830 |
-func (devices *DeviceSet) ensureInit() error {
|
|
| 831 |
- if !devices.initialized {
|
|
| 832 |
- devices.initialized = true |
|
| 833 |
- if err := devices.initDevmapper(); err != nil {
|
|
| 834 |
- utils.Debugf("\n--->Err: %s\n", err)
|
|
| 835 |
- return err |
|
| 836 |
- } |
|
| 837 |
- } |
|
| 838 |
- return nil |
|
| 839 |
-} |
|
| 840 |
- |
|
| 841 |
-func NewDeviceSet(root string) *DeviceSet {
|
|
| 830 |
+func NewDeviceSet(root string) (*DeviceSet, error) {
|
|
| 842 | 831 |
SetDevDir("/dev")
|
| 843 | 832 |
|
| 844 |
- return &DeviceSet{
|
|
| 845 |
- initialized: false, |
|
| 833 |
+ devices := &DeviceSet{
|
|
| 846 | 834 |
root: root, |
| 847 | 835 |
MetaData: MetaData{Devices: make(map[string]*DevInfo)},
|
| 848 | 836 |
activeMounts: make(map[string]int), |
| 849 | 837 |
} |
| 838 |
+ |
|
| 839 |
+ if err := devices.initDevmapper(); err != nil {
|
|
| 840 |
+ return nil, err |
|
| 841 |
+ } |
|
| 842 |
+ |
|
| 843 |
+ return devices, nil |
|
| 850 | 844 |
} |
| ... | ... |
@@ -22,13 +22,14 @@ type Driver struct {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
func Init(home string) (graphdriver.Driver, error) {
|
| 25 |
+ deviceSet, err := NewDeviceSet(home); |
|
| 26 |
+ if err != nil {
|
|
| 27 |
+ return nil, err |
|
| 28 |
+ } |
|
| 25 | 29 |
d := &Driver{
|
| 26 |
- DeviceSet: NewDeviceSet(home), |
|
| 30 |
+ DeviceSet: deviceSet, |
|
| 27 | 31 |
home: home, |
| 28 | 32 |
} |
| 29 |
- if err := d.DeviceSet.ensureInit(); err != nil {
|
|
| 30 |
- return nil, err |
|
| 31 |
- } |
|
| 32 | 33 |
return d, nil |
| 33 | 34 |
} |
| 34 | 35 |
|