aboutsummaryrefslogtreecommitdiff
path: root/weed/server
diff options
context:
space:
mode:
Diffstat (limited to 'weed/server')
-rw-r--r--weed/server/volume_grpc_copy.go4
-rw-r--r--weed/server/volume_grpc_erasure_coding.go5
2 files changed, 7 insertions, 2 deletions
diff --git a/weed/server/volume_grpc_copy.go b/weed/server/volume_grpc_copy.go
index 6548b7c56..d34a74f55 100644
--- a/weed/server/volume_grpc_copy.go
+++ b/weed/server/volume_grpc_copy.go
@@ -63,7 +63,9 @@ func (vs *VolumeServer) VolumeCopy(req *volume_server_pb.VolumeCopyRequest, stre
if req.DiskType != "" {
diskType = req.DiskType
}
- location := vs.store.FindFreeLocation(types.ToDiskType(diskType))
+ location := vs.store.FindFreeLocation(func(location *storage.DiskLocation) bool {
+ return location.DiskType == types.ToDiskType(diskType)
+ })
if location == nil {
return fmt.Errorf("no space left for disk type %s", types.ToDiskType(diskType).ReadableString())
}
diff --git a/weed/server/volume_grpc_erasure_coding.go b/weed/server/volume_grpc_erasure_coding.go
index e4346dffe..546bf8109 100644
--- a/weed/server/volume_grpc_erasure_coding.go
+++ b/weed/server/volume_grpc_erasure_coding.go
@@ -143,7 +143,10 @@ func (vs *VolumeServer) VolumeEcShardsCopy(ctx context.Context, req *volume_serv
glog.V(0).Infof("VolumeEcShardsCopy: %v", req)
- location := vs.store.FindFreeLocation(types.HardDriveType)
+ location := vs.store.FindFreeLocation(func(location *storage.DiskLocation) bool {
+ _, found := location.FindEcVolume(needle.VolumeId(req.VolumeId))
+ return found
+ })
if location == nil {
return nil, fmt.Errorf("no space left")
}