diff --git a/deviceset.go b/deviceset.go index 5dd608361f..cf422acb3a 100644 --- a/deviceset.go +++ b/deviceset.go @@ -9,6 +9,7 @@ type DeviceSet interface { UnmountDevice(hash, path string) error HasDevice(hash string) bool HasInitializedDevice(hash string) bool + HasActivatedDevice(hash string) bool Shutdown() error } @@ -61,6 +62,10 @@ func (wrapper *DeviceSetWrapper) HasInitializedDevice(hash string) bool { return wrapper.wrapped.HasInitializedDevice(wrapper.wrap(hash)) } +func (wrapper *DeviceSetWrapper) HasActivatedDevice(hash string) bool { + return wrapper.wrapped.HasActivatedDevice(wrapper.wrap(hash)) +} + func NewDeviceSetWrapper(wrapped DeviceSet, prefix string) DeviceSet { wrapper := &DeviceSetWrapper{ wrapped: wrapped, diff --git a/devmapper/deviceset_devmapper.go b/devmapper/deviceset_devmapper.go index 670d7621c4..bbf1fa6adc 100644 --- a/devmapper/deviceset_devmapper.go +++ b/devmapper/deviceset_devmapper.go @@ -851,6 +851,23 @@ func (devices *DeviceSetDM) HasInitializedDevice(hash string) bool { return info != nil && info.Initialized } +func (devices *DeviceSetDM) HasActivatedDevice(hash string) bool { + if err := devices.ensureInit(); err != nil { + return false + } + + info := devices.Devices[hash] + if info == nil { + return false + } + name := info.Name() + devinfo, _ := devices.getInfo(name) + if devinfo != nil && devinfo.Exists != 0 { + return true + } + return false +} + func (devices *DeviceSetDM) SetInitialized(hash string) error { if err := devices.ensureInit(); err != nil { return err