From 37b64a50b4da90637f3f17a2b4bd79f55cbd3098 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 28 Dec 2019 12:44:59 -0800 Subject: ec: generate and copy .vif file --- weed/server/volume_grpc_erasure_coding.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'weed/server/volume_grpc_erasure_coding.go') diff --git a/weed/server/volume_grpc_erasure_coding.go b/weed/server/volume_grpc_erasure_coding.go index 777801796..d4b0e294e 100644 --- a/weed/server/volume_grpc_erasure_coding.go +++ b/weed/server/volume_grpc_erasure_coding.go @@ -13,6 +13,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/operation" + "github.com/chrislusf/seaweedfs/weed/pb" "github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" "github.com/chrislusf/seaweedfs/weed/storage" "github.com/chrislusf/seaweedfs/weed/storage/erasure_coding" @@ -57,6 +58,12 @@ func (vs *VolumeServer) VolumeEcShardsGenerate(ctx context.Context, req *volume_ return nil, fmt.Errorf("WriteEcFiles %s: %v", baseFileName, err) } + // write .vif files + if err := pb.SaveVolumeInfo(baseFileName+".vif", &volume_server_pb.VolumeInfo{Version: uint32(v.Version())}); err != nil { + return nil, fmt.Errorf("WriteEcFiles %s: %v", baseFileName, err) + } + + return &volume_server_pb.VolumeEcShardsGenerateResponse{}, nil } @@ -124,6 +131,14 @@ func (vs *VolumeServer) VolumeEcShardsCopy(ctx context.Context, req *volume_serv return err } } + + if req.CopyVifFile { + // copy vif file + if err := vs.doCopyFile(ctx, client, true, req.Collection, req.VolumeId, math.MaxUint32, math.MaxInt64, baseFileName, ".vif", false, true); err != nil { + return err + } + } + return nil }) if err != nil { @@ -185,6 +200,9 @@ func (vs *VolumeServer) VolumeEcShardsDelete(ctx context.Context, req *volume_se if err := os.Remove(baseFilename + ".ecj"); err != nil { return nil, err } + if err := os.Remove(baseFilename + ".vif"); err != nil { + return nil, err + } } return &volume_server_pb.VolumeEcShardsDeleteResponse{}, nil -- cgit v1.2.3