diff --git a/conf/py_client.conf b/conf/py_client.conf index 8cc52ff605..9fd71d7b34 100644 --- a/conf/py_client.conf +++ b/conf/py_client.conf @@ -149,3 +149,9 @@ global.metricDummyServerStartPort=10000 # session map文件,存储打开文件的filename到path的映射 # global.sessionMapPath=./session_map.json + +# +############### 创建文件的配置 ############# +# +create.file.stripeUnit=16384 +create.file.stripeCount=64 \ No newline at end of file diff --git a/src/client/client_config.cpp b/src/client/client_config.cpp index 0875ee7ff5..006c3b4052 100644 --- a/src/client/client_config.cpp +++ b/src/client/client_config.cpp @@ -287,6 +287,14 @@ int ClientConfig::Init(const std::string& configpath) { LOG_IF(WARNING, ret = false) << "config no csBroadCasterOpt.broadCastMaxNum info"; + ret = conf_.GetUInt64Value("create.file.stripeUnit", + &stripeUnit_); + LOG_IF(WARNING, ret = false) << "config no create.file.stripeUnit info"; + + ret = conf_.GetUInt64Value("create.file.stripeCount", + &stripeCount_); + LOG_IF(WARNING, ret = false) << "config no create.file.stripeCount info"; + return 0; } diff --git a/src/client/client_config.h b/src/client/client_config.h index 335fff9bd6..4697c18fcd 100644 --- a/src/client/client_config.h +++ b/src/client/client_config.h @@ -48,9 +48,24 @@ class ClientConfig { uint16_t GetDummyserverStartPort(); + uint64_t GetStripeUnit() const { + return stripeUnit_; + } + + uint64_t GetStripeCount() const { + return stripeCount_; + } + private: FileServiceOption fileServiceOption_; common::Configuration conf_; + + // TODO: if cinder use old-version client but want stripe-volume feature, + // you can add this parameter in the configuration file. + // But this is not an elegant approach; it would be better if Cinder + // could be upgraded to accommodate this. + uint64_t stripeUnit_ = 0; + uint64_t stripeCount_ = 0; }; } // namespace client diff --git a/src/client/libcurve_file.cpp b/src/client/libcurve_file.cpp index 132f91c7fe..114867ac77 100644 --- a/src/client/libcurve_file.cpp +++ b/src/client/libcurve_file.cpp @@ -308,6 +308,12 @@ int FileClient::Create(const std::string& filename, ctx.user = userinfo; ctx.length = size; + if (clientconfig_.GetStripeUnit() > 0 && + clientconfig_.GetStripeCount() > 0) { + ctx.stripeUnit = clientconfig_.GetStripeUnit(); + ctx.stripeCount = clientconfig_.GetStripeCount(); + } + ret = mdsClient_->CreateFile(ctx); LOG_IF(ERROR, ret != LIBCURVE_ERROR::OK) << "Create file failed, filename: " << filename << ", ret: " << ret;