mirror of
https://github.com/versity/scoutfs-go.git
synced 2025-12-23 05:05:17 +00:00
fix index key to new uint8 size
This commit is contained in:
@@ -13,7 +13,7 @@ func main() {
|
||||
// flags mount path name
|
||||
mountPath := flag.String("mount", "", "mount path name")
|
||||
// flags index type uint64
|
||||
indexType := flag.Uint64("type", 0, "index type")
|
||||
indexType := flag.Uint("type", 0, "index type")
|
||||
// flags index start uint64
|
||||
indexStart := flag.Uint64("start", 0, "index start")
|
||||
// flags index end uint64
|
||||
@@ -29,7 +29,12 @@ func main() {
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
idx := scoutfs.NewIndexSearch(f, *indexType, *indexStart, *indexEnd)
|
||||
if *indexType > 255 {
|
||||
log.Fatal("index type out of bounds")
|
||||
}
|
||||
itype := uint8(*indexType)
|
||||
|
||||
idx := scoutfs.NewIndexSearch(f, itype, *indexStart, *indexEnd)
|
||||
for {
|
||||
ents, err := idx.Next()
|
||||
if err != nil {
|
||||
|
||||
20
scoutfs.go
20
scoutfs.go
@@ -1707,17 +1707,17 @@ const (
|
||||
indexXattrBatch = 1024
|
||||
)
|
||||
|
||||
func NewIndexSearch(f *os.File, key, start, end uint64, opts ...IOption) *IndexSearch {
|
||||
func NewIndexSearch(f *os.File, key uint8, start, end uint64, opts ...IOption) *IndexSearch {
|
||||
i := &IndexSearch{
|
||||
f: f,
|
||||
pos: indexEntry{
|
||||
A: key,
|
||||
B: start,
|
||||
Major: key,
|
||||
Minor: start,
|
||||
},
|
||||
end: indexEntry{
|
||||
A: key,
|
||||
B: end,
|
||||
Ino: math.MaxUint64,
|
||||
Major: key,
|
||||
Minor: end,
|
||||
Ino: math.MaxUint64,
|
||||
},
|
||||
batch: indexXattrBatch,
|
||||
}
|
||||
@@ -1789,7 +1789,7 @@ func (i *IndexSearch) Next() ([]IndexEnt, error) {
|
||||
}
|
||||
|
||||
inodes[i].Inode = e.Ino
|
||||
inodes[i].Value = e.B
|
||||
inodes[i].Value = e.Minor
|
||||
}
|
||||
i.pos = e.increment()
|
||||
|
||||
@@ -1800,9 +1800,9 @@ func (i *IndexSearch) Next() ([]IndexEnt, error) {
|
||||
func (i indexEntry) increment() indexEntry {
|
||||
i.Ino++
|
||||
if i.Ino == 0 {
|
||||
i.B++
|
||||
if i.B == 0 {
|
||||
i.A++
|
||||
i.Minor++
|
||||
if i.Minor == 0 {
|
||||
i.Major++
|
||||
}
|
||||
}
|
||||
return i
|
||||
|
||||
@@ -213,9 +213,10 @@ type getQuotaRules struct {
|
||||
Nr uint64
|
||||
}
|
||||
type indexEntry struct {
|
||||
A uint64
|
||||
B uint64
|
||||
Minor uint64
|
||||
Ino uint64
|
||||
Major uint8
|
||||
X_pad [7]uint8
|
||||
}
|
||||
type readXattrIndex struct {
|
||||
Flags uint64
|
||||
|
||||
Reference in New Issue
Block a user