aboutsummaryrefslogtreecommitdiff
path: root/weed
diff options
context:
space:
mode:
Diffstat (limited to 'weed')
-rw-r--r--weed/server/volume_grpc_erasure_coding.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/weed/server/volume_grpc_erasure_coding.go b/weed/server/volume_grpc_erasure_coding.go
index 546bf8109..dd51894c5 100644
--- a/weed/server/volume_grpc_erasure_coding.go
+++ b/weed/server/volume_grpc_erasure_coding.go
@@ -143,10 +143,17 @@ func (vs *VolumeServer) VolumeEcShardsCopy(ctx context.Context, req *volume_serv
glog.V(0).Infof("VolumeEcShardsCopy: %v", req)
- location := vs.store.FindFreeLocation(func(location *storage.DiskLocation) bool {
- _, found := location.FindEcVolume(needle.VolumeId(req.VolumeId))
- return found
- })
+ var location *storage.DiskLocation
+ if req.CopyEcxFile {
+ location = vs.store.FindFreeLocation(func(location *storage.DiskLocation) bool {
+ return location.DiskType == types.HardDriveType
+ })
+ } else {
+ 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")
}