diff options
author | axtloss <axtlos@getcryst.al> | 2024-02-17 19:07:53 +0100 |
---|---|---|
committer | axtloss <axtlos@getcryst.al> | 2024-02-17 19:14:02 +0100 |
commit | 63d3b78538e2e40bd199ee771bcdf9413e542319 (patch) | |
tree | 2381993e25d50aa2f40f478babf52ed4e30c4088 /core/storage.go | |
parent | f57eeabfad55a691ec62e2bda98d4f467d3729b3 (diff) | |
download | fsverify-63d3b78538e2e40bd199ee771bcdf9413e542319.tar.gz fsverify-63d3b78538e2e40bd199ee771bcdf9413e542319.tar.bz2 |
Multithread fsverify
Diffstat (limited to '')
-rw-r--r-- | core/storage.go | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/core/storage.go b/core/storage.go index 8334271..d3dc3da 100644 --- a/core/storage.go +++ b/core/storage.go @@ -2,13 +2,13 @@ package core import ( "bufio" + "bytes" "encoding/binary" "encoding/json" "fmt" + bolt "go.etcd.io/bbolt" "io" "os" - - bolt "go.etcd.io/bbolt" ) type Header struct { @@ -141,6 +141,8 @@ func ReadDB(partition string) (string, error) { db := make([]byte, header.TableSize*header.TableUnit) n, err := io.ReadFull(reader, db) if err != nil { + fmt.Println("failed reading db") + fmt.Println(header.TableSize * header.TableUnit) return "", err } if n != header.TableSize*header.TableUnit { @@ -195,3 +197,14 @@ func GetNode(checksum string, db *bolt.DB) (Node, error) { } return node, err } + +func CopyByteArea(start int, end int, reader *bytes.Reader) ([]byte, error) { + bytes := make([]byte, end-start) + n, err := reader.ReadAt(bytes, int64(start)) + if err != nil { + return nil, err + } else if n != end-start { + return nil, fmt.Errorf("Unable to read requested size. Got %d, expected %d", n, end-start) + } + return bytes, nil +} |