diff --git a/snapshots/devmapper/pool_device.go b/snapshots/devmapper/pool_device.go index 9d0745fcb..a4c9f47d4 100644 --- a/snapshots/devmapper/pool_device.go +++ b/snapshots/devmapper/pool_device.go @@ -331,12 +331,6 @@ func (p *PoolDevice) CreateSnapshotDevice(ctx context.Context, deviceName string } }() - // Save snapshot metadata and allocate new device ID - metaErr = p.metadata.AddDevice(ctx, snapInfo) - if metaErr != nil { - return metaErr - } - // The base device must be suspend before taking a snapshot to // avoid corruption. // https://github.com/torvalds/linux/blob/v5.7/Documentation/admin-guide/device-mapper/thin-provisioning.rst#internal-snapshots @@ -354,6 +348,12 @@ func (p *PoolDevice) CreateSnapshotDevice(ctx context.Context, deviceName string }() } + // Save snapshot metadata and allocate new device ID + metaErr = p.metadata.AddDevice(ctx, snapInfo) + if metaErr != nil { + return metaErr + } + // Create thin device snapshot devErr = p.createSnapshot(ctx, baseInfo, snapInfo) if devErr != nil {