diff options
| author | Chris Lu <chris.lu@gmail.com> | 2018-06-24 11:37:08 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2018-06-24 11:37:08 -0700 |
| commit | 9ba335a7c4db23853fc875245477eeeead06c162 (patch) | |
| tree | cf0401154225608e81624e87d185afe2923bf4fe /unmaintained/fix_dat | |
| parent | b46cf2bb0e95c0eed5ac2a398f1515950b74635e (diff) | |
| download | seaweedfs-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.go | 23 |
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) |
