add more for volume placement

fix possible nil volume cases
This commit is contained in:
Chris Lu
2012-08-27 13:52:02 -07:00
parent c72f10511a
commit 2dceb44ae4
6 changed files with 68 additions and 24 deletions

View File

@@ -1,21 +1,13 @@
package storage
import (
"syscall"
)
type StorageLimit struct {
sizeLimit uint64
detectedLimit uint64
}
func NewStorageLimit(desiredLimit uint64) *StorageLimit {
s := syscall.Statfs_t{}
errNo := syscall.Statfs(".", &s)
detected := uint64(0)
if errNo==nil {
detected = s.Bavail*uint64(s.Bsize)
}
sl := &StorageLimit{sizeLimit: desiredLimit, detectedLimit: detected}
sl := &StorageLimit{sizeLimit: desiredLimit}
return sl
}

View File

@@ -1,11 +0,0 @@
package storage
import (
"testing"
)
func TestReadStorageLimit(t *testing.T) {
sl := NewStorageLimit(1000)
println("detected:",sl.detectedLimit)
}

View File

@@ -89,11 +89,23 @@ func (s *Store) Close() {
}
}
func (s *Store) Write(i VolumeId, n *Needle) uint32 {
return s.volumes[i].write(n)
v := s.volumes[i]
if v!=nil{
return v.write(n)
}
return 0
}
func (s *Store) Delete(i VolumeId, n *Needle) uint32 {
return s.volumes[i].delete(n)
v := s.volumes[i]
if v!=nil{
return v.delete(n)
}
return 0
}
func (s *Store) Read(i VolumeId, n *Needle) (int, error) {
return s.volumes[i].read(n)
v := s.volumes[i]
if v!=nil{
return v.read(n)
}
return 0, errors.New("Not Found")
}