mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-10-15 20:06:19 +08:00
add more for volume placement
fix possible nil volume cases
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
@@ -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")
|
||||
}
|
||||
|
Reference in New Issue
Block a user