From d35b63d3efc776c54d0566fedcb68fb6c4401453 Mon Sep 17 00:00:00 2001 From: Shuo Wu Date: Tue, 22 Oct 2024 16:27:29 +0800 Subject: [PATCH] refactor: abstract replicaLvolFilter as a func Signed-off-by: Shuo Wu --- pkg/spdk/replica.go | 44 ++++++++++++-------------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/pkg/spdk/replica.go b/pkg/spdk/replica.go index 31242c2f..e28bd9fe 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 }