RemoveDevice completely wipes out thin device from thin-pool and frees it's device ID
(ctx context.Context, deviceName string)
| 543 | |
| 544 | // RemoveDevice completely wipes out thin device from thin-pool and frees it's device ID |
| 545 | func (p *PoolDevice) RemoveDevice(ctx context.Context, deviceName string) error { |
| 546 | info, err := p.metadata.GetDevice(ctx, deviceName) |
| 547 | if err != nil { |
| 548 | return fmt.Errorf("can't query metadata for device %q: %w", deviceName, err) |
| 549 | } |
| 550 | |
| 551 | if err := p.DeactivateDevice(ctx, deviceName, false, true); err != nil { |
| 552 | return err |
| 553 | } |
| 554 | |
| 555 | if err := p.deleteDevice(ctx, info); err != nil { |
| 556 | return err |
| 557 | } |
| 558 | |
| 559 | // Remove record from meta store and free device ID |
| 560 | if err := p.metadata.RemoveDevice(ctx, deviceName); err != nil { |
| 561 | return fmt.Errorf("can't remove device %q metadata from store after removal: %w", deviceName, err) |
| 562 | } |
| 563 | |
| 564 | return nil |
| 565 | } |
| 566 | |
| 567 | func (p *PoolDevice) deleteDevice(ctx context.Context, info *DeviceInfo) error { |
| 568 | if err := p.transition(ctx, info.Name, Removing, Removed, func() error { |
no test coverage detected