aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2014-05-19 19:24:35 -0700
committerChris Lu <chris.lu@gmail.com>2014-05-19 19:24:35 -0700
commite7aaa24da85eaf5637a2ff3e4bac4082c17d708c (patch)
treec853f221370f8f6373cd93a7bcb0c9d3801524cf
parente8e8d11bd3470e19aa20a965c23d74d2952deec9 (diff)
downloadseaweedfs-e7aaa24da85eaf5637a2ff3e4bac4082c17d708c.tar.xz
seaweedfs-e7aaa24da85eaf5637a2ff3e4bac4082c17d708c.zip
Refactor out volume vacuum.
-rw-r--r--go/storage/volume.go28
-rw-r--r--go/storage/volume_vacuum.go35
2 files changed, 35 insertions, 28 deletions
diff --git a/go/storage/volume.go b/go/storage/volume.go
index 9ec112c57..bfdac8edf 100644
--- a/go/storage/volume.go
+++ b/go/storage/volume.go
@@ -281,34 +281,6 @@ func (v *Volume) read(n *Needle) (int, error) {
return -1, errors.New("Not Found")
}
-func (v *Volume) garbageLevel() float64 {
- return float64(v.nm.DeletedSize()) / float64(v.ContentSize())
-}
-
-func (v *Volume) Compact() error {
- v.accessLock.Lock()
- defer v.accessLock.Unlock()
-
- filePath := v.FileName()
- glog.V(3).Infof("creating copies for volume %d ...", v.Id)
- return v.copyDataAndGenerateIndexFile(filePath+".cpd", filePath+".cpx")
-}
-func (v *Volume) commitCompact() error {
- v.accessLock.Lock()
- defer v.accessLock.Unlock()
- _ = v.dataFile.Close()
- var e error
- if e = os.Rename(v.FileName()+".cpd", v.FileName()+".dat"); e != nil {
- return e
- }
- if e = os.Rename(v.FileName()+".cpx", v.FileName()+".idx"); e != nil {
- return e
- }
- if e = v.load(true, false); e != nil {
- return e
- }
- return nil
-}
func (v *Volume) freeze() error {
if v.readOnly {
return nil
diff --git a/go/storage/volume_vacuum.go b/go/storage/volume_vacuum.go
new file mode 100644
index 000000000..8b36bb378
--- /dev/null
+++ b/go/storage/volume_vacuum.go
@@ -0,0 +1,35 @@
+package storage
+
+import (
+ "code.google.com/p/weed-fs/go/glog"
+ "os"
+)
+
+func (v *Volume) garbageLevel() float64 {
+ return float64(v.nm.DeletedSize()) / float64(v.ContentSize())
+}
+
+func (v *Volume) Compact() error {
+ v.accessLock.Lock()
+ defer v.accessLock.Unlock()
+
+ filePath := v.FileName()
+ glog.V(3).Infof("creating copies for volume %d ...", v.Id)
+ return v.copyDataAndGenerateIndexFile(filePath+".cpd", filePath+".cpx")
+}
+func (v *Volume) commitCompact() error {
+ v.accessLock.Lock()
+ defer v.accessLock.Unlock()
+ _ = v.dataFile.Close()
+ var e error
+ if e = os.Rename(v.FileName()+".cpd", v.FileName()+".dat"); e != nil {
+ return e
+ }
+ if e = os.Rename(v.FileName()+".cpx", v.FileName()+".idx"); e != nil {
+ return e
+ }
+ if e = v.load(true, false); e != nil {
+ return e
+ }
+ return nil
+}