Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions cloud/blockstore/libs/daemon/ydb/bootstrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
#include <cloud/blockstore/libs/service_local/storage_null.h>
#include <cloud/blockstore/libs/spdk/iface/env.h>
#include <cloud/blockstore/libs/spdk/iface/env_stub.h>
#include <cloud/blockstore/libs/storage/core/block_digest_factory.h>
#include <cloud/blockstore/libs/storage/core/manually_preempted_volumes.h>
#include <cloud/blockstore/libs/storage/core/partition_budget_manager.h>
#include <cloud/blockstore/libs/storage/core/probes.h>
Expand Down Expand Up @@ -774,16 +775,10 @@ void TBootstrapYdb::InitKikimrService()

STORAGE_INFO("StatsFetcher initialized");

if (Configs->StorageConfig->GetBlockDigestsEnabled()) {
if (Configs->StorageConfig->GetUseTestBlockDigestGenerator()) {
BlockDigestGenerator = CreateTestBlockDigestGenerator();
} else {
BlockDigestGenerator = CreateExt4BlockDigestGenerator(
Configs->StorageConfig->GetDigestedBlocksPercentage());
}
} else {
BlockDigestGenerator = CreateBlockDigestGeneratorStub();
}
BlockDigestGeneratorFactory = NStorage::CreateBlockDigestGeneratorFactory();
BlockDigestGenerator =
BlockDigestGeneratorFactory->CreateBlockDigestGenerator(
*Configs->StorageConfig);

STORAGE_INFO("DigestGenerator initialized");

Expand Down Expand Up @@ -849,6 +844,7 @@ void TBootstrapYdb::InitKikimrService()
args.Allocator = Allocator;
args.LocalStorageProvider = LocalStorageProvider;
args.ProfileLog = ProfileLog;
args.BlockDigestGeneratorFactory = BlockDigestGeneratorFactory;
args.BlockDigestGenerator = BlockDigestGenerator;
args.TraceSerializer = TraceSerializer;
args.LogbrokerService = LogbrokerService;
Expand Down
1 change: 1 addition & 0 deletions cloud/blockstore/libs/daemon/ydb/bootstrap.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ struct TBootstrapYdb final
ITraceServiceClientPtr TraceServiceClient;
std::function<void(TLog& log)> SpdkLogInitializer;
NStorage::TPartitionBudgetManagerPtr PartitionBudgetManager;
NStorage::IBlockDigestGeneratorFactoryPtr BlockDigestGeneratorFactory;

public:
TBootstrapYdb(
Expand Down
2 changes: 2 additions & 0 deletions cloud/blockstore/libs/diagnostics/block_digest.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ namespace NCloud::NBlockStore {

struct IBlockDigestGenerator
{
virtual ~IBlockDigestGenerator() = default;

virtual TMaybe<ui32> ComputeDigest(
ui64 blockIndex,
TBlockDataRef blockContent) const = 0;
Expand Down
40 changes: 40 additions & 0 deletions cloud/blockstore/libs/storage/core/block_digest_factory.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include "block_digest_factory.h"

#include "config.h"

#include <cloud/blockstore/libs/diagnostics/block_digest.h>

namespace NCloud::NBlockStore::NStorage {

namespace {

////////////////////////////////////////////////////////////////////////////////

struct TBlockDigestGeneratorFactory final: IBlockDigestGeneratorFactory
{
[[nodiscard]] auto CreateBlockDigestGenerator(const TStorageConfig& config)
-> IBlockDigestGeneratorPtr final
{
if (!config.GetBlockDigestsEnabled()) {
return CreateBlockDigestGeneratorStub();
}

if (config.GetUseTestBlockDigestGenerator()) {
return CreateTestBlockDigestGenerator();
}

return CreateExt4BlockDigestGenerator(
config.GetDigestedBlocksPercentage());
}
};

} // namespace

////////////////////////////////////////////////////////////////////////////////

IBlockDigestGeneratorFactoryPtr CreateBlockDigestGeneratorFactory()
{
return std::make_shared<TBlockDigestGeneratorFactory>();
}

} // namespace NCloud::NBlockStore::NStorage
22 changes: 22 additions & 0 deletions cloud/blockstore/libs/storage/core/block_digest_factory.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once
#include "public.h"

#include <cloud/blockstore/libs/diagnostics/public.h>

namespace NCloud::NBlockStore::NStorage {

////////////////////////////////////////////////////////////////////////////////

struct IBlockDigestGeneratorFactory
{
virtual ~IBlockDigestGeneratorFactory() = default;

[[nodiscard]] virtual auto CreateBlockDigestGenerator(
const TStorageConfig& config) -> IBlockDigestGeneratorPtr = 0;
};

////////////////////////////////////////////////////////////////////////////////

IBlockDigestGeneratorFactoryPtr CreateBlockDigestGeneratorFactory();

} // namespace NCloud::NBlockStore::NStorage
3 changes: 3 additions & 0 deletions cloud/blockstore/libs/storage/core/public.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ using TManuallyPreemptedVolumesPtr = std::shared_ptr<TManuallyPreemptedVolumes>;
class TPartitionBudgetManager;
using TPartitionBudgetManagerPtr = std::shared_ptr<TPartitionBudgetManager>;

struct IBlockDigestGeneratorFactory;
using IBlockDigestGeneratorFactoryPtr = std::shared_ptr<IBlockDigestGeneratorFactory>;

////////////////////////////////////////////////////////////////////////////////

enum class EStorageAccessMode
Expand Down
1 change: 1 addition & 0 deletions cloud/blockstore/libs/storage/core/ya.make
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ GENERATE_ENUM_SERIALIZATION(device_operation_tracker.h)
GENERATE_ENUM_SERIALIZATION(mount_token.h)

SRCS(
block_digest_factory.cpp
block_handler.cpp
channel_permissions.cpp
compaction_map.cpp
Expand Down
10 changes: 7 additions & 3 deletions cloud/blockstore/libs/storage/init/server/actorsystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ class TStorageServicesInitializer final
Args.StorageConfig,
Args.DiagnosticsConfig,
Args.ProfileLog,
Args.BlockDigestGenerator,
Args.BlockDigestGeneratorFactory,
Args.DiscoveryService,
Args.TraceSerializer,
Args.EndpointEventHandler,
Expand Down Expand Up @@ -383,6 +383,7 @@ class TCustomLocalServiceInitializer final
const TStorageConfigPtr StorageConfig;
const TDiagnosticsConfigPtr DiagnosticsConfig;
const IProfileLogPtr ProfileLog;
const IBlockDigestGeneratorFactoryPtr BlockDigestGeneratorFactory;
const IBlockDigestGeneratorPtr BlockDigestGenerator;
const ITraceSerializerPtr TraceSerializer;
const NLogbroker::IServicePtr LogbrokerService;
Expand All @@ -400,6 +401,7 @@ class TCustomLocalServiceInitializer final
TStorageConfigPtr storageConfig,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
IBlockDigestGeneratorPtr blockDigestGenerator,
ITraceSerializerPtr traceSerializer,
NLogbroker::IServicePtr logbrokerService,
Expand All @@ -414,6 +416,7 @@ class TCustomLocalServiceInitializer final
, StorageConfig(std::move(storageConfig))
, DiagnosticsConfig(std::move(diagnosticsConfig))
, ProfileLog(std::move(profileLog))
, BlockDigestGeneratorFactory(std::move(blockDigestGeneratorFactory))
, BlockDigestGenerator(std::move(blockDigestGenerator))
, TraceSerializer(std::move(traceSerializer))
, LogbrokerService(std::move(logbrokerService))
Expand All @@ -432,7 +435,7 @@ class TCustomLocalServiceInitializer final
auto storageConfig = StorageConfig;
auto diagnosticsConfig = DiagnosticsConfig;
auto profileLog = ProfileLog;
auto blockDigestGenerator = BlockDigestGenerator;
auto blockDigestGeneratorFactory = BlockDigestGeneratorFactory;
auto traceSerializer = TraceSerializer;
auto logbrokerService = LogbrokerService;
auto notifyService = NotifyService;
Expand All @@ -450,7 +453,7 @@ class TCustomLocalServiceInitializer final
storageConfig,
diagnosticsConfig,
profileLog,
blockDigestGenerator,
blockDigestGeneratorFactory,
traceSerializer,
rdmaClient,
partitionBudgetManager,
Expand Down Expand Up @@ -580,6 +583,7 @@ IActorSystemPtr CreateActorSystem(const TServerActorSystemArgs& sArgs)
sArgs.StorageConfig,
sArgs.DiagnosticsConfig,
sArgs.ProfileLog,
sArgs.BlockDigestGeneratorFactory,
sArgs.BlockDigestGenerator,
sArgs.TraceSerializer,
sArgs.LogbrokerService,
Expand Down
1 change: 1 addition & 0 deletions cloud/blockstore/libs/storage/init/server/actorsystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ struct TServerActorSystemArgs
IStorageProviderPtr LocalStorageProvider;
IProfileLogPtr ProfileLog;
IBlockDigestGeneratorPtr BlockDigestGenerator;
IBlockDigestGeneratorFactoryPtr BlockDigestGeneratorFactory;
ITraceSerializerPtr TraceSerializer;
NLogbroker::IServicePtr LogbrokerService;
NNotify::IServicePtr NotifyService;
Expand Down
4 changes: 2 additions & 2 deletions cloud/blockstore/libs/storage/service/service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ IActorPtr CreateStorageService(
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
NDiscovery::IDiscoveryServicePtr discoveryService,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
Expand All @@ -27,7 +27,7 @@ IActorPtr CreateStorageService(
std::move(config),
std::move(diagnosticsConfig),
std::move(profileLog),
std::move(blockDigestGenerator),
std::move(blockDigestGeneratorFactory),
std::move(discoveryService),
std::move(traceSerializer),
std::move(endpointEventHandler),
Expand Down
2 changes: 1 addition & 1 deletion cloud/blockstore/libs/storage/service/service.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ NActors::IActorPtr CreateStorageService(
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
NDiscovery::IDiscoveryServicePtr discoveryService,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
Expand Down
4 changes: 2 additions & 2 deletions cloud/blockstore/libs/storage/service/service_actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ TServiceActor::TServiceActor(
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
NDiscovery::IDiscoveryServicePtr discoveryService,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
Expand All @@ -33,7 +33,7 @@ TServiceActor::TServiceActor(
: Config(std::move(config))
, DiagnosticsConfig(std::move(diagnosticsConfig))
, ProfileLog(std::move(profileLog))
, BlockDigestGenerator(std::move(blockDigestGenerator))
, BlockDigestGeneratorFactory(std::move(blockDigestGeneratorFactory))
, DiscoveryService(std::move(discoveryService))
, TraceSerializer(std::move(traceSerializer))
, EndpointEventHandler(std::move(endpointEventHandler))
Expand Down
6 changes: 3 additions & 3 deletions cloud/blockstore/libs/storage/service/service_actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class TServiceActor final
const TStorageConfigPtr Config;
const TDiagnosticsConfigPtr DiagnosticsConfig;
const IProfileLogPtr ProfileLog;
const IBlockDigestGeneratorPtr BlockDigestGenerator;
const IBlockDigestGeneratorFactoryPtr BlockDigestGeneratorFactory;
const NDiscovery::IDiscoveryServicePtr DiscoveryService;
const ITraceSerializerPtr TraceSerializer;
const NServer::IEndpointEventHandlerPtr EndpointEventHandler;
Expand Down Expand Up @@ -72,7 +72,7 @@ class TServiceActor final
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
NDiscovery::IDiscoveryServicePtr discoveryService,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
Expand Down Expand Up @@ -496,7 +496,7 @@ NActors::IActorPtr CreateVolumeSessionActor(
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
NCloud::NStorage::NRdma::IClientPtr rdmaClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ void TServiceActor::HandleMountVolume(
Config,
DiagnosticsConfig,
ProfileLog,
BlockDigestGenerator,
BlockDigestGeneratorFactory,
TraceSerializer,
EndpointEventHandler,
RdmaClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ IActorPtr CreateVolumeSessionActor(
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
NCloud::NStorage::NRdma::IClientPtr rdmaClient,
Expand All @@ -396,7 +396,7 @@ IActorPtr CreateVolumeSessionActor(
std::move(config),
std::move(diagnosticsConfig),
std::move(profileLog),
std::move(blockDigestGenerator),
std::move(blockDigestGeneratorFactory),
std::move(traceSerializer),
std::move(endpointEventHandler),
std::move(rdmaClient),
Expand All @@ -407,6 +407,4 @@ IActorPtr CreateVolumeSessionActor(
temporaryServer);
}

////////////////////////////////////////////////////////////////////////////////

} // namespace NCloud::NBlockStore::NStorage
6 changes: 3 additions & 3 deletions cloud/blockstore/libs/storage/service/volume_session_actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class TVolumeSessionActor final
const TStorageConfigPtr Config;
const TDiagnosticsConfigPtr DiagnosticsConfig;
const IProfileLogPtr ProfileLog;
const IBlockDigestGeneratorPtr BlockDigestGenerator;
const IBlockDigestGeneratorFactoryPtr BlockDigestGeneratorFactory;
const ITraceSerializerPtr TraceSerializer;
const NServer::IEndpointEventHandlerPtr EndpointEventHandler;
const NCloud::NStorage::NRdma::IClientPtr RdmaClient;
Expand Down Expand Up @@ -96,7 +96,7 @@ class TVolumeSessionActor final
TStorageConfigPtr config,
TDiagnosticsConfigPtr diagnosticsConfig,
IProfileLogPtr profileLog,
IBlockDigestGeneratorPtr blockDigestGenerator,
IBlockDigestGeneratorFactoryPtr blockDigestGeneratorFactory,
ITraceSerializerPtr traceSerializer,
NServer::IEndpointEventHandlerPtr endpointEventHandler,
NCloud::NStorage::NRdma::IClientPtr rdmaClient,
Expand All @@ -109,7 +109,7 @@ class TVolumeSessionActor final
, Config(std::move(config))
, DiagnosticsConfig(std::move(diagnosticsConfig))
, ProfileLog(std::move(profileLog))
, BlockDigestGenerator(std::move(blockDigestGenerator))
, BlockDigestGeneratorFactory(std::move(blockDigestGeneratorFactory))
, TraceSerializer(std::move(traceSerializer))
, EndpointEventHandler(std::move(endpointEventHandler))
, RdmaClient(std::move(rdmaClient))
Expand Down
Loading
Loading