cubefs

Форк
0
66 строк · 1.6 Кб
1
// Copyright 2022 The CubeFS Authors.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12
// implied. See the License for the specific language governing
13
// permissions and limitations under the License.
14

15
package blobnode
16

17
import (
18
	"context"
19
)
20

21
// key is unexported and used for context.Context
22
type key int
23

24
const (
25
	_ioFlowStatKey key = 0
26
)
27

28
type IOType uint64
29

30
const (
31
	NormalIO     IOType = iota // From: external: user io: read/write
32
	BackgroundIO               // From: external: background io: shard repair;disk repair, delete, compact;balance, drop, manual migrate; internal, inspect
33
	IOTypeMax                  // 2
34
	IOTypeOldMax = 8           // For compatibility with previous versions
35
)
36

37
var IOtypemap = [...]string{
38
	"normal",
39
	"background",
40
}
41

42
var _ = IOtypemap[IOTypeMax-1]
43

44
func (it IOType) IsValid() bool {
45
	return it >= NormalIO && it < IOTypeOldMax
46
}
47

48
func (it IOType) String() string {
49
	return IOtypemap[it]
50
}
51

52
func (it IOType) IsHighLevel() bool {
53
	return it == NormalIO
54
}
55

56
func GetIoType(ctx context.Context) IOType {
57
	v := ctx.Value(_ioFlowStatKey)
58
	if v == nil {
59
		return NormalIO
60
	}
61
	return v.(IOType)
62
}
63

64
func SetIoType(ctx context.Context, iot IOType) context.Context {
65
	return context.WithValue(ctx, _ioFlowStatKey, iot)
66
}
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.