8
const MaxCorruptBlocksInFileDesc int = 10
10
type BackupFileDescription struct {
11
IsIncremented bool // should never be both incremented and Skipped
14
CorruptBlocks *CorruptBlocksInfo `json:",omitempty"`
18
func NewBackupFileDescription(isIncremented, isSkipped bool, modTime time.Time) *BackupFileDescription {
19
return &BackupFileDescription{isIncremented, isSkipped, modTime, nil, 0}
22
type CorruptBlocksInfo struct {
23
CorruptBlocksCount int
24
SomeCorruptBlocks []uint32
27
func (desc *BackupFileDescription) SetCorruptBlocks(corruptBlockNumbers []uint32, storeAllBlocks bool) {
28
if len(corruptBlockNumbers) == 0 {
31
sort.Slice(corruptBlockNumbers, func(i, j int) bool {
32
return corruptBlockNumbers[i] < corruptBlockNumbers[j]
35
corruptBlocksCount := len(corruptBlockNumbers)
36
// write no more than MaxCorruptBlocksInFileDesc
37
someCorruptBlocks := make([]uint32, 0)
38
for idx, blockNo := range corruptBlockNumbers {
39
if !storeAllBlocks && idx >= MaxCorruptBlocksInFileDesc {
42
someCorruptBlocks = append(someCorruptBlocks, blockNo)
44
desc.CorruptBlocks = &CorruptBlocksInfo{
45
CorruptBlocksCount: corruptBlocksCount,
46
SomeCorruptBlocks: someCorruptBlocks,
50
type BackupFileList map[string]BackupFileDescription