add more for volume placement

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

No files matched your search

+1 -9
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
}
@@ -1,11 +0,0 @@
package storage
import (
"testing"
)
func TestReadStorageLimit(t *testing.T) {
sl := NewStorageLimit(1000)
println("detected:",sl.detectedLimit)
}
+15 -3
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")
}