diff --git a/internal/qos/grpc.go b/internal/qos/grpc.go index 534a1f74b..58cd9e52c 100644 --- a/internal/qos/grpc.go +++ b/internal/qos/grpc.go @@ -26,7 +26,7 @@ func NewAdjustOutgoingIOTagUnaryClientInterceptor() grpc.UnaryClientInterceptor if err != nil { tag = IOTagClient } - if tag == IOTagBackground || tag == IOTagPolicer || tag == IOTagWritecache { + if tag.IsLocal() { tag = IOTagInternal } ctx = tagging.ContextWithIOTag(ctx, tag.String()) @@ -44,7 +44,7 @@ func NewAdjustOutgoingIOTagStreamClientInterceptor() grpc.StreamClientIntercepto if err != nil { tag = IOTagClient } - if tag == IOTagBackground || tag == IOTagPolicer || tag == IOTagWritecache { + if tag.IsLocal() { tag = IOTagInternal } ctx = tagging.ContextWithIOTag(ctx, tag.String()) diff --git a/internal/qos/limiter.go b/internal/qos/limiter.go index e92cef652..82f9917a5 100644 --- a/internal/qos/limiter.go +++ b/internal/qos/limiter.go @@ -74,7 +74,7 @@ func createScheduler(config limits.OpConfig) (scheduler, error) { func converToSchedulingTags(limits []limits.IOTagConfig) map[string]scheduling.TagInfo { result := make(map[string]scheduling.TagInfo) - for _, tag := range []IOTag{IOTagClient, IOTagBackground, IOTagInternal, IOTagPolicer, IOTagWritecache} { + for _, tag := range []IOTag{IOTagClient, IOTagBackground, IOTagInternal, IOTagPolicer, IOTagWritecache, IOTagTreeSync} { result[tag.String()] = scheduling.TagInfo{ Share: defaultShare, } diff --git a/internal/qos/stats.go b/internal/qos/stats.go index f077f552b..ef882aafe 100644 --- a/internal/qos/stats.go +++ b/internal/qos/stats.go @@ -5,6 +5,7 @@ const unknownStatsTag = "unknown" var statTags = map[string]struct{}{ IOTagClient.String(): {}, IOTagBackground.String(): {}, + IOTagTreeSync.String(): {}, IOTagInternal.String(): {}, IOTagPolicer.String(): {}, IOTagWritecache.String(): {}, diff --git a/internal/qos/tags.go b/internal/qos/tags.go index 9db45f190..a0df00cf7 100644 --- a/internal/qos/tags.go +++ b/internal/qos/tags.go @@ -16,6 +16,7 @@ const ( IOTagWritecache IOTag = "writecache" IOTagPolicer IOTag = "policer" IOTagCritical IOTag = "critical" + IOTagTreeSync IOTag = "treesync" ioTagUnknown IOTag = "" ) @@ -30,6 +31,8 @@ func FromRawString(s string) (IOTag, error) { return IOTagInternal, nil case string(IOTagBackground): return IOTagBackground, nil + case string(IOTagTreeSync): + return IOTagTreeSync, nil case string(IOTagWritecache): return IOTagWritecache, nil case string(IOTagPolicer): @@ -50,3 +53,7 @@ func IOTagFromContext(ctx context.Context) string { } return tag } + +func (t IOTag) IsLocal() bool { + return t == IOTagBackground || t == IOTagPolicer || t == IOTagWritecache || t == IOTagTreeSync +} diff --git a/internal/qos/validate.go b/internal/qos/validate.go index 3fa4ebbd1..7142cc1ee 100644 --- a/internal/qos/validate.go +++ b/internal/qos/validate.go @@ -45,6 +45,7 @@ func validateTags(configTags []limits.IOTagConfig) error { IOTagClient: {}, IOTagInternal: {}, IOTagBackground: {}, + IOTagTreeSync: {}, IOTagWritecache: {}, IOTagPolicer: {}, } diff --git a/pkg/services/tree/service.go b/pkg/services/tree/service.go index eeffec08b..b9bb96bab 100644 --- a/pkg/services/tree/service.go +++ b/pkg/services/tree/service.go @@ -85,7 +85,7 @@ func New(opts ...Option) *Service { // Start starts the service. func (s *Service) Start(ctx context.Context) { - ctx = tagging.ContextWithIOTag(ctx, qos.IOTagBackground.String()) + ctx = tagging.ContextWithIOTag(ctx, qos.IOTagTreeSync.String()) go s.replicateLoop(ctx) go s.syncLoop(ctx)