cmd/stindex: Teach it about new key types

This commit is contained in:
Jakob Borg
2020-01-31 08:27:20 +01:00
parent e0d4cdc9a3
commit 9cef283151
2 changed files with 45 additions and 0 deletions
+20
View File
@@ -41,6 +41,8 @@ func idxck(ldb backend.Backend) (success bool) {
globals := make(map[globalKey]db.VersionList)
sequences := make(map[sequenceKey]string)
needs := make(map[globalKey]struct{})
blocklists := make(map[string]struct{})
usedBlocklists := make(map[string]struct{})
var localDeviceKey uint32
success = true
@@ -99,6 +101,10 @@ func idxck(ldb backend.Backend) (success bool) {
folder := binary.BigEndian.Uint32(key[1:])
name := nulString(key[1+4:])
needs[globalKey{folder, name}] = struct{}{}
case db.KeyTypeBlockList:
hash := string(key[1:])
blocklists[hash] = struct{}{}
}
}
@@ -137,6 +143,16 @@ func idxck(ldb backend.Backend) (success bool) {
success = false
}
}
if fi.BlocksHash != nil {
key := string(fi.BlocksHash)
if _, ok := blocklists[key]; !ok {
fmt.Printf("Missing block list for file %q, block list hash %x\n", fi.Name, fi.BlocksHash)
success = false
} else {
usedBlocklists[key] = struct{}{}
}
}
}
for gk, vl := range globals {
@@ -229,6 +245,10 @@ func idxck(ldb backend.Backend) (success bool) {
}
}
if d := len(blocklists) - len(usedBlocklists); d > 0 {
fmt.Printf("%d block list entries out of %d needs GC\n", d, len(blocklists))
}
return
}