diff options
| author | Tamás Gulácsi <tgulacsi78+waterhouse@gmail.com> | 2013-01-14 21:42:35 +0100 |
|---|---|---|
| committer | Tamás Gulácsi <tgulacsi78+waterhouse@gmail.com> | 2013-01-14 21:42:35 +0100 |
| commit | f262fed19784ad85d7cfef985f3dfcc09bd7180c (patch) | |
| tree | 9296344b297bfcb50bd3e6b0721cbdd204231c22 /weed-fs/src/cmd/weed | |
| parent | dd685fdd8d8ac6d28dce0d25b72115e3315a30a8 (diff) | |
| download | seaweedfs-f262fed19784ad85d7cfef985f3dfcc09bd7180c.tar.xz seaweedfs-f262fed19784ad85d7cfef985f3dfcc09bd7180c.zip | |
add "freeze" subcommand to volume
Diffstat (limited to 'weed-fs/src/cmd/weed')
| -rw-r--r-- | weed-fs/src/cmd/weed/fix.go | 27 | ||||
| -rw-r--r-- | weed-fs/src/cmd/weed/weed.go | 1 |
2 files changed, 21 insertions, 7 deletions
diff --git a/weed-fs/src/cmd/weed/fix.go b/weed-fs/src/cmd/weed/fix.go index 7bed70edd..53b6cfc75 100644 --- a/weed-fs/src/cmd/weed/fix.go +++ b/weed-fs/src/cmd/weed/fix.go @@ -1,6 +1,7 @@ package main import ( + "errors" "log" "os" "path" @@ -33,24 +34,36 @@ func runFix(cmd *Command, args []string) bool { } fileName := strconv.Itoa(*volumeId) - dataFile, e := os.OpenFile(path.Join(*dir, fileName+".dat"), os.O_RDONLY, 0644) + + if err := createIndexFile(path.Join(*dir, fileName+".dat")); err != nil { + log.Fatalf("[ERROR] " + err.Error()) + } + return true +} + +func createIndexFile(datafn string) error { + dataFile, e := os.OpenFile(datafn, os.O_RDONLY, 0644) if e != nil { - log.Fatalf("Read Volume [ERROR] %s\n", e) + return errors.New("Read Volume " + e.Error()) } defer dataFile.Close() - indexFile, ie := os.OpenFile(path.Join(*dir, fileName+".idx"), os.O_WRONLY|os.O_CREATE, 0644) + // log.Printf("dataFile=%s", dataFile) + indexFile, ie := os.OpenFile(datafn[:len(datafn)-4]+".idx", os.O_WRONLY|os.O_CREATE, 0644) if ie != nil { - log.Fatalf("Create Volume Index [ERROR] %s\n", ie) + return errors.New("Create Volume Index " + ie.Error()) } defer indexFile.Close() dataFile.Seek(0, 0) header := make([]byte, storage.SuperBlockSize) if _, e := dataFile.Read(header); e != nil { - log.Fatalf("cannot read superblock: %s", e) + return errors.New("cannot read superblock: " + e.Error()) } - ver, _, _ := storage.ParseSuperBlock(header) + ver, _, e := storage.ParseSuperBlock(header) + if e != nil { + return errors.New("cannot parse superblock: " + e.Error()) + } n, rest := storage.ReadNeedleHeader(dataFile, ver) dataFile.Seek(int64(rest), 1) @@ -66,5 +79,5 @@ func runFix(cmd *Command, args []string) bool { n, rest = storage.ReadNeedleHeader(dataFile, ver) dataFile.Seek(int64(rest), 1) } - return true + return nil } diff --git a/weed-fs/src/cmd/weed/weed.go b/weed-fs/src/cmd/weed/weed.go index e2eb41ced..685027fb6 100644 --- a/weed-fs/src/cmd/weed/weed.go +++ b/weed-fs/src/cmd/weed/weed.go @@ -21,6 +21,7 @@ var server *string var commands = []*Command{ cmdFix, + cmdFreeze, cmdMaster, cmdUpload, cmdShell, |
