add check plugin is not used before rm
Signed-off-by: Victor Vieux <vieux@docker.com> Upstream-commit: b22d07f51573e39069b4e3a6d8b0580958412e72 Component: engine
This commit is contained in:
@ -91,7 +91,7 @@ func Unregister(name string) bool {
|
||||
// lookup returns the driver associated with the given name. If a
|
||||
// driver with the given name has not been registered it checks if
|
||||
// there is a VolumeDriver plugin available with the given name.
|
||||
func lookup(name string) (volume.Driver, error) {
|
||||
func lookup(name string, mode int) (volume.Driver, error) {
|
||||
drivers.driverLock.Lock(name)
|
||||
defer drivers.driverLock.Unlock(name)
|
||||
|
||||
@ -102,7 +102,7 @@ func lookup(name string) (volume.Driver, error) {
|
||||
return ext, nil
|
||||
}
|
||||
|
||||
p, err := pluginStore.LookupWithCapability(name, extName)
|
||||
p, err := pluginStore.LookupWithCapability(name, extName, mode)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Error looking up volume plugin %s: %v", name, err)
|
||||
}
|
||||
@ -134,7 +134,25 @@ func GetDriver(name string) (volume.Driver, error) {
|
||||
if name == "" {
|
||||
name = volume.DefaultDriverName
|
||||
}
|
||||
return lookup(name)
|
||||
return lookup(name, pluginStore.LOOKUP)
|
||||
}
|
||||
|
||||
// CreateDriver returns a volume driver by its name and increments RefCount.
|
||||
// If the driver is empty, it looks for the local driver.
|
||||
func CreateDriver(name string) (volume.Driver, error) {
|
||||
if name == "" {
|
||||
name = volume.DefaultDriverName
|
||||
}
|
||||
return lookup(name, pluginStore.CREATE)
|
||||
}
|
||||
|
||||
// RemoveDriver returns a volume driver by its name and decrements RefCount..
|
||||
// If the driver is empty, it looks for the local driver.
|
||||
func RemoveDriver(name string) (volume.Driver, error) {
|
||||
if name == "" {
|
||||
name = volume.DefaultDriverName
|
||||
}
|
||||
return lookup(name, pluginStore.REMOVE)
|
||||
}
|
||||
|
||||
// GetDriverList returns list of volume drivers registered.
|
||||
|
||||
@ -264,7 +264,7 @@ func (s *VolumeStore) create(name, driverName string, opts, labels map[string]st
|
||||
}
|
||||
}
|
||||
|
||||
vd, err := volumedrivers.GetDriver(driverName)
|
||||
vd, err := volumedrivers.CreateDriver(driverName)
|
||||
|
||||
if err != nil {
|
||||
return nil, &OpErr{Op: "create", Name: name, Err: err}
|
||||
@ -416,7 +416,7 @@ func (s *VolumeStore) Remove(v volume.Volume) error {
|
||||
return &OpErr{Err: errVolumeInUse, Name: v.Name(), Op: "remove", Refs: refs}
|
||||
}
|
||||
|
||||
vd, err := volumedrivers.GetDriver(v.DriverName())
|
||||
vd, err := volumedrivers.RemoveDriver(v.DriverName())
|
||||
if err != nil {
|
||||
return &OpErr{Err: err, Name: vd.Name(), Op: "remove"}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user