aboutsummaryrefslogtreecommitdiff
path: root/unmaintained/fix_dat
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-06-24 11:37:08 -0700
committerChris Lu <chris.lu@gmail.com>2018-06-24 11:37:08 -0700
commit9ba335a7c4db23853fc875245477eeeead06c162 (patch)
treecf0401154225608e81624e87d185afe2923bf4fe /unmaintained/fix_dat
parentb46cf2bb0e95c0eed5ac2a398f1515950b74635e (diff)
downloadseaweedfs-9ba335a7c4db23853fc875245477eeeead06c162.tar.xz
seaweedfs-9ba335a7c4db23853fc875245477eeeead06c162.zip
prepare for flexible super block
Diffstat (limited to 'unmaintained/fix_dat')
-rw-r--r--unmaintained/fix_dat/fix_dat.go23
1 files changed, 15 insertions, 8 deletions
diff --git a/unmaintained/fix_dat/fix_dat.go b/unmaintained/fix_dat/fix_dat.go
index 1f95e6cd6..3316395dc 100644
--- a/unmaintained/fix_dat/fix_dat.go
+++ b/unmaintained/fix_dat/fix_dat.go
@@ -39,24 +39,26 @@ func main() {
}
indexFile, err := os.OpenFile(path.Join(*fixVolumePath, fileName+".idx"), os.O_RDONLY, 0644)
if err != nil {
- glog.Fatalf("Read Volume Index [ERROR] %s\n", err)
+ glog.Fatalf("Read Volume Index %v", err)
}
defer indexFile.Close()
datFile, err := os.OpenFile(path.Join(*fixVolumePath, fileName+".dat"), os.O_RDONLY, 0644)
if err != nil {
- glog.Fatalf("Read Volume Data [ERROR] %s\n", err)
+ glog.Fatalf("Read Volume Data %v", err)
}
defer datFile.Close()
newDatFile, err := os.Create(path.Join(*fixVolumePath, fileName+".dat_fixed"))
if err != nil {
- glog.Fatalf("Write New Volume Data [ERROR] %s\n", err)
+ glog.Fatalf("Write New Volume Data %v", err)
}
defer newDatFile.Close()
- header := make([]byte, storage.SuperBlockSize)
- datFile.Read(header)
- newDatFile.Write(header)
+ superBlock, err := storage.ReadSuperBlock(datFile)
+ if err != nil {
+ glog.Fatalf("Read Volume Data superblock %v", err)
+ }
+ newDatFile.Write(superBlock.Bytes())
iterateEntries(datFile, indexFile, func(n *storage.Needle, offset int64) {
fmt.Printf("file id=%d name=%s size=%d dataSize=%d\n", n.Id, string(n.Name), n.Size, n.DataSize)
@@ -74,8 +76,13 @@ func iterateEntries(datFile, idxFile *os.File, visitNeedle func(n *storage.Needl
readerOffset += int64(count)
// start to read dat file
- offset := int64(storage.SuperBlockSize)
- version := storage.Version2
+ superblock, err := storage.ReadSuperBlock(datFile)
+ if err != nil {
+ fmt.Printf("cannot read dat file super block: %v", err)
+ return
+ }
+ offset := int64(superblock.BlockSize())
+ version := superblock.Version()
n, rest, err := storage.ReadNeedleHeader(datFile, version, offset)
if err != nil {
fmt.Printf("cannot read needle header: %v", err)