diff --git a/pkg/spdk/replica.go b/pkg/spdk/replica.go index d364f6b0..22bd2ee3 100644 --- a/pkg/spdk/replica.go +++ b/pkg/spdk/replica.go @@ -182,20 +182,21 @@ func NewReplica(ctx context.Context, replicaName, lvsName, lvsUUID string, specS } } +func (r *Replica) replicaLvolFilter(bdev *spdktypes.BdevInfo) bool { + if bdev == nil || len(bdev.Aliases) < 1 || bdev.DriverSpecific.Lvol == nil { + return false + } + lvolName := spdktypes.GetLvolNameFromAlias(bdev.Aliases[0]) + return IsReplicaLvol(r.Name, lvolName) || (len(r.ActiveChain) > 0 && r.ActiveChain[0] != nil && r.ActiveChain[0].Name == lvolName) +} + func (r *Replica) Sync(spdkClient *spdkclient.Client) (err error) { r.Lock() defer r.Unlock() // It's better to let the server send the update signal // This lvol and nvmf subsystem fetch should be protected by replica lock, in case of snapshot operations happened during the sync-up. - replicaLvolFilter := func(bdev *spdktypes.BdevInfo) bool { - var lvolName string - if len(bdev.Aliases) == 1 { - lvolName = spdktypes.GetLvolNameFromAlias(bdev.Aliases[0]) - } - return IsReplicaLvol(r.Name, lvolName) || (r.ActiveChain[0] != nil && r.ActiveChain[0].Name == lvolName) - } - bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, replicaLvolFilter) + bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, r.replicaLvolFilter) if err != nil { return err } @@ -832,14 +833,7 @@ func (r *Replica) Delete(spdkClient *spdkclient.Client, cleanupRequired bool, su // Clean up the valid snapshot tree if len(r.ActiveChain) > 1 { - replicaLvolFilter := func(bdev *spdktypes.BdevInfo) bool { - var lvolName string - if len(bdev.Aliases) == 1 { - lvolName = spdktypes.GetLvolNameFromAlias(bdev.Aliases[0]) - } - return IsReplicaLvol(r.Name, lvolName) || (r.ActiveChain[0] != nil && r.ActiveChain[0].Name == lvolName) - } - bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, replicaLvolFilter) + bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, r.replicaLvolFilter) if err != nil { return err } @@ -1113,14 +1107,7 @@ func (r *Replica) SnapshotRevert(spdkClient *spdkclient.Client, snapshotName str return nil, err } - replicaLvolFilter := func(bdev *spdktypes.BdevInfo) bool { - var lvolName string - if len(bdev.Aliases) == 1 { - lvolName = spdktypes.GetLvolNameFromAlias(bdev.Aliases[0]) - } - return IsReplicaLvol(r.Name, lvolName) || (r.ActiveChain[0] != nil && r.ActiveChain[0].Name == lvolName) - } - bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, replicaLvolFilter) + bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, r.replicaLvolFilter) if err != nil { return nil, err } @@ -1576,14 +1563,7 @@ func (r *Replica) RebuildingDstFinish(spdkClient *spdkclient.Client) (err error) _ = r.doCleanupForRebuildingDst(spdkClient, r.rebuildingDstCache.rebuildingState == types.ProgressStateError) - replicaLvolFilter := func(bdev *spdktypes.BdevInfo) bool { - var lvolName string - if len(bdev.Aliases) == 1 { - lvolName = spdktypes.GetLvolNameFromAlias(bdev.Aliases[0]) - } - return IsReplicaLvol(r.Name, lvolName) || (r.ActiveChain[0] != nil && r.ActiveChain[0].Name == lvolName) - } - bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, replicaLvolFilter) + bdevLvolMap, err := GetBdevLvolMapWithFilter(spdkClient, r.replicaLvolFilter) if err != nil { return err }