基本信息
源码名称:curve-v1.2.6高可靠分布式存储系统
源码大小:7.78M
文件格式:.zip
开发语言:C/C++
更新时间:2022-12-17
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 10 元×
微信扫码支付:10 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
curve-v1.2.6高可靠分布式存储系统
curve是网易开源的高性能、高可用、高可靠分布式存储系统,具有非常良好的扩展性。基于该存储底座可以打造适用于不同应用场景的存储系统,如块存储、对象存储、云原生数据库等。curve的设计开发始终围绕三个理念:一是顺应当前存储硬件设施发展趋势,做到软硬件结合打造顶级的存储产品;二是秉持“Simple Can be harder than complex”,了解问题本质情况下选
.
├── curve-1.2.6
│ ├── BUILD
│ ├── CHANGELOG-1.0.md
│ ├── CHANGELOG-1.1.md
│ ├── CHANGELOG-1.2.md
│ ├── CONTRIBUTING.md
│ ├── Dockerfile
│ ├── LICENSE
│ ├── LICENSE_APACHE
│ ├── LICENSE_GPL
│ ├── LICENSE_LGPL
│ ├── Makefile
│ ├── README.md
│ ├── README_en.md
│ ├── WORKSPACE
│ ├── bazel
│ │ ├── etcdclient.BUILD
│ │ ├── gflags.BUILD
│ │ ├── glog.BUILD
│ │ ├── gmock.BUILD
│ │ ├── gtest.BUILD
│ │ ├── jsoncpp.BUILD
│ │ └── leveldb.BUILD
│ ├── build.sh
│ ├── common.bzl
│ ├── conf
│ │ ├── chunkserver.conf
│ │ ├── chunkserver.conf.example
│ │ ├── client.conf
│ │ ├── cs_client.conf
│ │ ├── etcd.conf
│ │ ├── mds.conf
│ │ ├── nginx.conf
│ │ ├── py_client.conf
│ │ ├── s3.conf
│ │ ├── snap_client.conf
│ │ ├── snapshot_clone_server.conf
│ │ └── tools.conf
│ ├── copts.bzl
│ ├── coverage
│ │ ├── check_coverage.sh
│ │ ├── filterbr.py
│ │ ├── gen-coverage-nebd.py
│ │ ├── gen-coverage.py
│ │ ├── gen-coverage2.py
│ │ ├── ut_incremental_check.py
│ │ └── ut_incremental_check_nebd.py
│ ├── curve-ansible
│ │ ├── README.md
│ │ ├── check_ansible_version.yml
│ │ ├── check_chunkserver.yml
│ │ ├── check_debain_package.yml
│ │ ├── check_mds.yml
│ │ ├── clean_curve.yml
│ │ ├── clean_curve_sdk.yml
│ │ ├── clean_nbd.yml
│ │ ├── clean_nebd.yml
│ │ ├── client.ini
│ │ ├── common_tasks
│ │ │ ├── check_chunkserver.yml
│ │ │ ├── check_cluster_healthy_status.yml
│ │ │ ├── check_debain_package.yml
│ │ │ ├── check_docker_exists.yml
│ │ │ ├── check_if_nbd_exists_in_kernel.yml
│ │ │ ├── check_mds.yml
│ │ │ ├── create_dir.yml
│ │ │ ├── create_logical_pool.yml
│ │ │ ├── create_physical_pool.yml
│ │ │ ├── get_chunkserver_number.yml
│ │ │ ├── get_curve_version_from_metric.yml
│ │ │ ├── get_distro_name.yml
│ │ │ ├── get_nebd_version_from_metric.yml
│ │ │ ├── install_with_yum_apt.yml
│ │ │ ├── restart_service.yml
│ │ │ ├── start_service.yml
│ │ │ ├── stop_service.yml
│ │ │ ├── update_config_with_puppet.yml
│ │ │ ├── update_package.yml
│ │ │ ├── wait_copysets_status_healthy.yml
│ │ │ ├── wait_until_server_down.yml
│ │ │ └── wait_until_server_up.yml
│ │ ├── deploy_curve.yml
│ │ ├── deploy_curve_sdk.yml
│ │ ├── deploy_monitor.yml
│ │ ├── deploy_nbd.yml
│ │ ├── deploy_nebd.yml
│ │ ├── deploy_walpool.yml
│ │ ├── group_vars
│ │ │ ├── chunkservers.yml
│ │ │ └── mds.yml
│ │ ├── host_vars
│ │ │ └── localhost.yml
│ │ ├── ping.yml
│ │ ├── roles
│ │ │ ├── clean
│ │ │ │ ├── files
│ │ │ │ │ └── recycle_chunks.sh
│ │ │ │ └── tasks
│ │ │ │ ├── include
│ │ │ │ │ ├── clean_chunkserver.yml
│ │ │ │ │ ├── clean_chunkserver_retain_chunkfilepool.yml
│ │ │ │ │ ├── clean_chunkserver_totally.yml
│ │ │ │ │ ├── clean_chunkserver_with_disk_format.yml
│ │ │ │ │ ├── clean_chunkserver_without_disk_format.yml
│ │ │ │ │ ├── clean_curve_sdk.yml
│ │ │ │ │ ├── clean_etcd.yml
│ │ │ │ │ ├── clean_mds.yml
│ │ │ │ │ ├── clean_nbd.yml
│ │ │ │ │ ├── clean_nebd.yml
│ │ │ │ │ ├── clean_snapshotcloneserver.yml
│ │ │ │ │ └── clean_snapshotcloneserver_nginx.yml
│ │ │ │ └── main.yml
│ │ │ ├── format_chunkserver
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ └── tasks
│ │ │ │ ├── include
│ │ │ │ │ ├── prepare_chunkserver_with_disk_format.yml
│ │ │ │ │ └── prepare_chunkserver_without_disk_format.yml
│ │ │ │ └── main.yml
│ │ │ ├── generate_config
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ └── generate_config_with_template.yml
│ │ │ │ │ └── main.yml
│ │ │ │ ├── templates
│ │ │ │ │ ├── chunkserver.conf.j2
│ │ │ │ │ ├── client.conf.j2
│ │ │ │ │ ├── docker-compose.yml.j2
│ │ │ │ │ ├── etcd.conf.yml.j2
│ │ │ │ │ ├── grafana.ini.j2
│ │ │ │ │ ├── mds.conf.j2
│ │ │ │ │ ├── nebd-client.conf.j2
│ │ │ │ │ ├── nebd-server.conf.j2
│ │ │ │ │ ├── nginx.conf.j2
│ │ │ │ │ ├── nginx_config.lua.j2
│ │ │ │ │ ├── prometheus.yml.j2
│ │ │ │ │ ├── s3.conf.j2
│ │ │ │ │ ├── snapshot_clone_server.conf.j2
│ │ │ │ │ ├── snapshot_tools.conf.j2
│ │ │ │ │ ├── tools.conf.j2
│ │ │ │ │ └── topo.json.j2
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── grafana_settings
│ │ │ │ └── tasks
│ │ │ │ └── main.yml
│ │ │ ├── install_package
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── files
│ │ │ │ │ └── disk_uuid_repair.py
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── copy_file_to_remote.yml
│ │ │ │ │ │ ├── install_curve-chunkserver.yml
│ │ │ │ │ │ ├── install_curve-mds.yml
│ │ │ │ │ │ ├── install_curve-monitor.yml
│ │ │ │ │ │ ├── install_curve-nbd.yml
│ │ │ │ │ │ ├── install_curve-sdk.yml
│ │ │ │ │ │ ├── install_curve-snapshotcloneserver-nginx.yml
│ │ │ │ │ │ ├── install_curve-snapshotcloneserver.yml
│ │ │ │ │ │ ├── install_curve-tools.yml
│ │ │ │ │ │ ├── install_daemon.yml
│ │ │ │ │ │ ├── install_deb_package.yml
│ │ │ │ │ │ ├── install_etcd-daemon.yml
│ │ │ │ │ │ ├── install_etcd.yml
│ │ │ │ │ │ ├── install_jemalloc.yml
│ │ │ │ │ │ ├── install_nebd.yml
│ │ │ │ │ │ ├── install_with_source_code.yml
│ │ │ │ │ │ └── set_curve_lib_dir.yml
│ │ │ │ │ └── main.yml
│ │ │ │ ├── templates
│ │ │ │ │ ├── chunkserver_ctl.sh.j2
│ │ │ │ │ ├── chunkserver_deploy.sh.j2
│ │ │ │ │ ├── etcd-daemon.sh.j2
│ │ │ │ │ ├── mds-daemon.sh.j2
│ │ │ │ │ ├── nebd-daemon.j2
│ │ │ │ │ └── snapshot-daemon.sh.j2
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── prepare_software_env
│ │ │ │ └── tasks
│ │ │ │ └── main.yml
│ │ │ ├── rapid_leader_schedule
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── tasks
│ │ │ │ │ └── main.yml
│ │ │ │ └── templates
│ │ │ │ └── check_leader_range.sh.j2
│ │ │ ├── restart_service
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── append_need_restart_cs_list.yml
│ │ │ │ │ │ ├── check_version_after_restart.yml
│ │ │ │ │ │ ├── restart_chunkserver.yml
│ │ │ │ │ │ ├── restart_etcd.yml
│ │ │ │ │ │ ├── restart_mds.yml
│ │ │ │ │ │ ├── restart_nebd.yml
│ │ │ │ │ │ └── restart_snapshotclone.yml
│ │ │ │ │ └── main.yml
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── set_leader_and_follower_list
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── get_all_ip.yml
│ │ │ │ │ │ ├── get_etcd_leader_ip.yml
│ │ │ │ │ │ ├── get_mds_leader_ip.yml
│ │ │ │ │ │ └── get_snapshot_leader_ip.yml
│ │ │ │ │ └── main.yml
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── start_service
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── start_chunkserver.yml
│ │ │ │ │ │ ├── start_etcd.yml
│ │ │ │ │ │ ├── start_mds.yml
│ │ │ │ │ │ ├── start_monitor.yml
│ │ │ │ │ │ ├── start_nebd.yml
│ │ │ │ │ │ ├── start_snapshotcloneserver.yml
│ │ │ │ │ │ └── start_snapshotcloneserver_nginx.yml
│ │ │ │ │ └── main.yml
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ └── stop_service
│ │ │ ├── tasks
│ │ │ │ ├── include
│ │ │ │ │ ├── stop_chunkserver.yml
│ │ │ │ │ ├── stop_etcd.yml
│ │ │ │ │ ├── stop_mds.yml
│ │ │ │ │ ├── stop_nebd.yml
│ │ │ │ │ ├── stop_snapshotcloneserver.yml
│ │ │ │ │ └── stop_snapshotcloneserver_nginx.yml
│ │ │ │ └── main.yml
│ │ │ └── vars
│ │ │ └── main.yml
│ │ ├── rolling_update_curve.yml
│ │ ├── rolling_update_curve_sdk.yml
│ │ ├── rolling_update_nbd.yml
│ │ ├── rolling_update_nebd.yml
│ │ ├── server.ini
│ │ ├── start_curve.yml
│ │ ├── start_nebd_server.yml
│ │ ├── stop_curve.yml
│ │ └── stop_nebd_server.yml
│ ├── curve-chunkserver
│ │ └── DEBIAN
│ │ └── control
│ ├── curve-mds
│ │ └── DEBIAN
│ │ ├── control
│ │ └── postinst
│ ├── curve-monitor
│ │ └── DEBIAN
│ │ └── control
│ ├── curve-nginx
│ │ └── DEBIAN
│ │ └── control
│ ├── curve-sdk
│ │ └── DEBIAN
│ │ ├── control
│ │ └── postinst
│ ├── curve-snapshotcloneserver
│ │ └── DEBIAN
│ │ ├── control
│ │ └── postinst
│ ├── curve-snapshotcloneserver-nginx
│ │ ├── app
│ │ │ ├── etc
│ │ │ │ └── config.lua
│ │ │ ├── lib
│ │ │ │ └── resty
│ │ │ │ ├── argutils.lua
│ │ │ │ ├── checkups
│ │ │ │ │ ├── api.lua
│ │ │ │ │ ├── base.lua
│ │ │ │ │ ├── consistent_hash.lua
│ │ │ │ │ ├── dyconfig.lua
│ │ │ │ │ ├── heartbeat.lua
│ │ │ │ │ ├── round_robin.lua
│ │ │ │ │ └── try.lua
│ │ │ │ ├── checkups.lua
│ │ │ │ └── uuid.lua
│ │ │ └── src
│ │ │ ├── init.lua
│ │ │ ├── init_worker.lua
│ │ │ ├── modules
│ │ │ │ ├── httpipe.lua
│ │ │ │ ├── httproxy.lua
│ │ │ │ ├── reqlimit.lua
│ │ │ │ └── utils.lua
│ │ │ └── snapshot.lua
│ │ ├── conf
│ │ │ ├── mime.types
│ │ │ └── nginx.conf
│ │ └── docker
│ │ └── Dockerfile
│ ├── curve-tools
│ │ └── DEBIAN
│ │ └── control
│ ├── curvefs_python
│ │ ├── BUILD_bak
│ │ ├── README
│ │ ├── __init__.py
│ │ ├── cbd_client.cpp
│ │ ├── cbd_client.h
│ │ ├── client.conf
│ │ ├── configure.sh
│ │ ├── curve
│ │ ├── curve_type.h
│ │ ├── curvefs.i
│ │ ├── curvefs.py
│ │ ├── curvefs_tool.py
│ │ ├── curvefs_wrap.cxx
│ │ ├── libcurvefs.h
│ │ ├── parser.py
│ │ ├── setup.py
│ │ └── test.py
│ ├── curvesnapshot_python
│ │ ├── BUILD_bak
│ │ ├── README
│ │ ├── __init__.py
│ │ ├── client.conf
│ │ ├── configure.sh
│ │ ├── curvesnapshot.py
│ │ ├── libcurveSnapshot.cpp
│ │ ├── libcurveSnapshot.h
│ │ ├── libcurve_snapshot.i
│ │ ├── libcurve_snapshot_wrap.cxx
│ │ └── test.py
│ ├── deploy
│ │ └── local
│ │ ├── chunkserver
│ │ │ ├── conf
│ │ │ │ ├── chunkserver.conf.0
│ │ │ │ ├── chunkserver.conf.1
│ │ │ │ ├── chunkserver.conf.2
│ │ │ │ ├── chunkserver.conf.docker1
│ │ │ │ ├── chunkserver.conf.docker2
│ │ │ │ ├── chunkserver.conf.docker3
│ │ │ │ ├── chunkserver.conf.docker4
│ │ │ │ ├── chunkserver_docker.conf.0
│ │ │ │ ├── chunkserver_docker.conf.1
│ │ │ │ └── chunkserver_docker.conf.2
│ │ │ ├── start_chunkservers_locally.sh
│ │ │ ├── start_chunkservers_locally_docker1.sh
│ │ │ ├── start_chunkservers_locally_docker2.sh
│ │ │ ├── start_chunkservers_locally_docker3.sh
│ │ │ ├── start_chunkservers_locally_docker4.sh
│ │ │ └── stop_chunkservers_locally.sh
│ │ └── test
│ │ └── start_multicopyset_io_test.sh
│ ├── docker
│ │ ├── Dockerfile
│ │ ├── base
│ │ │ ├── Dockerfile
│ │ │ └── Makefile
│ │ └── entrypoint.sh
│ ├── docs
│ │ ├── README.md
│ │ ├── cn
│ │ │ ├── build_and_run.md
│ │ │ ├── chunkserver_design.md
│ │ │ ├── curve-client-python-api.md
│ │ │ ├── curve-client.md
│ │ │ ├── curve_ops_tool.md
│ │ │ ├── deploy.md
│ │ │ ├── k8s_csi_interface.md
│ │ │ ├── mds.md
│ │ │ ├── monitor.md
│ │ │ ├── nebd.md
│ │ │ ├── quality-integration-example.md
│ │ │ ├── quality.md
│ │ │ ├── snapshotcloneserver.md
│ │ │ └── snapshotcloneserver_interface.md
│ │ ├── en
│ │ │ ├── chunkserver_design_en.md
│ │ │ ├── client_en.md
│ │ │ ├── mds_en.md
│ │ │ ├── nebd_en.md
│ │ │ ├── quality_en.md
│ │ │ └── snapshotcloneserver_en.md
│ │ └── images
│ │ ├── chunkserver_heartbeat.png
│ │ ├── chunkserverstructure.png
│ │ ├── clone-file-status.png
│ │ ├── clone.png
│ │ ├── curve-client-arch.png
│ │ ├── curve-client-thread-model.png
│ │ ├── curve-file.png
│ │ ├── curve-logo1.png
│ │ ├── curve-logo2.png
│ │ ├── curve-raft-arch-1.png
│ │ ├── grafana-example-1.png
│ │ ├── grafana-example-2.png
│ │ ├── grafana-example-3.png
│ │ ├── grafana-reporter.png
│ │ ├── mds-copyset.png
│ │ ├── mds-heartbeat.png
│ │ ├── mds-nameserver.png
│ │ ├── mds-namespace.png
│ │ ├── mds-schedule-en.png
│ │ ├── mds-schedule.png
│ │ ├── mds-segment-chunk-en.png
│ │ ├── mds-segment-chunk.png
│ │ ├── mds-topology-all.png
│ │ ├── mds-topology-l.png
│ │ ├── monitor.png
│ │ ├── nebd-modules.png
│ │ ├── nebd-overview.jpg
│ │ ├── nebd-part1-write-request-en.png
│ │ ├── nebd-part1-write-request.png
│ │ ├── nebd-part2-heartbeat.png
│ │ ├── quality-auto-abnormal.png
│ │ ├── quality-auto-robotframework.png
│ │ ├── quality-control-1.png
│ │ ├── quality-control-2.png
│ │ ├── quality-cov.png
│ │ ├── quality-process.png
│ │ ├── quality-theory.png
│ │ ├── snap-s3-format.png
│ │ └── snap.png
│ ├── include
│ │ ├── BUILD
│ │ ├── chunkserver
│ │ │ ├── BUILD
│ │ │ └── chunkserver_common.h
│ │ ├── client
│ │ │ ├── BUILD
│ │ │ ├── libcbd.h
│ │ │ ├── libcurve.h
│ │ │ └── libcurve_define.h
│ │ ├── curve_compiler_specific.h
│ │ └── etcdclient
│ │ ├── BUILD
│ │ └── etcdclient.h
│ ├── k8s
│ │ ├── nbd
│ │ │ └── nbd-package
│ │ │ ├── DEBIAN
│ │ │ │ ├── control
│ │ │ │ ├── postinst
│ │ │ │ └── prerm
│ │ │ ├── etc
│ │ │ │ ├── nbd
│ │ │ │ │ └── k8s_curve.conf
│ │ │ │ └── systemd
│ │ │ │ └── system
│ │ │ │ ├── create_curve_volume.service
│ │ │ │ └── data.mount
│ │ │ └── usr
│ │ │ └── bin
│ │ │ ├── mount_curve_clouddisk.sh
│ │ │ └── umount_curve_clouddisk.sh
│ │ └── nebd
│ │ └── nebd-package
│ │ ├── DEBIAN
│ │ │ ├── control
│ │ │ ├── postinst
│ │ │ ├── preinst
│ │ │ └── prerm
│ │ └── etc
│ │ ├── nebd
│ │ │ ├── nebd-client.conf
│ │ │ └── nebd-server.conf
│ │ └── systemd
│ │ └── system
│ │ └── nebd-daemon.service
│ ├── localut.sh
│ ├── mk-deb.sh
│ ├── mk-tar.sh
│ ├── monitor
│ │ ├── README.md
│ │ ├── curve-monitor.sh
│ │ ├── docker-compose.yml
│ │ ├── grafana
│ │ │ ├── dashboards
│ │ │ │ ├── chunkserver.json
│ │ │ │ ├── client.json
│ │ │ │ ├── etcd.json
│ │ │ │ ├── mds.json
│ │ │ │ ├── report.json
│ │ │ │ └── snapshotcloneserver.json
│ │ │ ├── grafana.ini
│ │ │ ├── provisioning
│ │ │ │ ├── dashboards
│ │ │ │ │ └── all.yml
│ │ │ │ └── datasources
│ │ │ │ └── all.yml
│ │ │ └── report
│ │ │ └── README
│ │ ├── grafana-report.py
│ │ ├── prometheus
│ │ │ └── prometheus.yml
│ │ ├── target.ini
│ │ ├── target_json.py
│ │ └── update_dashboard.sh
│ ├── nbd
│ │ ├── README.md
│ │ ├── nbd-package
│ │ │ ├── DEBIAN
│ │ │ │ ├── control
│ │ │ │ ├── postinst
│ │ │ │ ├── preinst
│ │ │ │ └── prerm
│ │ │ ├── etc
│ │ │ │ ├── curve
│ │ │ │ │ └── curvetab
│ │ │ │ └── systemd
│ │ │ │ └── system
│ │ │ │ └── map_curve_disk.service
│ │ │ └── usr
│ │ │ └── bin
│ │ │ └── map_curve_disk.sh
│ │ ├── src
│ │ │ ├── BUILD
│ │ │ ├── ImageInstance.cpp
│ │ │ ├── ImageInstance.h
│ │ │ ├── NBDController.cpp
│ │ │ ├── NBDController.h
│ │ │ ├── NBDServer.cpp
│ │ │ ├── NBDServer.h
│ │ │ ├── NBDTool.cpp
│ │ │ ├── NBDTool.h
│ │ │ ├── NBDWatchContext.cpp
│ │ │ ├── NBDWatchContext.h
│ │ │ ├── SafeIO.cpp
│ │ │ ├── SafeIO.h
│ │ │ ├── argparse.cpp
│ │ │ ├── argparse.h
│ │ │ ├── define.h
│ │ │ ├── main.cpp
│ │ │ ├── nbd-netlink.h
│ │ │ ├── texttable.cpp
│ │ │ ├── texttable.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ └── test
│ │ ├── BUILD
│ │ ├── fake_safe_io.h
│ │ ├── main.cpp
│ │ ├── mock_image_instance.h
│ │ ├── mock_nbd_controller.h
│ │ ├── mock_safe_io.h
│ │ ├── nbd_config_test.cpp
│ │ ├── nbd_server_test.cpp
│ │ ├── nbd_tool_test.cpp
│ │ ├── nbd_watch_context_test.cpp
│ │ └── test_argparse.cpp
│ ├── nebd
│ │ ├── etc
│ │ │ └── nebd
│ │ │ ├── nebd-client.conf
│ │ │ └── nebd-server.conf
│ │ ├── nebd-package
│ │ │ ├── DEBIAN
│ │ │ │ ├── control
│ │ │ │ ├── postinst
│ │ │ │ └── prerm
│ │ │ ├── data
│ │ │ │ ├── log
│ │ │ │ │ └── nebd
│ │ │ │ │ ├── client
│ │ │ │ │ └── server
│ │ │ │ └── nebd
│ │ │ │ └── lock
│ │ │ └── usr
│ │ │ └── bin
│ │ │ └── nebd-daemon
│ │ ├── proto
│ │ │ ├── BUILD
│ │ │ ├── client.proto
│ │ │ ├── heartbeat.proto
│ │ │ └── nebd-common.proto
│ │ ├── src
│ │ │ ├── common
│ │ │ │ ├── BUILD
│ │ │ │ ├── configuration.cpp
│ │ │ │ ├── configuration.h
│ │ │ │ ├── crc32.h
│ │ │ │ ├── file_lock.cpp
│ │ │ │ ├── file_lock.h
│ │ │ │ ├── interrupt_sleep.h
│ │ │ │ ├── name_lock.cpp
│ │ │ │ ├── name_lock.h
│ │ │ │ ├── nebd_version.cpp
│ │ │ │ ├── nebd_version.h
│ │ │ │ ├── posix_wrapper.cpp
│ │ │ │ ├── posix_wrapper.h
│ │ │ │ ├── rw_lock.h
│ │ │ │ ├── stringstatus.cpp
│ │ │ │ ├── stringstatus.h
│ │ │ │ ├── timeutility.h
│ │ │ │ └── uncopyable.h
│ │ │ ├── part1
│ │ │ │ ├── BUILD
│ │ │ │ ├── async_request_closure.cpp
│ │ │ │ ├── async_request_closure.h
│ │ │ │ ├── heartbeat_manager.cpp
│ │ │ │ ├── heartbeat_manager.h
│ │ │ │ ├── libnebd.cpp
│ │ │ │ ├── libnebd.h
│ │ │ │ ├── libnebd_file.cpp
│ │ │ │ ├── libnebd_file.h
│ │ │ │ ├── nebd_client.cpp
│ │ │ │ ├── nebd_client.h
│ │ │ │ ├── nebd_common.h
│ │ │ │ ├── nebd_metacache.cpp
│ │ │ │ └── nebd_metacache.h
│ │ │ └── part2
│ │ │ ├── BUILD
│ │ │ ├── define.h
│ │ │ ├── file_entity.cpp
│ │ │ ├── file_entity.h
│ │ │ ├── file_manager.cpp
│ │ │ ├── file_manager.h
│ │ │ ├── file_service.cpp
│ │ │ ├── file_service.h
│ │ │ ├── heartbeat_manager.cpp
│ │ │ ├── heartbeat_manager.h
│ │ │ ├── heartbeat_service.cpp
│ │ │ ├── heartbeat_service.h
│ │ │ ├── main.cpp
│ │ │ ├── metafile_manager.cpp
│ │ │ ├── metafile_manager.h
│ │ │ ├── nebd_server.cpp
│ │ │ ├── nebd_server.h
│ │ │ ├── request_executor.cpp
│ │ │ ├── request_executor.h
│ │ │ ├── request_executor_curve.cpp
│ │ │ ├── request_executor_curve.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ └── test
│ │ ├── common
│ │ │ ├── BUILD
│ │ │ ├── configuration_test.cpp
│ │ │ ├── crc32_test.cpp
│ │ │ ├── interruptible_sleeper_test.cpp
│ │ │ ├── posix_wrapper_test.cpp
│ │ │ ├── rw_lock_test.cpp
│ │ │ ├── stringstatus_test.cpp
│ │ │ └── test_name_lock.cpp
│ │ ├── part1
│ │ │ ├── BUILD
│ │ │ ├── fake_file_service.cpp
│ │ │ ├── fake_file_service.h
│ │ │ ├── fake_heartbeat_service.h
│ │ │ ├── heartbeat_manager_unittest.cpp
│ │ │ ├── mock_file_service.h
│ │ │ ├── mock_heartbeat_service.h
│ │ │ ├── nebd_client_unittest.cpp
│ │ │ ├── nebd_lib_unittest.cpp
│ │ │ └── nebd_metacache_unittest.cpp
│ │ ├── part2
│ │ │ ├── BUILD
│ │ │ ├── file_manager_unittest.cpp
│ │ │ ├── file_service_unittest.cpp
│ │ │ ├── heartbeat_manager_unittest.cpp
│ │ │ ├── heartbeat_service_test.cpp
│ │ │ ├── metafile_manager_test.cpp
│ │ │ ├── mock_curve_client.h
│ │ │ ├── mock_file_entity.h
│ │ │ ├── mock_file_manager.h
│ │ │ ├── mock_heartbeat_manager.h
│ │ │ ├── mock_metafile_manager.h
│ │ │ ├── mock_posix_wrapper.h
│ │ │ ├── mock_request_executor.h
│ │ │ ├── test_nebd_server.cpp
│ │ │ └── test_request_executor_curve.cpp
│ │ └── utils
│ │ ├── BUILD
│ │ └── config_generator.h
│ ├── proto
│ │ ├── BUILD
│ │ ├── chunk.proto
│ │ ├── chunkserver.proto
│ │ ├── cli.proto
│ │ ├── cli2.proto
│ │ ├── common.proto
│ │ ├── configuration.proto
│ │ ├── copyset.proto
│ │ ├── curve_storage.proto
│ │ ├── heartbeat.proto
│ │ ├── integrity.proto
│ │ ├── nameserver2.proto
│ │ ├── schedule.proto
│ │ ├── snapshotcloneserver.proto
│ │ └── topology.proto
│ ├── replace-curve-repo.sh
│ ├── robot
│ │ ├── Resources
│ │ │ ├── __init__.py
│ │ │ ├── config
│ │ │ │ ├── __init__.py
│ │ │ │ └── config.py
│ │ │ ├── keywords
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_operate.py
│ │ │ │ ├── cpu_stress.py
│ │ │ │ ├── deleteforce-test.py
│ │ │ │ ├── deploy.py
│ │ │ │ ├── fault_inject.py
│ │ │ │ ├── mythread.py
│ │ │ │ ├── snapshot_operate.py
│ │ │ │ └── test_curve_stability_nbd.py
│ │ │ ├── lib
│ │ │ │ ├── __init__.py
│ │ │ │ └── shell_operator.py
│ │ │ ├── logger
│ │ │ │ ├── __init__.py
│ │ │ │ └── logger.py
│ │ │ ├── swig
│ │ │ │ ├── __init__.py
│ │ │ │ ├── snapshot_client.py
│ │ │ │ └── swig_operate.py
│ │ │ └── test
│ │ │ ├── __init__.py
│ │ │ └── curve_base_test.py
│ │ ├── ansible_deploy.sh
│ │ ├── curve_choas.txt
│ │ ├── curve_failover_robot.txt
│ │ ├── curve_init.txt
│ │ ├── curve_robot.txt
│ │ └── init_env.sh
│ ├── src
│ │ ├── chunkserver
│ │ │ ├── BUILD
│ │ │ ├── braft_cli_service.cpp
│ │ │ ├── braft_cli_service.h
│ │ │ ├── braft_cli_service2.cpp
│ │ │ ├── braft_cli_service2.h
│ │ │ ├── chunk_closure.cpp
│ │ │ ├── chunk_closure.h
│ │ │ ├── chunk_service.cpp
│ │ │ ├── chunk_service.h
│ │ │ ├── chunk_service_closure.cpp
│ │ │ ├── chunk_service_closure.h
│ │ │ ├── chunkserver.cpp
│ │ │ ├── chunkserver.h
│ │ │ ├── chunkserver_helper.cpp
│ │ │ ├── chunkserver_helper.h
│ │ │ ├── chunkserver_main.cpp
│ │ │ ├── chunkserver_metrics.cpp
│ │ │ ├── chunkserver_metrics.h
│ │ │ ├── chunkserver_service.cpp
│ │ │ ├── chunkserver_service.h
│ │ │ ├── cli.cpp
│ │ │ ├── cli.h
│ │ │ ├── cli2.cpp
│ │ │ ├── cli2.h
│ │ │ ├── clone_copyer.cpp
│ │ │ ├── clone_copyer.h
│ │ │ ├── clone_core.cpp
│ │ │ ├── clone_core.h
│ │ │ ├── clone_manager.cpp
│ │ │ ├── clone_manager.h
│ │ │ ├── clone_task.h
│ │ │ ├── concurrent_apply
│ │ │ │ ├── BUILD
│ │ │ │ ├── concurrent_apply.cpp
│ │ │ │ └── concurrent_apply.h
│ │ │ ├── conf_epoch_file.cpp
│ │ │ ├── conf_epoch_file.h
│ │ │ ├── config_info.cpp
│ │ │ ├── config_info.h
│ │ │ ├── copyset_node.cpp
│ │ │ ├── copyset_node.h
│ │ │ ├── copyset_node_manager.cpp
│ │ │ ├── copyset_node_manager.h
│ │ │ ├── copyset_service.cpp
│ │ │ ├── copyset_service.h
│ │ │ ├── datastore
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_chunkfile.cpp
│ │ │ │ ├── chunkserver_chunkfile.h
│ │ │ │ ├── chunkserver_datastore.cpp
│ │ │ │ ├── chunkserver_datastore.h
│ │ │ │ ├── chunkserver_snapshot.cpp
│ │ │ │ ├── chunkserver_snapshot.h
│ │ │ │ ├── datastore_file_helper.cpp
│ │ │ │ ├── datastore_file_helper.h
│ │ │ │ ├── define.h
│ │ │ │ ├── file_pool.cpp
│ │ │ │ ├── file_pool.h
│ │ │ │ └── filename_operator.h
│ │ │ ├── epoch_map.cpp
│ │ │ ├── epoch_map.h
│ │ │ ├── heartbeat.cpp
│ │ │ ├── heartbeat.h
│ │ │ ├── heartbeat_helper.cpp
│ │ │ ├── heartbeat_helper.h
│ │ │ ├── inflight_throttle.h
│ │ │ ├── op_request.cpp
│ │ │ ├── op_request.h
│ │ │ ├── passive_getfn.cpp
│ │ │ ├── passive_getfn.h
│ │ │ ├── raft_node.h
│ │ │ ├── raftlog
│ │ │ │ ├── BUILD
│ │ │ │ ├── braft_segment.h
│ │ │ │ ├── curve_segment.cpp
│ │ │ │ ├── curve_segment.h
│ │ │ │ ├── curve_segment_log_storage.cpp
│ │ │ │ ├── curve_segment_log_storage.h
│ │ │ │ ├── define.h
│ │ │ │ └── segment.h
│ │ │ ├── raftsnapshot
│ │ │ │ ├── BUILD
│ │ │ │ ├── curve_file_adaptor.h
│ │ │ │ ├── curve_file_service.cpp
│ │ │ │ ├── curve_file_service.h
│ │ │ │ ├── curve_filesystem_adaptor.cpp
│ │ │ │ ├── curve_filesystem_adaptor.h
│ │ │ │ ├── curve_snapshot.cpp
│ │ │ │ ├── curve_snapshot.h
│ │ │ │ ├── curve_snapshot_attachment.cpp
│ │ │ │ ├── curve_snapshot_attachment.h
│ │ │ │ ├── curve_snapshot_copier.cpp
│ │ │ │ ├── curve_snapshot_copier.h
│ │ │ │ ├── curve_snapshot_file_reader.cpp
│ │ │ │ ├── curve_snapshot_file_reader.h
│ │ │ │ ├── curve_snapshot_reader.cpp
│ │ │ │ ├── curve_snapshot_reader.h
│ │ │ │ ├── curve_snapshot_storage.cpp
│ │ │ │ ├── curve_snapshot_storage.h
│ │ │ │ ├── curve_snapshot_writer.cpp
│ │ │ │ ├── curve_snapshot_writer.h
│ │ │ │ └── define.h
│ │ │ ├── register.cpp
│ │ │ ├── register.h
│ │ │ ├── trash.cpp
│ │ │ ├── trash.h
│ │ │ └── uri_paser.h
│ │ ├── client
│ │ │ ├── BUILD
│ │ │ ├── chunk_closure.cpp
│ │ │ ├── chunk_closure.h
│ │ │ ├── chunkserver_broadcaster.cpp
│ │ │ ├── chunkserver_broadcaster.h
│ │ │ ├── chunkserver_client.cpp
│ │ │ ├── chunkserver_client.h
│ │ │ ├── client_common.cpp
│ │ │ ├── client_common.h
│ │ │ ├── client_config.cpp
│ │ │ ├── client_config.h
│ │ │ ├── client_metric.h
│ │ │ ├── config_info.h
│ │ │ ├── copyset_client.cpp
│ │ │ ├── copyset_client.h
│ │ │ ├── file_instance.cpp
│ │ │ ├── file_instance.h
│ │ │ ├── inflight_controller.h
│ │ │ ├── io_condition_varaiable.h
│ │ │ ├── io_tracker.cpp
│ │ │ ├── io_tracker.h
│ │ │ ├── iomanager.h
│ │ │ ├── iomanager4chunk.cpp
│ │ │ ├── iomanager4chunk.h
│ │ │ ├── iomanager4file.cpp
│ │ │ ├── iomanager4file.h
│ │ │ ├── lease_executor.cpp
│ │ │ ├── lease_executor.h
│ │ │ ├── libcbd_ext4.cpp
│ │ │ ├── libcbd_libcurve.cpp
│ │ │ ├── libcurve_client.cpp
│ │ │ ├── libcurve_file.cpp
│ │ │ ├── libcurve_file.h
│ │ │ ├── libcurve_snapshot.cpp
│ │ │ ├── libcurve_snapshot.h
│ │ │ ├── mds_client.cpp
│ │ │ ├── mds_client.h
│ │ │ ├── mds_client_base.cpp
│ │ │ ├── mds_client_base.h
│ │ │ ├── metacache.cpp
│ │ │ ├── metacache.h
│ │ │ ├── metacache_struct.h
│ │ │ ├── request_closure.cpp
│ │ │ ├── request_closure.h
│ │ │ ├── request_context.cpp
│ │ │ ├── request_context.h
│ │ │ ├── request_scheduler.cpp
│ │ │ ├── request_scheduler.h
│ │ │ ├── request_sender.cpp
│ │ │ ├── request_sender.h
│ │ │ ├── request_sender_manager.cpp
│ │ │ ├── request_sender_manager.h
│ │ │ ├── service_helper.cpp
│ │ │ ├── service_helper.h
│ │ │ ├── source_reader.cpp
│ │ │ ├── source_reader.h
│ │ │ ├── splitor.cpp
│ │ │ ├── splitor.h
│ │ │ ├── unstable_helper.cpp
│ │ │ └── unstable_helper.h
│ │ ├── common
│ │ │ ├── BUILD
│ │ │ ├── authenticator.cpp
│ │ │ ├── authenticator.h
│ │ │ ├── bitmap.cpp
│ │ │ ├── bitmap.h
│ │ │ ├── channel_pool.cpp
│ │ │ ├── channel_pool.h
│ │ │ ├── concurrent
│ │ │ │ ├── BUILD
│ │ │ │ ├── bounded_blocking_queue.h
│ │ │ │ ├── concurrent.h
│ │ │ │ ├── count_down_event.h
│ │ │ │ ├── name_lock.cpp
│ │ │ │ ├── name_lock.h
│ │ │ │ ├── rw_lock.h
│ │ │ │ ├── spinlock.h
│ │ │ │ ├── task_queue.h
│ │ │ │ ├── task_thread_pool.h
│ │ │ │ ├── thread_pool.cpp
│ │ │ │ └── thread_pool.h
│ │ │ ├── configuration.cpp
│ │ │ ├── configuration.h
│ │ │ ├── crc32.h
│ │ │ ├── curve_define.h
│ │ │ ├── curve_version.cpp
│ │ │ ├── curve_version.h
│ │ │ ├── define.h
│ │ │ ├── encode.h
│ │ │ ├── fast_align.h
│ │ │ ├── fs_util.h
│ │ │ ├── hash.h
│ │ │ ├── interruptible_sleeper.h
│ │ │ ├── location_operator.cpp
│ │ │ ├── location_operator.h
│ │ │ ├── math_util.h
│ │ │ ├── namespace_define.h
│ │ │ ├── net_common.h
│ │ │ ├── s3_adapter.cpp
│ │ │ ├── s3_adapter.h
│ │ │ ├── snapshotclone
│ │ │ │ ├── BUILD
│ │ │ │ ├── snapshotclone_define.cpp
│ │ │ │ └── snapshotclone_define.h
│ │ │ ├── string_util.h
│ │ │ ├── stringstatus.cpp
│ │ │ ├── stringstatus.h
│ │ │ ├── task_tracker.cpp
│ │ │ ├── task_tracker.h
│ │ │ ├── timeutility.h
│ │ │ ├── uncopyable.h
│ │ │ ├── uuid.h
│ │ │ ├── wait_interval.cpp
│ │ │ └── wait_interval.h
│ │ ├── fs
│ │ │ ├── BUILD
│ │ │ ├── ext4_filesystem_impl.cpp
│ │ │ ├── ext4_filesystem_impl.h
│ │ │ ├── fs_common.h
│ │ │ ├── local_filesystem.cpp
│ │ │ ├── local_filesystem.h
│ │ │ ├── wrap_posix.cpp
│ │ │ └── wrap_posix.h
│ │ ├── kvstorageclient
│ │ │ ├── BUILD
│ │ │ ├── etcd_client.cpp
│ │ │ └── etcd_client.h
│ │ ├── leader_election
│ │ │ ├── BUILD
│ │ │ ├── leader_election.cpp
│ │ │ └── leader_election.h
│ │ ├── mds
│ │ │ ├── chunkserverclient
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_client.cpp
│ │ │ │ ├── chunkserver_client.h
│ │ │ │ ├── chunkserverclient_config.h
│ │ │ │ ├── copyset_client.cpp
│ │ │ │ └── copyset_client.h
│ │ │ ├── common
│ │ │ │ ├── BUILD
│ │ │ │ └── mds_define.h
│ │ │ ├── copyset
│ │ │ │ ├── BUILD
│ │ │ │ ├── copyset_config.h
│ │ │ │ ├── copyset_manager.cpp
│ │ │ │ ├── copyset_manager.h
│ │ │ │ ├── copyset_policy.cpp
│ │ │ │ ├── copyset_policy.h
│ │ │ │ ├── copyset_structure.h
│ │ │ │ ├── copyset_validation.cpp
│ │ │ │ └── copyset_validation.h
│ │ │ ├── heartbeat
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_healthy_checker.cpp
│ │ │ │ ├── chunkserver_healthy_checker.h
│ │ │ │ ├── copyset_conf_generator.cpp
│ │ │ │ ├── copyset_conf_generator.h
│ │ │ │ ├── heartbeat_manager.cpp
│ │ │ │ ├── heartbeat_manager.h
│ │ │ │ ├── heartbeat_service.cpp
│ │ │ │ ├── heartbeat_service.h
│ │ │ │ ├── topo_updater.cpp
│ │ │ │ └── topo_updater.h
│ │ │ ├── main
│ │ │ │ ├── BUILD
│ │ │ │ └── main.cpp
│ │ │ ├── nameserver2
│ │ │ │ ├── BUILD
│ │ │ │ ├── allocstatistic
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── alloc_statistic.cpp
│ │ │ │ │ ├── alloc_statistic.h
│ │ │ │ │ ├── alloc_statistic_helper.cpp
│ │ │ │ │ └── alloc_statistic_helper.h
│ │ │ │ ├── async_delete_snapshot_entity.h
│ │ │ │ ├── chunk_allocator.cpp
│ │ │ │ ├── chunk_allocator.h
│ │ │ │ ├── clean_core.cpp
│ │ │ │ ├── clean_core.h
│ │ │ │ ├── clean_manager.cpp
│ │ │ │ ├── clean_manager.h
│ │ │ │ ├── clean_task.h
│ │ │ │ ├── clean_task_manager.cpp
│ │ │ │ ├── clean_task_manager.h
│ │ │ │ ├── curvefs.cpp
│ │ │ │ ├── curvefs.h
│ │ │ │ ├── file_lock.cpp
│ │ │ │ ├── file_lock.h
│ │ │ │ ├── file_record.cpp
│ │ │ │ ├── file_record.h
│ │ │ │ ├── helper
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── namespace_helper.cpp
│ │ │ │ │ └── namespace_helper.h
│ │ │ │ ├── idgenerator
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── chunk_id_generator.cpp
│ │ │ │ │ ├── chunk_id_generator.h
│ │ │ │ │ ├── etcd_id_generator.cpp
│ │ │ │ │ ├── etcd_id_generator.h
│ │ │ │ │ ├── inode_id_generator.cpp
│ │ │ │ │ └── inode_id_generator.h
│ │ │ │ ├── nameserverMetrics.cpp
│ │ │ │ ├── nameserverMetrics.h
│ │ │ │ ├── namespace_service.cpp
│ │ │ │ ├── namespace_service.h
│ │ │ │ ├── namespace_storage.cpp
│ │ │ │ ├── namespace_storage.h
│ │ │ │ ├── namespace_storage_cache.cpp
│ │ │ │ ├── namespace_storage_cache.h
│ │ │ │ └── task_progress.h
│ │ │ ├── schedule
│ │ │ │ ├── BUILD
│ │ │ │ ├── coordinator.cpp
│ │ │ │ ├── coordinator.h
│ │ │ │ ├── copySetScheduler.cpp
│ │ │ │ ├── leaderScheduler.cpp
│ │ │ │ ├── operator.cpp
│ │ │ │ ├── operator.h
│ │ │ │ ├── operatorController.cpp
│ │ │ │ ├── operatorController.h
│ │ │ │ ├── operatorFactory.cpp
│ │ │ │ ├── operatorFactory.h
│ │ │ │ ├── operatorStep.cpp
│ │ │ │ ├── operatorStep.h
│ │ │ │ ├── rapidLeaderScheduler.cpp
│ │ │ │ ├── recoverScheduler.cpp
│ │ │ │ ├── replicaScheduler.cpp
│ │ │ │ ├── scheduleMetrics.cpp
│ │ │ │ ├── scheduleMetrics.h
│ │ │ │ ├── scheduleService
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── scheduleService.cpp
│ │ │ │ │ └── scheduleService.h
│ │ │ │ ├── schedule_define.h
│ │ │ │ ├── scheduler.cpp
│ │ │ │ ├── scheduler.h
│ │ │ │ ├── scheduler_helper.cpp
│ │ │ │ ├── scheduler_helper.h
│ │ │ │ ├── topoAdapter.cpp
│ │ │ │ └── topoAdapter.h
│ │ │ ├── server
│ │ │ │ ├── BUILD
│ │ │ │ ├── mds.cpp
│ │ │ │ └── mds.h
│ │ │ ├── snapshotcloneclient
│ │ │ │ ├── BUILD
│ │ │ │ ├── snapshotclone_client.cpp
│ │ │ │ └── snapshotclone_client.h
│ │ │ └── topology
│ │ │ ├── BUILD
│ │ │ ├── topology.cpp
│ │ │ ├── topology.h
│ │ │ ├── topology_chunk_allocator.cpp
│ │ │ ├── topology_chunk_allocator.h
│ │ │ ├── topology_config.h
│ │ │ ├── topology_id_generator.cpp
│ │ │ ├── topology_id_generator.h
│ │ │ ├── topology_item.cpp
│ │ │ ├── topology_item.h
│ │ │ ├── topology_metric.cpp
│ │ │ ├── topology_metric.h
│ │ │ ├── topology_service.cpp
│ │ │ ├── topology_service.h
│ │ │ ├── topology_service_manager.cpp
│ │ │ ├── topology_service_manager.h
│ │ │ ├── topology_stat.cpp
│ │ │ ├── topology_stat.h
│ │ │ ├── topology_storage_codec.cpp
│ │ │ ├── topology_storage_codec.h
│ │ │ ├── topology_storge.h
│ │ │ ├── topology_storge_etcd.cpp
│ │ │ ├── topology_storge_etcd.h
│ │ │ ├── topology_token_generator.cpp
│ │ │ └── topology_token_generator.h
│ │ ├── sfs
│ │ │ └── sfsMock.h
│ │ ├── snapshotcloneserver
│ │ │ ├── BUILD
│ │ │ ├── clone
│ │ │ │ ├── clone_closure.h
│ │ │ │ ├── clone_core.cpp
│ │ │ │ ├── clone_core.h
│ │ │ │ ├── clone_reference.cpp
│ │ │ │ ├── clone_reference.h
│ │ │ │ ├── clone_service_manager.cpp
│ │ │ │ ├── clone_service_manager.h
│ │ │ │ ├── clone_task.cpp
│ │ │ │ ├── clone_task.h
│ │ │ │ ├── clone_task_manager.cpp
│ │ │ │ └── clone_task_manager.h
│ │ │ ├── common
│ │ │ │ ├── config.h
│ │ │ │ ├── curvefs_client.cpp
│ │ │ │ ├── curvefs_client.h
│ │ │ │ ├── snapshot_reference.cpp
│ │ │ │ ├── snapshot_reference.h
│ │ │ │ ├── snapshotclone_info.cpp
│ │ │ │ ├── snapshotclone_info.h
│ │ │ │ ├── snapshotclone_meta_store.h
│ │ │ │ ├── snapshotclone_meta_store_etcd.cpp
│ │ │ │ ├── snapshotclone_meta_store_etcd.h
│ │ │ │ ├── snapshotclone_metric.cpp
│ │ │ │ ├── snapshotclone_metric.h
│ │ │ │ ├── snapshotclonecodec.cpp
│ │ │ │ ├── snapshotclonecodec.h
│ │ │ │ ├── task.h
│ │ │ │ ├── task_info.h
│ │ │ │ ├── task_tracker.h
│ │ │ │ ├── thread_pool.cpp
│ │ │ │ └── thread_pool.h
│ │ │ ├── main.cpp
│ │ │ ├── snapshot
│ │ │ │ ├── snapshot_core.cpp
│ │ │ │ ├── snapshot_core.h
│ │ │ │ ├── snapshot_data_store.cpp
│ │ │ │ ├── snapshot_data_store.h
│ │ │ │ ├── snapshot_data_store_s3.cpp
│ │ │ │ ├── snapshot_data_store_s3.h
│ │ │ │ ├── snapshot_service_manager.cpp
│ │ │ │ ├── snapshot_service_manager.h
│ │ │ │ ├── snapshot_task.cpp
│ │ │ │ ├── snapshot_task.h
│ │ │ │ ├── snapshot_task_manager.cpp
│ │ │ │ └── snapshot_task_manager.h
│ │ │ ├── snapshotclone_server.cpp
│ │ │ ├── snapshotclone_server.h
│ │ │ ├── snapshotclone_service.cpp
│ │ │ └── snapshotclone_service.h
│ │ └── tools
│ │ ├── BUILD
│ │ ├── bazel.rc
│ │ ├── chunkserver_client.cpp
│ │ ├── chunkserver_client.h
│ │ ├── chunkserver_tool_factory.cpp
│ │ ├── chunkserver_tool_factory.h
│ │ ├── chunkserver_tool_main.cpp
│ │ ├── common.cpp
│ │ ├── common.h
│ │ ├── consistency_check.cpp
│ │ ├── consistency_check.h
│ │ ├── copyset_check.cpp
│ │ ├── copyset_check.h
│ │ ├── copyset_check_core.cpp
│ │ ├── copyset_check_core.h
│ │ ├── curve_cli.cpp
│ │ ├── curve_cli.h
│ │ ├── curve_format_main.cpp
│ │ ├── curve_meta_tool.cpp
│ │ ├── curve_meta_tool.h
│ │ ├── curve_tool.h
│ │ ├── curve_tool_define.cpp
│ │ ├── curve_tool_define.h
│ │ ├── curve_tool_factory.cpp
│ │ ├── curve_tool_factory.h
│ │ ├── curve_tool_main.cpp
│ │ ├── etcd_client.cpp
│ │ ├── etcd_client.h
│ │ ├── mds_client.cpp
│ │ ├── mds_client.h
│ │ ├── metric_client.cpp
│ │ ├── metric_client.h
│ │ ├── metric_name.h
│ │ ├── namespace_tool.cpp
│ │ ├── namespace_tool.h
│ │ ├── namespace_tool_core.cpp
│ │ ├── namespace_tool_core.h
│ │ ├── raft_log_tool.cpp
│ │ ├── raft_log_tool.h
│ │ ├── schedule_tool.cpp
│ │ ├── schedule_tool.h
│ │ ├── snapshot_check.h
│ │ ├── snapshot_clone_client.cpp
│ │ ├── snapshot_clone_client.h
│ │ ├── status_tool.cpp
│ │ ├── status_tool.h
│ │ ├── version_tool.cpp
│ │ └── version_tool.h
│ ├── test
│ │ ├── backup
│ │ │ ├── client_config_unittest.cpp
│ │ │ ├── context_slab.cpp
│ │ │ ├── context_slab.h
│ │ │ ├── context_slab_unittest.cpp
│ │ │ ├── snapshot_instance.cpp
│ │ │ └── snapshot_instance.h
│ │ ├── chunkserver
│ │ │ ├── BUILD
│ │ │ ├── braft_cli_service2_test.cpp
│ │ │ ├── braft_cli_service_test.cpp
│ │ │ ├── chunk_service_test.cpp
│ │ │ ├── chunk_service_test2.cpp
│ │ │ ├── chunkserver_helper_test.cpp
│ │ │ ├── chunkserver_service_test.cpp
│ │ │ ├── chunkserver_snapshot_test.cpp
│ │ │ ├── chunkserver_test.cpp
│ │ │ ├── chunkserver_test_util.cpp
│ │ │ ├── chunkserver_test_util.h
│ │ │ ├── cli2_test.cpp
│ │ │ ├── cli_test.cpp
│ │ │ ├── client.cpp
│ │ │ ├── clone
│ │ │ │ ├── BUILD
│ │ │ │ ├── clone_copyer_test.cpp
│ │ │ │ ├── clone_core_test.cpp
│ │ │ │ ├── clone_manager_test.cpp
│ │ │ │ ├── clone_test_util.h
│ │ │ │ ├── clone_unittest_main.cpp
│ │ │ │ ├── mock_clone_copyer.h
│ │ │ │ ├── mock_clone_manager.h
│ │ │ │ └── op_request_test.cpp
│ │ │ ├── concurrent_apply
│ │ │ │ ├── BUILD
│ │ │ │ └── concurrent_apply_test.cpp
│ │ │ ├── conf_epoch_file_test.cpp
│ │ │ ├── copyset_epoch_test.cpp
│ │ │ ├── copyset_node_manager_test.cpp
│ │ │ ├── copyset_node_test.cpp
│ │ │ ├── copyset_service_test.cpp
│ │ │ ├── datastore
│ │ │ │ ├── BUILD
│ │ │ │ ├── datastore_mock_unittest.cpp
│ │ │ │ ├── datastore_unittest_main.cpp
│ │ │ │ ├── file_helper_unittest.cpp
│ │ │ │ ├── filepool_helper.cpp
│ │ │ │ ├── filepool_helper.h
│ │ │ │ ├── filepool_mock_unittest.cpp
│ │ │ │ ├── filepool_unittest.cpp
│ │ │ │ ├── mock_datastore.h
│ │ │ │ └── mock_file_pool.h
│ │ │ ├── fake_datastore.h
│ │ │ ├── heartbeat_helper_test.cpp
│ │ │ ├── heartbeat_test.cpp
│ │ │ ├── heartbeat_test_common.cpp
│ │ │ ├── heartbeat_test_common.h
│ │ │ ├── heartbeat_test_main.cpp
│ │ │ ├── inflight_throttle_test.cpp
│ │ │ ├── metrics_test.cpp
│ │ │ ├── mock_copyset_node.h
│ │ │ ├── mock_copyset_node_manager.h
│ │ │ ├── mock_curve_filesystem_adaptor.h
│ │ │ ├── mock_node.h
│ │ │ ├── multiple_copysets_io_test.cpp
│ │ │ ├── op_request_test.cpp
│ │ │ ├── raftlog
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ ├── test_curve_segment.cpp
│ │ │ │ └── test_curve_segment_log_storage.cpp
│ │ │ ├── raftsnapshot
│ │ │ │ ├── BUILD
│ │ │ │ ├── curve_file_service_test.cpp
│ │ │ │ ├── curve_filesystem_adaptor_mock_unittest.cpp
│ │ │ │ ├── curve_filesystem_adaptor_unittest.cpp
│ │ │ │ ├── curve_snapshot_attachment_test.cpp
│ │ │ │ ├── curve_snapshot_storage_test.cpp
│ │ │ │ ├── curve_snapshot_writer_test.cpp
│ │ │ │ ├── mock_file_reader.h
│ │ │ │ ├── mock_snapshot_attachment.h
│ │ │ │ └── raftsnapshot_chunkfilepool_integration.cpp
│ │ │ ├── server.cpp
│ │ │ └── trash_test.cpp
│ │ ├── client
│ │ │ ├── BUILD
│ │ │ ├── backoff_test.cpp
│ │ │ ├── chunkserverbroadcaster_unittest.cpp
│ │ │ ├── chunkserverclient_unittest.cpp
│ │ │ ├── client_common_unittest.cpp
│ │ │ ├── client_mdsclient_metacache_unittest.cpp
│ │ │ ├── client_metric_test.cpp
│ │ │ ├── client_session_unittest.cpp
│ │ │ ├── client_unittest_main.cpp
│ │ │ ├── client_unstable_helper_test.cpp
│ │ │ ├── client_userifo_unittest.cpp
│ │ │ ├── copyset_client_test.cpp
│ │ │ ├── fake
│ │ │ │ ├── BUILD
│ │ │ │ ├── client_workflow_test.cpp
│ │ │ │ ├── client_workflow_test4snap.cpp
│ │ │ │ ├── fakeChunkserver.h
│ │ │ │ ├── fakeMDS.cpp
│ │ │ │ ├── fakeMDS.h
│ │ │ │ ├── mds_workflow_test.cpp
│ │ │ │ ├── mockMDS.h
│ │ │ │ ├── mock_schedule.cpp
│ │ │ │ └── mock_schedule.h
│ │ │ ├── file_instance_test.cpp
│ │ │ ├── inflight_rpc_control_test.cpp
│ │ │ ├── iotracker_align_test.cpp
│ │ │ ├── iotracker_splitor_unittest.cpp
│ │ │ ├── lease_executor_test.cpp
│ │ │ ├── libcbd_ext4_test.cpp
│ │ │ ├── libcbd_libcurve_test.cpp
│ │ │ ├── libcurve_client_unittest.cpp
│ │ │ ├── libcurve_interface_unittest.cpp
│ │ │ ├── mds_client_test.cpp
│ │ │ ├── mds_failover_test.cpp
│ │ │ ├── mock
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_chunk_service.h
│ │ │ │ ├── mock_file_client.h
│ │ │ │ └── mock_namespace_service.h
│ │ │ ├── mock_chunkservice.h
│ │ │ ├── mock_curvefs_service.h
│ │ │ ├── mock_meta_cache.h
│ │ │ ├── mock_request_context.h
│ │ │ ├── mock_request_scheduler.h
│ │ │ ├── request_scheduler_test.cpp
│ │ │ ├── request_sender_manager_test.cpp
│ │ │ ├── request_sender_test.cpp
│ │ │ ├── snapshot_service_unittest.cpp
│ │ │ ├── splitor_test.cpp
│ │ │ └── splitor_test2.cpp
│ │ ├── common
│ │ │ ├── BUILD
│ │ │ ├── authenticator_test.cpp
│ │ │ ├── bitmap_test.cpp
│ │ │ ├── channel_pool_test.cpp
│ │ │ ├── configuration_test.cpp
│ │ │ ├── count_down_event_test.cpp
│ │ │ ├── crc32_test.cpp
│ │ │ ├── fast_align_test.cpp
│ │ │ ├── fs_util_test.cpp
│ │ │ ├── interruptible_sleeper_test.cpp
│ │ │ ├── location_operator_test.cpp
│ │ │ ├── math_util_test.cpp
│ │ │ ├── mock_s3_adapter.h
│ │ │ ├── net_common_test.cpp
│ │ │ ├── rw_lock_test.cpp
│ │ │ ├── string_util_test.cpp
│ │ │ ├── stringstatus_test.cpp
│ │ │ ├── task_thread_pool_test.cpp
│ │ │ ├── test_name_lock.cpp
│ │ │ ├── test_timeutility.cpp
│ │ │ └── wait_interval_test.cpp
│ │ ├── failpoint
│ │ │ ├── BUILD
│ │ │ ├── failpoint_test.cpp
│ │ │ └── fiu_local.h
│ │ ├── fs
│ │ │ ├── BUILD
│ │ │ ├── ext4_filesystem_test.cpp
│ │ │ ├── local_filesystem_unittest.cpp
│ │ │ ├── localfs_factory_test.cpp
│ │ │ ├── mock_local_filesystem.h
│ │ │ ├── mock_posix_wrapper.h
│ │ │ └── posix_wrapper_test.cpp
│ │ ├── integration
│ │ │ ├── chunkserver
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_basic_test.cpp
│ │ │ │ ├── chunkserver_clone_recover.cpp
│ │ │ │ ├── chunkserver_concurrent_test.cpp
│ │ │ │ └── datastore
│ │ │ │ ├── BUILD
│ │ │ │ ├── datastore_basic_test.cpp
│ │ │ │ ├── datastore_clone_case_test.cpp
│ │ │ │ ├── datastore_concurrency_test.cpp
│ │ │ │ ├── datastore_exception_test.cpp
│ │ │ │ ├── datastore_integration_base.h
│ │ │ │ ├── datastore_integration_main.cpp
│ │ │ │ ├── datastore_integration_test.cpp
│ │ │ │ ├── datastore_restart_test.cpp
│ │ │ │ ├── datastore_snapshot_case_test.cpp
│ │ │ │ └── datastore_stress_test.cpp
│ │ │ ├── client
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_exception_test.cpp
│ │ │ │ ├── common
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── file_operation.cpp
│ │ │ │ │ └── file_operation.h
│ │ │ │ ├── config
│ │ │ │ │ ├── client.conf
│ │ │ │ │ ├── client.conf.1
│ │ │ │ │ ├── topo_example.json
│ │ │ │ │ ├── topo_example_1.json
│ │ │ │ │ └── unstable
│ │ │ │ │ ├── topo_unstable.json
│ │ │ │ │ ├── topo_unstable.txt
│ │ │ │ │ ├── topo_unstable_small.json
│ │ │ │ │ └── topo_unstable_small.txt
│ │ │ │ ├── mds_exception_test.cpp
│ │ │ │ └── unstable_chunkserver_exception_test.cpp
│ │ │ ├── cluster_common
│ │ │ │ ├── BUILD
│ │ │ │ ├── build.sh
│ │ │ │ ├── cluster.cpp
│ │ │ │ ├── cluster.h
│ │ │ │ ├── cluster_basic_test.cpp
│ │ │ │ ├── cluster_common_topo_1.json
│ │ │ │ ├── cluster_common_topo_1.txt
│ │ │ │ ├── cluster_common_topo_2.json
│ │ │ │ ├── cluster_common_topo_2.txt
│ │ │ │ ├── generate_network.sh
│ │ │ │ └── mds.basic.conf
│ │ │ ├── common
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkservice_op.cpp
│ │ │ │ ├── chunkservice_op.h
│ │ │ │ ├── config_generator.h
│ │ │ │ ├── peer_cluster.cpp
│ │ │ │ └── peer_cluster.h
│ │ │ ├── heartbeat
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ ├── heartbeat_basic_test.cpp
│ │ │ │ └── heartbeat_exception_test.cpp
│ │ │ ├── raft
│ │ │ │ ├── BUILD
│ │ │ │ ├── raft_config_change_test.cpp
│ │ │ │ ├── raft_log_replication_test.cpp
│ │ │ │ ├── raft_snapshot_test.cpp
│ │ │ │ └── raft_vote_test.cpp
│ │ │ └── snapshotcloneserver
│ │ │ ├── BUILD
│ │ │ ├── config
│ │ │ │ ├── topo.json
│ │ │ │ ├── topo2.json
│ │ │ │ └── topo3.json
│ │ │ ├── fake_curvefs_client.cpp
│ │ │ ├── fake_curvefs_client.h
│ │ │ ├── fake_snapshot_data_store.cpp
│ │ │ ├── fake_snapshot_data_store.h
│ │ │ ├── fake_snapshotclone_meta_store.cpp
│ │ │ ├── fake_snapshotclone_meta_store.h
│ │ │ ├── snapshot_test_main.cpp
│ │ │ ├── snapshotcloneserver_common_test.cpp
│ │ │ ├── snapshotcloneserver_concurrent_test.cpp
│ │ │ ├── snapshotcloneserver_exception_test.cpp
│ │ │ ├── snapshotcloneserver_module.cpp
│ │ │ ├── snapshotcloneserver_module.h
│ │ │ ├── snapshotcloneserver_recover_test.cpp
│ │ │ ├── snapshotcloneserver_test.cpp
│ │ │ ├── test_snapshotcloneserver_helpler.cpp
│ │ │ └── test_snapshotcloneserver_helpler.h
│ │ ├── kvstorageclient
│ │ │ ├── BUILD
│ │ │ └── etcdclient_test.cpp
│ │ ├── leaderelection
│ │ │ ├── BUILD
│ │ │ └── leader_election_test.cpp
│ │ ├── mds
│ │ │ ├── chunkserverclient
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_chunkserverclient.h
│ │ │ │ ├── test_chunkserver_client.cpp
│ │ │ │ └── test_copyset_client.cpp
│ │ │ ├── copyset
│ │ │ │ ├── BUILD
│ │ │ │ ├── test_copyset.cpp
│ │ │ │ ├── test_copyset_manager.cpp
│ │ │ │ ├── test_copyset_validation.cpp
│ │ │ │ └── test_helper.h
│ │ │ ├── heartbeat
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_healthy_checker_test.cpp
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ └── heartbeat_manager_test.cpp
│ │ │ ├── mock
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_alloc_statistic.h
│ │ │ │ ├── mock_chunkserver.h
│ │ │ │ ├── mock_coordinator.h
│ │ │ │ ├── mock_etcdclient.h
│ │ │ │ ├── mock_snapshotcloneserver.h
│ │ │ │ ├── mock_topoAdapter.h
│ │ │ │ └── mock_topology.h
│ │ │ ├── nameserver2
│ │ │ │ ├── BUILD
│ │ │ │ ├── allocstatistic
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── alloc_statistic_helper_test.cpp
│ │ │ │ │ └── alloc_statistic_test.cpp
│ │ │ │ ├── chunk_allocator_test.cpp
│ │ │ │ ├── clean_core_test.cpp
│ │ │ │ ├── clean_task_manager_test.cpp
│ │ │ │ ├── curvefs_test.cpp
│ │ │ │ ├── fakes.h
│ │ │ │ ├── file_lock_test.cpp
│ │ │ │ ├── file_record_test.cpp
│ │ │ │ ├── helper
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── namespace_helper_test.cpp
│ │ │ │ ├── idgenerator
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── chunk_id_generator_test.cpp
│ │ │ │ │ ├── etcd_id_generator_test.cpp
│ │ │ │ │ └── inode_id_generator_test.cpp
│ │ │ │ ├── mock
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── mock_chunk_allocate.h
│ │ │ │ │ ├── mock_chunk_id_generator.h
│ │ │ │ │ ├── mock_clean_manager.h
│ │ │ │ │ ├── mock_file_record_manager.h
│ │ │ │ │ ├── mock_inode_id_generator.h
│ │ │ │ │ ├── mock_namespace_storage.h
│ │ │ │ │ ├── mock_snapshotclone_client.h
│ │ │ │ │ └── mock_topology_chunk_allocator.h
│ │ │ │ ├── nameserverMetrics_test.cpp
│ │ │ │ ├── namespace_service_test.cpp
│ │ │ │ ├── namespace_storage_cache_test.cpp
│ │ │ │ └── namespace_storage_test.cpp
│ │ │ ├── schedule
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ ├── coordinator_test.cpp
│ │ │ │ ├── leaderScheduler_test.cpp
│ │ │ │ ├── mock_topoAdapter.h
│ │ │ │ ├── mock_topology_service_manager.h
│ │ │ │ ├── operatorController_test.cpp
│ │ │ │ ├── operatorFactory_test.cpp
│ │ │ │ ├── operatorStep_test.cpp
│ │ │ │ ├── operator_test.cpp
│ │ │ │ ├── rapidLeaderSheduler_test.cpp
│ │ │ │ ├── recoverScheduler_test.cpp
│ │ │ │ ├── replicaScheduler_test.cpp
│ │ │ │ ├── scheduleMetrics_test.cpp
│ │ │ │ ├── scheduleService
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── scheduleService_test.cpp
│ │ │ │ ├── schedulerPOC
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── mock_topology.h
│ │ │ │ │ └── scheduler_poc.cpp
│ │ │ │ ├── scheduler_helper_test.cpp
│ │ │ │ └── topoAdapter_test.cpp
│ │ │ ├── server
│ │ │ │ ├── BUILD
│ │ │ │ └── mds_test.cpp
│ │ │ ├── snapshotcloneclient
│ │ │ │ ├── BUILD
│ │ │ │ └── test_snapshotclone_client.cpp
│ │ │ └── topology
│ │ │ ├── BUILD
│ │ │ ├── mock_topology.h
│ │ │ ├── test_topology.cpp
│ │ │ ├── test_topology_chunk_allocator.cpp
│ │ │ ├── test_topology_helper.cpp
│ │ │ ├── test_topology_helper.h
│ │ │ ├── test_topology_item.cpp
│ │ │ ├── test_topology_metric.cpp
│ │ │ ├── test_topology_service.cpp
│ │ │ ├── test_topology_service_manager.cpp
│ │ │ ├── test_topology_stat.cpp
│ │ │ ├── test_topology_storage_codec.cpp
│ │ │ ├── test_topology_storage_etcd.cpp
│ │ │ └── topology_test_main.cpp
│ │ ├── resources.list
│ │ ├── snapshotcloneserver
│ │ │ ├── BUILD
│ │ │ ├── mock_s3_adapter.h
│ │ │ ├── mock_snapshot_server.h
│ │ │ ├── snapshot_test_main.cpp
│ │ │ ├── test_client.conf
│ │ │ ├── test_clone_core.cpp
│ │ │ ├── test_clone_service_manager.cpp
│ │ │ ├── test_curvefs_client.cpp
│ │ │ ├── test_snapshot_core.cpp
│ │ │ ├── test_snapshot_data_store.cpp
│ │ │ ├── test_snapshot_referance.cpp
│ │ │ ├── test_snapshot_service_manager.cpp
│ │ │ ├── test_snapshotclone_meta_store_etcd.cpp
│ │ │ ├── test_snapshotclone_service.cpp
│ │ │ └── test_snapshotclonecodec.cpp
│ │ ├── tools
│ │ │ ├── BUILD
│ │ │ ├── chunkserver_client_test.cpp
│ │ │ ├── chunkserver_tool_factory_test.cpp
│ │ │ ├── common_test.cpp
│ │ │ ├── config
│ │ │ │ └── data_check.conf
│ │ │ ├── copyset_check_core_test.cpp
│ │ │ ├── copyset_check_test.cpp
│ │ │ ├── curve_cli_test.cpp
│ │ │ ├── curve_meta_tool_test.cpp
│ │ │ ├── curve_tool_factory_test.cpp
│ │ │ ├── curve_tool_test_main.cpp
│ │ │ ├── data_consistency_check_test.cpp
│ │ │ ├── etcd_client_test.cpp
│ │ │ ├── mds_client_test.cpp
│ │ │ ├── metric_client_test.cpp
│ │ │ ├── mock
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_chunkserver_client.h
│ │ │ │ ├── mock_cli_service.h
│ │ │ │ ├── mock_copyset_check_core.h
│ │ │ │ ├── mock_copyset_service.h
│ │ │ │ ├── mock_etcd_client.h
│ │ │ │ ├── mock_mds_client.h
│ │ │ │ ├── mock_metric_client.h
│ │ │ │ ├── mock_namespace_service.h
│ │ │ │ ├── mock_namespace_tool_core.h
│ │ │ │ ├── mock_schedule_service.h
│ │ │ │ ├── mock_segment_parser.h
│ │ │ │ ├── mock_snapshot_clone_client.h
│ │ │ │ ├── mock_snapshot_read.h
│ │ │ │ ├── mock_topology_service.h
│ │ │ │ └── mock_version_tool.h
│ │ │ ├── namespace_tool_core_test.cpp
│ │ │ ├── namespace_tool_test.cpp
│ │ │ ├── raft_log_tool_test.cpp
│ │ │ ├── schedule_tool_test.cpp
│ │ │ ├── segment_parser_test.cpp
│ │ │ ├── snapshot_clone_client_test.cpp
│ │ │ ├── status_tool_test.cpp
│ │ │ └── version_tool_test.cpp
│ │ └── util
│ │ ├── BUILD
│ │ └── config_generator.h
│ ├── thirdparties
│ │ ├── aws
│ │ │ ├── aws-c-common.BUILD
│ │ │ ├── aws-c-event-stream.BUILD
│ │ │ ├── aws-checksums.BUILD
│ │ │ └── aws.BUILD
│ │ ├── brpc
│ │ │ └── brpc.patch
│ │ ├── etcdclient
│ │ │ ├── Makefile
│ │ │ ├── etcdclient.go
│ │ │ ├── expose-session-for-election.patch
│ │ │ └── objectManager.go
│ │ └── glog
│ │ └── glog.patch
│ ├── tools
│ │ ├── BUILD
│ │ ├── curvefsTool.cpp
│ │ ├── curvefsTool.h
│ │ ├── raft_stat.sh
│ │ ├── snaptool
│ │ │ ├── clone_or_recover.py
│ │ │ ├── common.py
│ │ │ ├── config.py
│ │ │ ├── curltool.py
│ │ │ ├── delete_or_cancel_snap.py
│ │ │ ├── parser.py
│ │ │ ├── queryclone.py
│ │ │ ├── querysnap.py
│ │ │ ├── snaptool
│ │ │ └── snaptool.py
│ │ └── topo_example.json
│ ├── ut.sh
│ └── util
│ ├── build.sh
│ ├── image.sh
│ └── install.sh
├── curve-v1.2.6高可靠分布式存储系统_curve-v1.2.6.zip
└── 说明.htm
257 directories, 1439 files
├── curve-1.2.6
│ ├── BUILD
│ ├── CHANGELOG-1.0.md
│ ├── CHANGELOG-1.1.md
│ ├── CHANGELOG-1.2.md
│ ├── CONTRIBUTING.md
│ ├── Dockerfile
│ ├── LICENSE
│ ├── LICENSE_APACHE
│ ├── LICENSE_GPL
│ ├── LICENSE_LGPL
│ ├── Makefile
│ ├── README.md
│ ├── README_en.md
│ ├── WORKSPACE
│ ├── bazel
│ │ ├── etcdclient.BUILD
│ │ ├── gflags.BUILD
│ │ ├── glog.BUILD
│ │ ├── gmock.BUILD
│ │ ├── gtest.BUILD
│ │ ├── jsoncpp.BUILD
│ │ └── leveldb.BUILD
│ ├── build.sh
│ ├── common.bzl
│ ├── conf
│ │ ├── chunkserver.conf
│ │ ├── chunkserver.conf.example
│ │ ├── client.conf
│ │ ├── cs_client.conf
│ │ ├── etcd.conf
│ │ ├── mds.conf
│ │ ├── nginx.conf
│ │ ├── py_client.conf
│ │ ├── s3.conf
│ │ ├── snap_client.conf
│ │ ├── snapshot_clone_server.conf
│ │ └── tools.conf
│ ├── copts.bzl
│ ├── coverage
│ │ ├── check_coverage.sh
│ │ ├── filterbr.py
│ │ ├── gen-coverage-nebd.py
│ │ ├── gen-coverage.py
│ │ ├── gen-coverage2.py
│ │ ├── ut_incremental_check.py
│ │ └── ut_incremental_check_nebd.py
│ ├── curve-ansible
│ │ ├── README.md
│ │ ├── check_ansible_version.yml
│ │ ├── check_chunkserver.yml
│ │ ├── check_debain_package.yml
│ │ ├── check_mds.yml
│ │ ├── clean_curve.yml
│ │ ├── clean_curve_sdk.yml
│ │ ├── clean_nbd.yml
│ │ ├── clean_nebd.yml
│ │ ├── client.ini
│ │ ├── common_tasks
│ │ │ ├── check_chunkserver.yml
│ │ │ ├── check_cluster_healthy_status.yml
│ │ │ ├── check_debain_package.yml
│ │ │ ├── check_docker_exists.yml
│ │ │ ├── check_if_nbd_exists_in_kernel.yml
│ │ │ ├── check_mds.yml
│ │ │ ├── create_dir.yml
│ │ │ ├── create_logical_pool.yml
│ │ │ ├── create_physical_pool.yml
│ │ │ ├── get_chunkserver_number.yml
│ │ │ ├── get_curve_version_from_metric.yml
│ │ │ ├── get_distro_name.yml
│ │ │ ├── get_nebd_version_from_metric.yml
│ │ │ ├── install_with_yum_apt.yml
│ │ │ ├── restart_service.yml
│ │ │ ├── start_service.yml
│ │ │ ├── stop_service.yml
│ │ │ ├── update_config_with_puppet.yml
│ │ │ ├── update_package.yml
│ │ │ ├── wait_copysets_status_healthy.yml
│ │ │ ├── wait_until_server_down.yml
│ │ │ └── wait_until_server_up.yml
│ │ ├── deploy_curve.yml
│ │ ├── deploy_curve_sdk.yml
│ │ ├── deploy_monitor.yml
│ │ ├── deploy_nbd.yml
│ │ ├── deploy_nebd.yml
│ │ ├── deploy_walpool.yml
│ │ ├── group_vars
│ │ │ ├── chunkservers.yml
│ │ │ └── mds.yml
│ │ ├── host_vars
│ │ │ └── localhost.yml
│ │ ├── ping.yml
│ │ ├── roles
│ │ │ ├── clean
│ │ │ │ ├── files
│ │ │ │ │ └── recycle_chunks.sh
│ │ │ │ └── tasks
│ │ │ │ ├── include
│ │ │ │ │ ├── clean_chunkserver.yml
│ │ │ │ │ ├── clean_chunkserver_retain_chunkfilepool.yml
│ │ │ │ │ ├── clean_chunkserver_totally.yml
│ │ │ │ │ ├── clean_chunkserver_with_disk_format.yml
│ │ │ │ │ ├── clean_chunkserver_without_disk_format.yml
│ │ │ │ │ ├── clean_curve_sdk.yml
│ │ │ │ │ ├── clean_etcd.yml
│ │ │ │ │ ├── clean_mds.yml
│ │ │ │ │ ├── clean_nbd.yml
│ │ │ │ │ ├── clean_nebd.yml
│ │ │ │ │ ├── clean_snapshotcloneserver.yml
│ │ │ │ │ └── clean_snapshotcloneserver_nginx.yml
│ │ │ │ └── main.yml
│ │ │ ├── format_chunkserver
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ └── tasks
│ │ │ │ ├── include
│ │ │ │ │ ├── prepare_chunkserver_with_disk_format.yml
│ │ │ │ │ └── prepare_chunkserver_without_disk_format.yml
│ │ │ │ └── main.yml
│ │ │ ├── generate_config
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ └── generate_config_with_template.yml
│ │ │ │ │ └── main.yml
│ │ │ │ ├── templates
│ │ │ │ │ ├── chunkserver.conf.j2
│ │ │ │ │ ├── client.conf.j2
│ │ │ │ │ ├── docker-compose.yml.j2
│ │ │ │ │ ├── etcd.conf.yml.j2
│ │ │ │ │ ├── grafana.ini.j2
│ │ │ │ │ ├── mds.conf.j2
│ │ │ │ │ ├── nebd-client.conf.j2
│ │ │ │ │ ├── nebd-server.conf.j2
│ │ │ │ │ ├── nginx.conf.j2
│ │ │ │ │ ├── nginx_config.lua.j2
│ │ │ │ │ ├── prometheus.yml.j2
│ │ │ │ │ ├── s3.conf.j2
│ │ │ │ │ ├── snapshot_clone_server.conf.j2
│ │ │ │ │ ├── snapshot_tools.conf.j2
│ │ │ │ │ ├── tools.conf.j2
│ │ │ │ │ └── topo.json.j2
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── grafana_settings
│ │ │ │ └── tasks
│ │ │ │ └── main.yml
│ │ │ ├── install_package
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── files
│ │ │ │ │ └── disk_uuid_repair.py
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── copy_file_to_remote.yml
│ │ │ │ │ │ ├── install_curve-chunkserver.yml
│ │ │ │ │ │ ├── install_curve-mds.yml
│ │ │ │ │ │ ├── install_curve-monitor.yml
│ │ │ │ │ │ ├── install_curve-nbd.yml
│ │ │ │ │ │ ├── install_curve-sdk.yml
│ │ │ │ │ │ ├── install_curve-snapshotcloneserver-nginx.yml
│ │ │ │ │ │ ├── install_curve-snapshotcloneserver.yml
│ │ │ │ │ │ ├── install_curve-tools.yml
│ │ │ │ │ │ ├── install_daemon.yml
│ │ │ │ │ │ ├── install_deb_package.yml
│ │ │ │ │ │ ├── install_etcd-daemon.yml
│ │ │ │ │ │ ├── install_etcd.yml
│ │ │ │ │ │ ├── install_jemalloc.yml
│ │ │ │ │ │ ├── install_nebd.yml
│ │ │ │ │ │ ├── install_with_source_code.yml
│ │ │ │ │ │ └── set_curve_lib_dir.yml
│ │ │ │ │ └── main.yml
│ │ │ │ ├── templates
│ │ │ │ │ ├── chunkserver_ctl.sh.j2
│ │ │ │ │ ├── chunkserver_deploy.sh.j2
│ │ │ │ │ ├── etcd-daemon.sh.j2
│ │ │ │ │ ├── mds-daemon.sh.j2
│ │ │ │ │ ├── nebd-daemon.j2
│ │ │ │ │ └── snapshot-daemon.sh.j2
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── prepare_software_env
│ │ │ │ └── tasks
│ │ │ │ └── main.yml
│ │ │ ├── rapid_leader_schedule
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── tasks
│ │ │ │ │ └── main.yml
│ │ │ │ └── templates
│ │ │ │ └── check_leader_range.sh.j2
│ │ │ ├── restart_service
│ │ │ │ ├── defaults
│ │ │ │ │ └── main.yml
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── append_need_restart_cs_list.yml
│ │ │ │ │ │ ├── check_version_after_restart.yml
│ │ │ │ │ │ ├── restart_chunkserver.yml
│ │ │ │ │ │ ├── restart_etcd.yml
│ │ │ │ │ │ ├── restart_mds.yml
│ │ │ │ │ │ ├── restart_nebd.yml
│ │ │ │ │ │ └── restart_snapshotclone.yml
│ │ │ │ │ └── main.yml
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── set_leader_and_follower_list
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── get_all_ip.yml
│ │ │ │ │ │ ├── get_etcd_leader_ip.yml
│ │ │ │ │ │ ├── get_mds_leader_ip.yml
│ │ │ │ │ │ └── get_snapshot_leader_ip.yml
│ │ │ │ │ └── main.yml
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ ├── start_service
│ │ │ │ ├── tasks
│ │ │ │ │ ├── include
│ │ │ │ │ │ ├── start_chunkserver.yml
│ │ │ │ │ │ ├── start_etcd.yml
│ │ │ │ │ │ ├── start_mds.yml
│ │ │ │ │ │ ├── start_monitor.yml
│ │ │ │ │ │ ├── start_nebd.yml
│ │ │ │ │ │ ├── start_snapshotcloneserver.yml
│ │ │ │ │ │ └── start_snapshotcloneserver_nginx.yml
│ │ │ │ │ └── main.yml
│ │ │ │ └── vars
│ │ │ │ └── main.yml
│ │ │ └── stop_service
│ │ │ ├── tasks
│ │ │ │ ├── include
│ │ │ │ │ ├── stop_chunkserver.yml
│ │ │ │ │ ├── stop_etcd.yml
│ │ │ │ │ ├── stop_mds.yml
│ │ │ │ │ ├── stop_nebd.yml
│ │ │ │ │ ├── stop_snapshotcloneserver.yml
│ │ │ │ │ └── stop_snapshotcloneserver_nginx.yml
│ │ │ │ └── main.yml
│ │ │ └── vars
│ │ │ └── main.yml
│ │ ├── rolling_update_curve.yml
│ │ ├── rolling_update_curve_sdk.yml
│ │ ├── rolling_update_nbd.yml
│ │ ├── rolling_update_nebd.yml
│ │ ├── server.ini
│ │ ├── start_curve.yml
│ │ ├── start_nebd_server.yml
│ │ ├── stop_curve.yml
│ │ └── stop_nebd_server.yml
│ ├── curve-chunkserver
│ │ └── DEBIAN
│ │ └── control
│ ├── curve-mds
│ │ └── DEBIAN
│ │ ├── control
│ │ └── postinst
│ ├── curve-monitor
│ │ └── DEBIAN
│ │ └── control
│ ├── curve-nginx
│ │ └── DEBIAN
│ │ └── control
│ ├── curve-sdk
│ │ └── DEBIAN
│ │ ├── control
│ │ └── postinst
│ ├── curve-snapshotcloneserver
│ │ └── DEBIAN
│ │ ├── control
│ │ └── postinst
│ ├── curve-snapshotcloneserver-nginx
│ │ ├── app
│ │ │ ├── etc
│ │ │ │ └── config.lua
│ │ │ ├── lib
│ │ │ │ └── resty
│ │ │ │ ├── argutils.lua
│ │ │ │ ├── checkups
│ │ │ │ │ ├── api.lua
│ │ │ │ │ ├── base.lua
│ │ │ │ │ ├── consistent_hash.lua
│ │ │ │ │ ├── dyconfig.lua
│ │ │ │ │ ├── heartbeat.lua
│ │ │ │ │ ├── round_robin.lua
│ │ │ │ │ └── try.lua
│ │ │ │ ├── checkups.lua
│ │ │ │ └── uuid.lua
│ │ │ └── src
│ │ │ ├── init.lua
│ │ │ ├── init_worker.lua
│ │ │ ├── modules
│ │ │ │ ├── httpipe.lua
│ │ │ │ ├── httproxy.lua
│ │ │ │ ├── reqlimit.lua
│ │ │ │ └── utils.lua
│ │ │ └── snapshot.lua
│ │ ├── conf
│ │ │ ├── mime.types
│ │ │ └── nginx.conf
│ │ └── docker
│ │ └── Dockerfile
│ ├── curve-tools
│ │ └── DEBIAN
│ │ └── control
│ ├── curvefs_python
│ │ ├── BUILD_bak
│ │ ├── README
│ │ ├── __init__.py
│ │ ├── cbd_client.cpp
│ │ ├── cbd_client.h
│ │ ├── client.conf
│ │ ├── configure.sh
│ │ ├── curve
│ │ ├── curve_type.h
│ │ ├── curvefs.i
│ │ ├── curvefs.py
│ │ ├── curvefs_tool.py
│ │ ├── curvefs_wrap.cxx
│ │ ├── libcurvefs.h
│ │ ├── parser.py
│ │ ├── setup.py
│ │ └── test.py
│ ├── curvesnapshot_python
│ │ ├── BUILD_bak
│ │ ├── README
│ │ ├── __init__.py
│ │ ├── client.conf
│ │ ├── configure.sh
│ │ ├── curvesnapshot.py
│ │ ├── libcurveSnapshot.cpp
│ │ ├── libcurveSnapshot.h
│ │ ├── libcurve_snapshot.i
│ │ ├── libcurve_snapshot_wrap.cxx
│ │ └── test.py
│ ├── deploy
│ │ └── local
│ │ ├── chunkserver
│ │ │ ├── conf
│ │ │ │ ├── chunkserver.conf.0
│ │ │ │ ├── chunkserver.conf.1
│ │ │ │ ├── chunkserver.conf.2
│ │ │ │ ├── chunkserver.conf.docker1
│ │ │ │ ├── chunkserver.conf.docker2
│ │ │ │ ├── chunkserver.conf.docker3
│ │ │ │ ├── chunkserver.conf.docker4
│ │ │ │ ├── chunkserver_docker.conf.0
│ │ │ │ ├── chunkserver_docker.conf.1
│ │ │ │ └── chunkserver_docker.conf.2
│ │ │ ├── start_chunkservers_locally.sh
│ │ │ ├── start_chunkservers_locally_docker1.sh
│ │ │ ├── start_chunkservers_locally_docker2.sh
│ │ │ ├── start_chunkservers_locally_docker3.sh
│ │ │ ├── start_chunkservers_locally_docker4.sh
│ │ │ └── stop_chunkservers_locally.sh
│ │ └── test
│ │ └── start_multicopyset_io_test.sh
│ ├── docker
│ │ ├── Dockerfile
│ │ ├── base
│ │ │ ├── Dockerfile
│ │ │ └── Makefile
│ │ └── entrypoint.sh
│ ├── docs
│ │ ├── README.md
│ │ ├── cn
│ │ │ ├── build_and_run.md
│ │ │ ├── chunkserver_design.md
│ │ │ ├── curve-client-python-api.md
│ │ │ ├── curve-client.md
│ │ │ ├── curve_ops_tool.md
│ │ │ ├── deploy.md
│ │ │ ├── k8s_csi_interface.md
│ │ │ ├── mds.md
│ │ │ ├── monitor.md
│ │ │ ├── nebd.md
│ │ │ ├── quality-integration-example.md
│ │ │ ├── quality.md
│ │ │ ├── snapshotcloneserver.md
│ │ │ └── snapshotcloneserver_interface.md
│ │ ├── en
│ │ │ ├── chunkserver_design_en.md
│ │ │ ├── client_en.md
│ │ │ ├── mds_en.md
│ │ │ ├── nebd_en.md
│ │ │ ├── quality_en.md
│ │ │ └── snapshotcloneserver_en.md
│ │ └── images
│ │ ├── chunkserver_heartbeat.png
│ │ ├── chunkserverstructure.png
│ │ ├── clone-file-status.png
│ │ ├── clone.png
│ │ ├── curve-client-arch.png
│ │ ├── curve-client-thread-model.png
│ │ ├── curve-file.png
│ │ ├── curve-logo1.png
│ │ ├── curve-logo2.png
│ │ ├── curve-raft-arch-1.png
│ │ ├── grafana-example-1.png
│ │ ├── grafana-example-2.png
│ │ ├── grafana-example-3.png
│ │ ├── grafana-reporter.png
│ │ ├── mds-copyset.png
│ │ ├── mds-heartbeat.png
│ │ ├── mds-nameserver.png
│ │ ├── mds-namespace.png
│ │ ├── mds-schedule-en.png
│ │ ├── mds-schedule.png
│ │ ├── mds-segment-chunk-en.png
│ │ ├── mds-segment-chunk.png
│ │ ├── mds-topology-all.png
│ │ ├── mds-topology-l.png
│ │ ├── monitor.png
│ │ ├── nebd-modules.png
│ │ ├── nebd-overview.jpg
│ │ ├── nebd-part1-write-request-en.png
│ │ ├── nebd-part1-write-request.png
│ │ ├── nebd-part2-heartbeat.png
│ │ ├── quality-auto-abnormal.png
│ │ ├── quality-auto-robotframework.png
│ │ ├── quality-control-1.png
│ │ ├── quality-control-2.png
│ │ ├── quality-cov.png
│ │ ├── quality-process.png
│ │ ├── quality-theory.png
│ │ ├── snap-s3-format.png
│ │ └── snap.png
│ ├── include
│ │ ├── BUILD
│ │ ├── chunkserver
│ │ │ ├── BUILD
│ │ │ └── chunkserver_common.h
│ │ ├── client
│ │ │ ├── BUILD
│ │ │ ├── libcbd.h
│ │ │ ├── libcurve.h
│ │ │ └── libcurve_define.h
│ │ ├── curve_compiler_specific.h
│ │ └── etcdclient
│ │ ├── BUILD
│ │ └── etcdclient.h
│ ├── k8s
│ │ ├── nbd
│ │ │ └── nbd-package
│ │ │ ├── DEBIAN
│ │ │ │ ├── control
│ │ │ │ ├── postinst
│ │ │ │ └── prerm
│ │ │ ├── etc
│ │ │ │ ├── nbd
│ │ │ │ │ └── k8s_curve.conf
│ │ │ │ └── systemd
│ │ │ │ └── system
│ │ │ │ ├── create_curve_volume.service
│ │ │ │ └── data.mount
│ │ │ └── usr
│ │ │ └── bin
│ │ │ ├── mount_curve_clouddisk.sh
│ │ │ └── umount_curve_clouddisk.sh
│ │ └── nebd
│ │ └── nebd-package
│ │ ├── DEBIAN
│ │ │ ├── control
│ │ │ ├── postinst
│ │ │ ├── preinst
│ │ │ └── prerm
│ │ └── etc
│ │ ├── nebd
│ │ │ ├── nebd-client.conf
│ │ │ └── nebd-server.conf
│ │ └── systemd
│ │ └── system
│ │ └── nebd-daemon.service
│ ├── localut.sh
│ ├── mk-deb.sh
│ ├── mk-tar.sh
│ ├── monitor
│ │ ├── README.md
│ │ ├── curve-monitor.sh
│ │ ├── docker-compose.yml
│ │ ├── grafana
│ │ │ ├── dashboards
│ │ │ │ ├── chunkserver.json
│ │ │ │ ├── client.json
│ │ │ │ ├── etcd.json
│ │ │ │ ├── mds.json
│ │ │ │ ├── report.json
│ │ │ │ └── snapshotcloneserver.json
│ │ │ ├── grafana.ini
│ │ │ ├── provisioning
│ │ │ │ ├── dashboards
│ │ │ │ │ └── all.yml
│ │ │ │ └── datasources
│ │ │ │ └── all.yml
│ │ │ └── report
│ │ │ └── README
│ │ ├── grafana-report.py
│ │ ├── prometheus
│ │ │ └── prometheus.yml
│ │ ├── target.ini
│ │ ├── target_json.py
│ │ └── update_dashboard.sh
│ ├── nbd
│ │ ├── README.md
│ │ ├── nbd-package
│ │ │ ├── DEBIAN
│ │ │ │ ├── control
│ │ │ │ ├── postinst
│ │ │ │ ├── preinst
│ │ │ │ └── prerm
│ │ │ ├── etc
│ │ │ │ ├── curve
│ │ │ │ │ └── curvetab
│ │ │ │ └── systemd
│ │ │ │ └── system
│ │ │ │ └── map_curve_disk.service
│ │ │ └── usr
│ │ │ └── bin
│ │ │ └── map_curve_disk.sh
│ │ ├── src
│ │ │ ├── BUILD
│ │ │ ├── ImageInstance.cpp
│ │ │ ├── ImageInstance.h
│ │ │ ├── NBDController.cpp
│ │ │ ├── NBDController.h
│ │ │ ├── NBDServer.cpp
│ │ │ ├── NBDServer.h
│ │ │ ├── NBDTool.cpp
│ │ │ ├── NBDTool.h
│ │ │ ├── NBDWatchContext.cpp
│ │ │ ├── NBDWatchContext.h
│ │ │ ├── SafeIO.cpp
│ │ │ ├── SafeIO.h
│ │ │ ├── argparse.cpp
│ │ │ ├── argparse.h
│ │ │ ├── define.h
│ │ │ ├── main.cpp
│ │ │ ├── nbd-netlink.h
│ │ │ ├── texttable.cpp
│ │ │ ├── texttable.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ └── test
│ │ ├── BUILD
│ │ ├── fake_safe_io.h
│ │ ├── main.cpp
│ │ ├── mock_image_instance.h
│ │ ├── mock_nbd_controller.h
│ │ ├── mock_safe_io.h
│ │ ├── nbd_config_test.cpp
│ │ ├── nbd_server_test.cpp
│ │ ├── nbd_tool_test.cpp
│ │ ├── nbd_watch_context_test.cpp
│ │ └── test_argparse.cpp
│ ├── nebd
│ │ ├── etc
│ │ │ └── nebd
│ │ │ ├── nebd-client.conf
│ │ │ └── nebd-server.conf
│ │ ├── nebd-package
│ │ │ ├── DEBIAN
│ │ │ │ ├── control
│ │ │ │ ├── postinst
│ │ │ │ └── prerm
│ │ │ ├── data
│ │ │ │ ├── log
│ │ │ │ │ └── nebd
│ │ │ │ │ ├── client
│ │ │ │ │ └── server
│ │ │ │ └── nebd
│ │ │ │ └── lock
│ │ │ └── usr
│ │ │ └── bin
│ │ │ └── nebd-daemon
│ │ ├── proto
│ │ │ ├── BUILD
│ │ │ ├── client.proto
│ │ │ ├── heartbeat.proto
│ │ │ └── nebd-common.proto
│ │ ├── src
│ │ │ ├── common
│ │ │ │ ├── BUILD
│ │ │ │ ├── configuration.cpp
│ │ │ │ ├── configuration.h
│ │ │ │ ├── crc32.h
│ │ │ │ ├── file_lock.cpp
│ │ │ │ ├── file_lock.h
│ │ │ │ ├── interrupt_sleep.h
│ │ │ │ ├── name_lock.cpp
│ │ │ │ ├── name_lock.h
│ │ │ │ ├── nebd_version.cpp
│ │ │ │ ├── nebd_version.h
│ │ │ │ ├── posix_wrapper.cpp
│ │ │ │ ├── posix_wrapper.h
│ │ │ │ ├── rw_lock.h
│ │ │ │ ├── stringstatus.cpp
│ │ │ │ ├── stringstatus.h
│ │ │ │ ├── timeutility.h
│ │ │ │ └── uncopyable.h
│ │ │ ├── part1
│ │ │ │ ├── BUILD
│ │ │ │ ├── async_request_closure.cpp
│ │ │ │ ├── async_request_closure.h
│ │ │ │ ├── heartbeat_manager.cpp
│ │ │ │ ├── heartbeat_manager.h
│ │ │ │ ├── libnebd.cpp
│ │ │ │ ├── libnebd.h
│ │ │ │ ├── libnebd_file.cpp
│ │ │ │ ├── libnebd_file.h
│ │ │ │ ├── nebd_client.cpp
│ │ │ │ ├── nebd_client.h
│ │ │ │ ├── nebd_common.h
│ │ │ │ ├── nebd_metacache.cpp
│ │ │ │ └── nebd_metacache.h
│ │ │ └── part2
│ │ │ ├── BUILD
│ │ │ ├── define.h
│ │ │ ├── file_entity.cpp
│ │ │ ├── file_entity.h
│ │ │ ├── file_manager.cpp
│ │ │ ├── file_manager.h
│ │ │ ├── file_service.cpp
│ │ │ ├── file_service.h
│ │ │ ├── heartbeat_manager.cpp
│ │ │ ├── heartbeat_manager.h
│ │ │ ├── heartbeat_service.cpp
│ │ │ ├── heartbeat_service.h
│ │ │ ├── main.cpp
│ │ │ ├── metafile_manager.cpp
│ │ │ ├── metafile_manager.h
│ │ │ ├── nebd_server.cpp
│ │ │ ├── nebd_server.h
│ │ │ ├── request_executor.cpp
│ │ │ ├── request_executor.h
│ │ │ ├── request_executor_curve.cpp
│ │ │ ├── request_executor_curve.h
│ │ │ ├── util.cpp
│ │ │ └── util.h
│ │ └── test
│ │ ├── common
│ │ │ ├── BUILD
│ │ │ ├── configuration_test.cpp
│ │ │ ├── crc32_test.cpp
│ │ │ ├── interruptible_sleeper_test.cpp
│ │ │ ├── posix_wrapper_test.cpp
│ │ │ ├── rw_lock_test.cpp
│ │ │ ├── stringstatus_test.cpp
│ │ │ └── test_name_lock.cpp
│ │ ├── part1
│ │ │ ├── BUILD
│ │ │ ├── fake_file_service.cpp
│ │ │ ├── fake_file_service.h
│ │ │ ├── fake_heartbeat_service.h
│ │ │ ├── heartbeat_manager_unittest.cpp
│ │ │ ├── mock_file_service.h
│ │ │ ├── mock_heartbeat_service.h
│ │ │ ├── nebd_client_unittest.cpp
│ │ │ ├── nebd_lib_unittest.cpp
│ │ │ └── nebd_metacache_unittest.cpp
│ │ ├── part2
│ │ │ ├── BUILD
│ │ │ ├── file_manager_unittest.cpp
│ │ │ ├── file_service_unittest.cpp
│ │ │ ├── heartbeat_manager_unittest.cpp
│ │ │ ├── heartbeat_service_test.cpp
│ │ │ ├── metafile_manager_test.cpp
│ │ │ ├── mock_curve_client.h
│ │ │ ├── mock_file_entity.h
│ │ │ ├── mock_file_manager.h
│ │ │ ├── mock_heartbeat_manager.h
│ │ │ ├── mock_metafile_manager.h
│ │ │ ├── mock_posix_wrapper.h
│ │ │ ├── mock_request_executor.h
│ │ │ ├── test_nebd_server.cpp
│ │ │ └── test_request_executor_curve.cpp
│ │ └── utils
│ │ ├── BUILD
│ │ └── config_generator.h
│ ├── proto
│ │ ├── BUILD
│ │ ├── chunk.proto
│ │ ├── chunkserver.proto
│ │ ├── cli.proto
│ │ ├── cli2.proto
│ │ ├── common.proto
│ │ ├── configuration.proto
│ │ ├── copyset.proto
│ │ ├── curve_storage.proto
│ │ ├── heartbeat.proto
│ │ ├── integrity.proto
│ │ ├── nameserver2.proto
│ │ ├── schedule.proto
│ │ ├── snapshotcloneserver.proto
│ │ └── topology.proto
│ ├── replace-curve-repo.sh
│ ├── robot
│ │ ├── Resources
│ │ │ ├── __init__.py
│ │ │ ├── config
│ │ │ │ ├── __init__.py
│ │ │ │ └── config.py
│ │ │ ├── keywords
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_operate.py
│ │ │ │ ├── cpu_stress.py
│ │ │ │ ├── deleteforce-test.py
│ │ │ │ ├── deploy.py
│ │ │ │ ├── fault_inject.py
│ │ │ │ ├── mythread.py
│ │ │ │ ├── snapshot_operate.py
│ │ │ │ └── test_curve_stability_nbd.py
│ │ │ ├── lib
│ │ │ │ ├── __init__.py
│ │ │ │ └── shell_operator.py
│ │ │ ├── logger
│ │ │ │ ├── __init__.py
│ │ │ │ └── logger.py
│ │ │ ├── swig
│ │ │ │ ├── __init__.py
│ │ │ │ ├── snapshot_client.py
│ │ │ │ └── swig_operate.py
│ │ │ └── test
│ │ │ ├── __init__.py
│ │ │ └── curve_base_test.py
│ │ ├── ansible_deploy.sh
│ │ ├── curve_choas.txt
│ │ ├── curve_failover_robot.txt
│ │ ├── curve_init.txt
│ │ ├── curve_robot.txt
│ │ └── init_env.sh
│ ├── src
│ │ ├── chunkserver
│ │ │ ├── BUILD
│ │ │ ├── braft_cli_service.cpp
│ │ │ ├── braft_cli_service.h
│ │ │ ├── braft_cli_service2.cpp
│ │ │ ├── braft_cli_service2.h
│ │ │ ├── chunk_closure.cpp
│ │ │ ├── chunk_closure.h
│ │ │ ├── chunk_service.cpp
│ │ │ ├── chunk_service.h
│ │ │ ├── chunk_service_closure.cpp
│ │ │ ├── chunk_service_closure.h
│ │ │ ├── chunkserver.cpp
│ │ │ ├── chunkserver.h
│ │ │ ├── chunkserver_helper.cpp
│ │ │ ├── chunkserver_helper.h
│ │ │ ├── chunkserver_main.cpp
│ │ │ ├── chunkserver_metrics.cpp
│ │ │ ├── chunkserver_metrics.h
│ │ │ ├── chunkserver_service.cpp
│ │ │ ├── chunkserver_service.h
│ │ │ ├── cli.cpp
│ │ │ ├── cli.h
│ │ │ ├── cli2.cpp
│ │ │ ├── cli2.h
│ │ │ ├── clone_copyer.cpp
│ │ │ ├── clone_copyer.h
│ │ │ ├── clone_core.cpp
│ │ │ ├── clone_core.h
│ │ │ ├── clone_manager.cpp
│ │ │ ├── clone_manager.h
│ │ │ ├── clone_task.h
│ │ │ ├── concurrent_apply
│ │ │ │ ├── BUILD
│ │ │ │ ├── concurrent_apply.cpp
│ │ │ │ └── concurrent_apply.h
│ │ │ ├── conf_epoch_file.cpp
│ │ │ ├── conf_epoch_file.h
│ │ │ ├── config_info.cpp
│ │ │ ├── config_info.h
│ │ │ ├── copyset_node.cpp
│ │ │ ├── copyset_node.h
│ │ │ ├── copyset_node_manager.cpp
│ │ │ ├── copyset_node_manager.h
│ │ │ ├── copyset_service.cpp
│ │ │ ├── copyset_service.h
│ │ │ ├── datastore
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_chunkfile.cpp
│ │ │ │ ├── chunkserver_chunkfile.h
│ │ │ │ ├── chunkserver_datastore.cpp
│ │ │ │ ├── chunkserver_datastore.h
│ │ │ │ ├── chunkserver_snapshot.cpp
│ │ │ │ ├── chunkserver_snapshot.h
│ │ │ │ ├── datastore_file_helper.cpp
│ │ │ │ ├── datastore_file_helper.h
│ │ │ │ ├── define.h
│ │ │ │ ├── file_pool.cpp
│ │ │ │ ├── file_pool.h
│ │ │ │ └── filename_operator.h
│ │ │ ├── epoch_map.cpp
│ │ │ ├── epoch_map.h
│ │ │ ├── heartbeat.cpp
│ │ │ ├── heartbeat.h
│ │ │ ├── heartbeat_helper.cpp
│ │ │ ├── heartbeat_helper.h
│ │ │ ├── inflight_throttle.h
│ │ │ ├── op_request.cpp
│ │ │ ├── op_request.h
│ │ │ ├── passive_getfn.cpp
│ │ │ ├── passive_getfn.h
│ │ │ ├── raft_node.h
│ │ │ ├── raftlog
│ │ │ │ ├── BUILD
│ │ │ │ ├── braft_segment.h
│ │ │ │ ├── curve_segment.cpp
│ │ │ │ ├── curve_segment.h
│ │ │ │ ├── curve_segment_log_storage.cpp
│ │ │ │ ├── curve_segment_log_storage.h
│ │ │ │ ├── define.h
│ │ │ │ └── segment.h
│ │ │ ├── raftsnapshot
│ │ │ │ ├── BUILD
│ │ │ │ ├── curve_file_adaptor.h
│ │ │ │ ├── curve_file_service.cpp
│ │ │ │ ├── curve_file_service.h
│ │ │ │ ├── curve_filesystem_adaptor.cpp
│ │ │ │ ├── curve_filesystem_adaptor.h
│ │ │ │ ├── curve_snapshot.cpp
│ │ │ │ ├── curve_snapshot.h
│ │ │ │ ├── curve_snapshot_attachment.cpp
│ │ │ │ ├── curve_snapshot_attachment.h
│ │ │ │ ├── curve_snapshot_copier.cpp
│ │ │ │ ├── curve_snapshot_copier.h
│ │ │ │ ├── curve_snapshot_file_reader.cpp
│ │ │ │ ├── curve_snapshot_file_reader.h
│ │ │ │ ├── curve_snapshot_reader.cpp
│ │ │ │ ├── curve_snapshot_reader.h
│ │ │ │ ├── curve_snapshot_storage.cpp
│ │ │ │ ├── curve_snapshot_storage.h
│ │ │ │ ├── curve_snapshot_writer.cpp
│ │ │ │ ├── curve_snapshot_writer.h
│ │ │ │ └── define.h
│ │ │ ├── register.cpp
│ │ │ ├── register.h
│ │ │ ├── trash.cpp
│ │ │ ├── trash.h
│ │ │ └── uri_paser.h
│ │ ├── client
│ │ │ ├── BUILD
│ │ │ ├── chunk_closure.cpp
│ │ │ ├── chunk_closure.h
│ │ │ ├── chunkserver_broadcaster.cpp
│ │ │ ├── chunkserver_broadcaster.h
│ │ │ ├── chunkserver_client.cpp
│ │ │ ├── chunkserver_client.h
│ │ │ ├── client_common.cpp
│ │ │ ├── client_common.h
│ │ │ ├── client_config.cpp
│ │ │ ├── client_config.h
│ │ │ ├── client_metric.h
│ │ │ ├── config_info.h
│ │ │ ├── copyset_client.cpp
│ │ │ ├── copyset_client.h
│ │ │ ├── file_instance.cpp
│ │ │ ├── file_instance.h
│ │ │ ├── inflight_controller.h
│ │ │ ├── io_condition_varaiable.h
│ │ │ ├── io_tracker.cpp
│ │ │ ├── io_tracker.h
│ │ │ ├── iomanager.h
│ │ │ ├── iomanager4chunk.cpp
│ │ │ ├── iomanager4chunk.h
│ │ │ ├── iomanager4file.cpp
│ │ │ ├── iomanager4file.h
│ │ │ ├── lease_executor.cpp
│ │ │ ├── lease_executor.h
│ │ │ ├── libcbd_ext4.cpp
│ │ │ ├── libcbd_libcurve.cpp
│ │ │ ├── libcurve_client.cpp
│ │ │ ├── libcurve_file.cpp
│ │ │ ├── libcurve_file.h
│ │ │ ├── libcurve_snapshot.cpp
│ │ │ ├── libcurve_snapshot.h
│ │ │ ├── mds_client.cpp
│ │ │ ├── mds_client.h
│ │ │ ├── mds_client_base.cpp
│ │ │ ├── mds_client_base.h
│ │ │ ├── metacache.cpp
│ │ │ ├── metacache.h
│ │ │ ├── metacache_struct.h
│ │ │ ├── request_closure.cpp
│ │ │ ├── request_closure.h
│ │ │ ├── request_context.cpp
│ │ │ ├── request_context.h
│ │ │ ├── request_scheduler.cpp
│ │ │ ├── request_scheduler.h
│ │ │ ├── request_sender.cpp
│ │ │ ├── request_sender.h
│ │ │ ├── request_sender_manager.cpp
│ │ │ ├── request_sender_manager.h
│ │ │ ├── service_helper.cpp
│ │ │ ├── service_helper.h
│ │ │ ├── source_reader.cpp
│ │ │ ├── source_reader.h
│ │ │ ├── splitor.cpp
│ │ │ ├── splitor.h
│ │ │ ├── unstable_helper.cpp
│ │ │ └── unstable_helper.h
│ │ ├── common
│ │ │ ├── BUILD
│ │ │ ├── authenticator.cpp
│ │ │ ├── authenticator.h
│ │ │ ├── bitmap.cpp
│ │ │ ├── bitmap.h
│ │ │ ├── channel_pool.cpp
│ │ │ ├── channel_pool.h
│ │ │ ├── concurrent
│ │ │ │ ├── BUILD
│ │ │ │ ├── bounded_blocking_queue.h
│ │ │ │ ├── concurrent.h
│ │ │ │ ├── count_down_event.h
│ │ │ │ ├── name_lock.cpp
│ │ │ │ ├── name_lock.h
│ │ │ │ ├── rw_lock.h
│ │ │ │ ├── spinlock.h
│ │ │ │ ├── task_queue.h
│ │ │ │ ├── task_thread_pool.h
│ │ │ │ ├── thread_pool.cpp
│ │ │ │ └── thread_pool.h
│ │ │ ├── configuration.cpp
│ │ │ ├── configuration.h
│ │ │ ├── crc32.h
│ │ │ ├── curve_define.h
│ │ │ ├── curve_version.cpp
│ │ │ ├── curve_version.h
│ │ │ ├── define.h
│ │ │ ├── encode.h
│ │ │ ├── fast_align.h
│ │ │ ├── fs_util.h
│ │ │ ├── hash.h
│ │ │ ├── interruptible_sleeper.h
│ │ │ ├── location_operator.cpp
│ │ │ ├── location_operator.h
│ │ │ ├── math_util.h
│ │ │ ├── namespace_define.h
│ │ │ ├── net_common.h
│ │ │ ├── s3_adapter.cpp
│ │ │ ├── s3_adapter.h
│ │ │ ├── snapshotclone
│ │ │ │ ├── BUILD
│ │ │ │ ├── snapshotclone_define.cpp
│ │ │ │ └── snapshotclone_define.h
│ │ │ ├── string_util.h
│ │ │ ├── stringstatus.cpp
│ │ │ ├── stringstatus.h
│ │ │ ├── task_tracker.cpp
│ │ │ ├── task_tracker.h
│ │ │ ├── timeutility.h
│ │ │ ├── uncopyable.h
│ │ │ ├── uuid.h
│ │ │ ├── wait_interval.cpp
│ │ │ └── wait_interval.h
│ │ ├── fs
│ │ │ ├── BUILD
│ │ │ ├── ext4_filesystem_impl.cpp
│ │ │ ├── ext4_filesystem_impl.h
│ │ │ ├── fs_common.h
│ │ │ ├── local_filesystem.cpp
│ │ │ ├── local_filesystem.h
│ │ │ ├── wrap_posix.cpp
│ │ │ └── wrap_posix.h
│ │ ├── kvstorageclient
│ │ │ ├── BUILD
│ │ │ ├── etcd_client.cpp
│ │ │ └── etcd_client.h
│ │ ├── leader_election
│ │ │ ├── BUILD
│ │ │ ├── leader_election.cpp
│ │ │ └── leader_election.h
│ │ ├── mds
│ │ │ ├── chunkserverclient
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_client.cpp
│ │ │ │ ├── chunkserver_client.h
│ │ │ │ ├── chunkserverclient_config.h
│ │ │ │ ├── copyset_client.cpp
│ │ │ │ └── copyset_client.h
│ │ │ ├── common
│ │ │ │ ├── BUILD
│ │ │ │ └── mds_define.h
│ │ │ ├── copyset
│ │ │ │ ├── BUILD
│ │ │ │ ├── copyset_config.h
│ │ │ │ ├── copyset_manager.cpp
│ │ │ │ ├── copyset_manager.h
│ │ │ │ ├── copyset_policy.cpp
│ │ │ │ ├── copyset_policy.h
│ │ │ │ ├── copyset_structure.h
│ │ │ │ ├── copyset_validation.cpp
│ │ │ │ └── copyset_validation.h
│ │ │ ├── heartbeat
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_healthy_checker.cpp
│ │ │ │ ├── chunkserver_healthy_checker.h
│ │ │ │ ├── copyset_conf_generator.cpp
│ │ │ │ ├── copyset_conf_generator.h
│ │ │ │ ├── heartbeat_manager.cpp
│ │ │ │ ├── heartbeat_manager.h
│ │ │ │ ├── heartbeat_service.cpp
│ │ │ │ ├── heartbeat_service.h
│ │ │ │ ├── topo_updater.cpp
│ │ │ │ └── topo_updater.h
│ │ │ ├── main
│ │ │ │ ├── BUILD
│ │ │ │ └── main.cpp
│ │ │ ├── nameserver2
│ │ │ │ ├── BUILD
│ │ │ │ ├── allocstatistic
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── alloc_statistic.cpp
│ │ │ │ │ ├── alloc_statistic.h
│ │ │ │ │ ├── alloc_statistic_helper.cpp
│ │ │ │ │ └── alloc_statistic_helper.h
│ │ │ │ ├── async_delete_snapshot_entity.h
│ │ │ │ ├── chunk_allocator.cpp
│ │ │ │ ├── chunk_allocator.h
│ │ │ │ ├── clean_core.cpp
│ │ │ │ ├── clean_core.h
│ │ │ │ ├── clean_manager.cpp
│ │ │ │ ├── clean_manager.h
│ │ │ │ ├── clean_task.h
│ │ │ │ ├── clean_task_manager.cpp
│ │ │ │ ├── clean_task_manager.h
│ │ │ │ ├── curvefs.cpp
│ │ │ │ ├── curvefs.h
│ │ │ │ ├── file_lock.cpp
│ │ │ │ ├── file_lock.h
│ │ │ │ ├── file_record.cpp
│ │ │ │ ├── file_record.h
│ │ │ │ ├── helper
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── namespace_helper.cpp
│ │ │ │ │ └── namespace_helper.h
│ │ │ │ ├── idgenerator
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── chunk_id_generator.cpp
│ │ │ │ │ ├── chunk_id_generator.h
│ │ │ │ │ ├── etcd_id_generator.cpp
│ │ │ │ │ ├── etcd_id_generator.h
│ │ │ │ │ ├── inode_id_generator.cpp
│ │ │ │ │ └── inode_id_generator.h
│ │ │ │ ├── nameserverMetrics.cpp
│ │ │ │ ├── nameserverMetrics.h
│ │ │ │ ├── namespace_service.cpp
│ │ │ │ ├── namespace_service.h
│ │ │ │ ├── namespace_storage.cpp
│ │ │ │ ├── namespace_storage.h
│ │ │ │ ├── namespace_storage_cache.cpp
│ │ │ │ ├── namespace_storage_cache.h
│ │ │ │ └── task_progress.h
│ │ │ ├── schedule
│ │ │ │ ├── BUILD
│ │ │ │ ├── coordinator.cpp
│ │ │ │ ├── coordinator.h
│ │ │ │ ├── copySetScheduler.cpp
│ │ │ │ ├── leaderScheduler.cpp
│ │ │ │ ├── operator.cpp
│ │ │ │ ├── operator.h
│ │ │ │ ├── operatorController.cpp
│ │ │ │ ├── operatorController.h
│ │ │ │ ├── operatorFactory.cpp
│ │ │ │ ├── operatorFactory.h
│ │ │ │ ├── operatorStep.cpp
│ │ │ │ ├── operatorStep.h
│ │ │ │ ├── rapidLeaderScheduler.cpp
│ │ │ │ ├── recoverScheduler.cpp
│ │ │ │ ├── replicaScheduler.cpp
│ │ │ │ ├── scheduleMetrics.cpp
│ │ │ │ ├── scheduleMetrics.h
│ │ │ │ ├── scheduleService
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── scheduleService.cpp
│ │ │ │ │ └── scheduleService.h
│ │ │ │ ├── schedule_define.h
│ │ │ │ ├── scheduler.cpp
│ │ │ │ ├── scheduler.h
│ │ │ │ ├── scheduler_helper.cpp
│ │ │ │ ├── scheduler_helper.h
│ │ │ │ ├── topoAdapter.cpp
│ │ │ │ └── topoAdapter.h
│ │ │ ├── server
│ │ │ │ ├── BUILD
│ │ │ │ ├── mds.cpp
│ │ │ │ └── mds.h
│ │ │ ├── snapshotcloneclient
│ │ │ │ ├── BUILD
│ │ │ │ ├── snapshotclone_client.cpp
│ │ │ │ └── snapshotclone_client.h
│ │ │ └── topology
│ │ │ ├── BUILD
│ │ │ ├── topology.cpp
│ │ │ ├── topology.h
│ │ │ ├── topology_chunk_allocator.cpp
│ │ │ ├── topology_chunk_allocator.h
│ │ │ ├── topology_config.h
│ │ │ ├── topology_id_generator.cpp
│ │ │ ├── topology_id_generator.h
│ │ │ ├── topology_item.cpp
│ │ │ ├── topology_item.h
│ │ │ ├── topology_metric.cpp
│ │ │ ├── topology_metric.h
│ │ │ ├── topology_service.cpp
│ │ │ ├── topology_service.h
│ │ │ ├── topology_service_manager.cpp
│ │ │ ├── topology_service_manager.h
│ │ │ ├── topology_stat.cpp
│ │ │ ├── topology_stat.h
│ │ │ ├── topology_storage_codec.cpp
│ │ │ ├── topology_storage_codec.h
│ │ │ ├── topology_storge.h
│ │ │ ├── topology_storge_etcd.cpp
│ │ │ ├── topology_storge_etcd.h
│ │ │ ├── topology_token_generator.cpp
│ │ │ └── topology_token_generator.h
│ │ ├── sfs
│ │ │ └── sfsMock.h
│ │ ├── snapshotcloneserver
│ │ │ ├── BUILD
│ │ │ ├── clone
│ │ │ │ ├── clone_closure.h
│ │ │ │ ├── clone_core.cpp
│ │ │ │ ├── clone_core.h
│ │ │ │ ├── clone_reference.cpp
│ │ │ │ ├── clone_reference.h
│ │ │ │ ├── clone_service_manager.cpp
│ │ │ │ ├── clone_service_manager.h
│ │ │ │ ├── clone_task.cpp
│ │ │ │ ├── clone_task.h
│ │ │ │ ├── clone_task_manager.cpp
│ │ │ │ └── clone_task_manager.h
│ │ │ ├── common
│ │ │ │ ├── config.h
│ │ │ │ ├── curvefs_client.cpp
│ │ │ │ ├── curvefs_client.h
│ │ │ │ ├── snapshot_reference.cpp
│ │ │ │ ├── snapshot_reference.h
│ │ │ │ ├── snapshotclone_info.cpp
│ │ │ │ ├── snapshotclone_info.h
│ │ │ │ ├── snapshotclone_meta_store.h
│ │ │ │ ├── snapshotclone_meta_store_etcd.cpp
│ │ │ │ ├── snapshotclone_meta_store_etcd.h
│ │ │ │ ├── snapshotclone_metric.cpp
│ │ │ │ ├── snapshotclone_metric.h
│ │ │ │ ├── snapshotclonecodec.cpp
│ │ │ │ ├── snapshotclonecodec.h
│ │ │ │ ├── task.h
│ │ │ │ ├── task_info.h
│ │ │ │ ├── task_tracker.h
│ │ │ │ ├── thread_pool.cpp
│ │ │ │ └── thread_pool.h
│ │ │ ├── main.cpp
│ │ │ ├── snapshot
│ │ │ │ ├── snapshot_core.cpp
│ │ │ │ ├── snapshot_core.h
│ │ │ │ ├── snapshot_data_store.cpp
│ │ │ │ ├── snapshot_data_store.h
│ │ │ │ ├── snapshot_data_store_s3.cpp
│ │ │ │ ├── snapshot_data_store_s3.h
│ │ │ │ ├── snapshot_service_manager.cpp
│ │ │ │ ├── snapshot_service_manager.h
│ │ │ │ ├── snapshot_task.cpp
│ │ │ │ ├── snapshot_task.h
│ │ │ │ ├── snapshot_task_manager.cpp
│ │ │ │ └── snapshot_task_manager.h
│ │ │ ├── snapshotclone_server.cpp
│ │ │ ├── snapshotclone_server.h
│ │ │ ├── snapshotclone_service.cpp
│ │ │ └── snapshotclone_service.h
│ │ └── tools
│ │ ├── BUILD
│ │ ├── bazel.rc
│ │ ├── chunkserver_client.cpp
│ │ ├── chunkserver_client.h
│ │ ├── chunkserver_tool_factory.cpp
│ │ ├── chunkserver_tool_factory.h
│ │ ├── chunkserver_tool_main.cpp
│ │ ├── common.cpp
│ │ ├── common.h
│ │ ├── consistency_check.cpp
│ │ ├── consistency_check.h
│ │ ├── copyset_check.cpp
│ │ ├── copyset_check.h
│ │ ├── copyset_check_core.cpp
│ │ ├── copyset_check_core.h
│ │ ├── curve_cli.cpp
│ │ ├── curve_cli.h
│ │ ├── curve_format_main.cpp
│ │ ├── curve_meta_tool.cpp
│ │ ├── curve_meta_tool.h
│ │ ├── curve_tool.h
│ │ ├── curve_tool_define.cpp
│ │ ├── curve_tool_define.h
│ │ ├── curve_tool_factory.cpp
│ │ ├── curve_tool_factory.h
│ │ ├── curve_tool_main.cpp
│ │ ├── etcd_client.cpp
│ │ ├── etcd_client.h
│ │ ├── mds_client.cpp
│ │ ├── mds_client.h
│ │ ├── metric_client.cpp
│ │ ├── metric_client.h
│ │ ├── metric_name.h
│ │ ├── namespace_tool.cpp
│ │ ├── namespace_tool.h
│ │ ├── namespace_tool_core.cpp
│ │ ├── namespace_tool_core.h
│ │ ├── raft_log_tool.cpp
│ │ ├── raft_log_tool.h
│ │ ├── schedule_tool.cpp
│ │ ├── schedule_tool.h
│ │ ├── snapshot_check.h
│ │ ├── snapshot_clone_client.cpp
│ │ ├── snapshot_clone_client.h
│ │ ├── status_tool.cpp
│ │ ├── status_tool.h
│ │ ├── version_tool.cpp
│ │ └── version_tool.h
│ ├── test
│ │ ├── backup
│ │ │ ├── client_config_unittest.cpp
│ │ │ ├── context_slab.cpp
│ │ │ ├── context_slab.h
│ │ │ ├── context_slab_unittest.cpp
│ │ │ ├── snapshot_instance.cpp
│ │ │ └── snapshot_instance.h
│ │ ├── chunkserver
│ │ │ ├── BUILD
│ │ │ ├── braft_cli_service2_test.cpp
│ │ │ ├── braft_cli_service_test.cpp
│ │ │ ├── chunk_service_test.cpp
│ │ │ ├── chunk_service_test2.cpp
│ │ │ ├── chunkserver_helper_test.cpp
│ │ │ ├── chunkserver_service_test.cpp
│ │ │ ├── chunkserver_snapshot_test.cpp
│ │ │ ├── chunkserver_test.cpp
│ │ │ ├── chunkserver_test_util.cpp
│ │ │ ├── chunkserver_test_util.h
│ │ │ ├── cli2_test.cpp
│ │ │ ├── cli_test.cpp
│ │ │ ├── client.cpp
│ │ │ ├── clone
│ │ │ │ ├── BUILD
│ │ │ │ ├── clone_copyer_test.cpp
│ │ │ │ ├── clone_core_test.cpp
│ │ │ │ ├── clone_manager_test.cpp
│ │ │ │ ├── clone_test_util.h
│ │ │ │ ├── clone_unittest_main.cpp
│ │ │ │ ├── mock_clone_copyer.h
│ │ │ │ ├── mock_clone_manager.h
│ │ │ │ └── op_request_test.cpp
│ │ │ ├── concurrent_apply
│ │ │ │ ├── BUILD
│ │ │ │ └── concurrent_apply_test.cpp
│ │ │ ├── conf_epoch_file_test.cpp
│ │ │ ├── copyset_epoch_test.cpp
│ │ │ ├── copyset_node_manager_test.cpp
│ │ │ ├── copyset_node_test.cpp
│ │ │ ├── copyset_service_test.cpp
│ │ │ ├── datastore
│ │ │ │ ├── BUILD
│ │ │ │ ├── datastore_mock_unittest.cpp
│ │ │ │ ├── datastore_unittest_main.cpp
│ │ │ │ ├── file_helper_unittest.cpp
│ │ │ │ ├── filepool_helper.cpp
│ │ │ │ ├── filepool_helper.h
│ │ │ │ ├── filepool_mock_unittest.cpp
│ │ │ │ ├── filepool_unittest.cpp
│ │ │ │ ├── mock_datastore.h
│ │ │ │ └── mock_file_pool.h
│ │ │ ├── fake_datastore.h
│ │ │ ├── heartbeat_helper_test.cpp
│ │ │ ├── heartbeat_test.cpp
│ │ │ ├── heartbeat_test_common.cpp
│ │ │ ├── heartbeat_test_common.h
│ │ │ ├── heartbeat_test_main.cpp
│ │ │ ├── inflight_throttle_test.cpp
│ │ │ ├── metrics_test.cpp
│ │ │ ├── mock_copyset_node.h
│ │ │ ├── mock_copyset_node_manager.h
│ │ │ ├── mock_curve_filesystem_adaptor.h
│ │ │ ├── mock_node.h
│ │ │ ├── multiple_copysets_io_test.cpp
│ │ │ ├── op_request_test.cpp
│ │ │ ├── raftlog
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ ├── test_curve_segment.cpp
│ │ │ │ └── test_curve_segment_log_storage.cpp
│ │ │ ├── raftsnapshot
│ │ │ │ ├── BUILD
│ │ │ │ ├── curve_file_service_test.cpp
│ │ │ │ ├── curve_filesystem_adaptor_mock_unittest.cpp
│ │ │ │ ├── curve_filesystem_adaptor_unittest.cpp
│ │ │ │ ├── curve_snapshot_attachment_test.cpp
│ │ │ │ ├── curve_snapshot_storage_test.cpp
│ │ │ │ ├── curve_snapshot_writer_test.cpp
│ │ │ │ ├── mock_file_reader.h
│ │ │ │ ├── mock_snapshot_attachment.h
│ │ │ │ └── raftsnapshot_chunkfilepool_integration.cpp
│ │ │ ├── server.cpp
│ │ │ └── trash_test.cpp
│ │ ├── client
│ │ │ ├── BUILD
│ │ │ ├── backoff_test.cpp
│ │ │ ├── chunkserverbroadcaster_unittest.cpp
│ │ │ ├── chunkserverclient_unittest.cpp
│ │ │ ├── client_common_unittest.cpp
│ │ │ ├── client_mdsclient_metacache_unittest.cpp
│ │ │ ├── client_metric_test.cpp
│ │ │ ├── client_session_unittest.cpp
│ │ │ ├── client_unittest_main.cpp
│ │ │ ├── client_unstable_helper_test.cpp
│ │ │ ├── client_userifo_unittest.cpp
│ │ │ ├── copyset_client_test.cpp
│ │ │ ├── fake
│ │ │ │ ├── BUILD
│ │ │ │ ├── client_workflow_test.cpp
│ │ │ │ ├── client_workflow_test4snap.cpp
│ │ │ │ ├── fakeChunkserver.h
│ │ │ │ ├── fakeMDS.cpp
│ │ │ │ ├── fakeMDS.h
│ │ │ │ ├── mds_workflow_test.cpp
│ │ │ │ ├── mockMDS.h
│ │ │ │ ├── mock_schedule.cpp
│ │ │ │ └── mock_schedule.h
│ │ │ ├── file_instance_test.cpp
│ │ │ ├── inflight_rpc_control_test.cpp
│ │ │ ├── iotracker_align_test.cpp
│ │ │ ├── iotracker_splitor_unittest.cpp
│ │ │ ├── lease_executor_test.cpp
│ │ │ ├── libcbd_ext4_test.cpp
│ │ │ ├── libcbd_libcurve_test.cpp
│ │ │ ├── libcurve_client_unittest.cpp
│ │ │ ├── libcurve_interface_unittest.cpp
│ │ │ ├── mds_client_test.cpp
│ │ │ ├── mds_failover_test.cpp
│ │ │ ├── mock
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_chunk_service.h
│ │ │ │ ├── mock_file_client.h
│ │ │ │ └── mock_namespace_service.h
│ │ │ ├── mock_chunkservice.h
│ │ │ ├── mock_curvefs_service.h
│ │ │ ├── mock_meta_cache.h
│ │ │ ├── mock_request_context.h
│ │ │ ├── mock_request_scheduler.h
│ │ │ ├── request_scheduler_test.cpp
│ │ │ ├── request_sender_manager_test.cpp
│ │ │ ├── request_sender_test.cpp
│ │ │ ├── snapshot_service_unittest.cpp
│ │ │ ├── splitor_test.cpp
│ │ │ └── splitor_test2.cpp
│ │ ├── common
│ │ │ ├── BUILD
│ │ │ ├── authenticator_test.cpp
│ │ │ ├── bitmap_test.cpp
│ │ │ ├── channel_pool_test.cpp
│ │ │ ├── configuration_test.cpp
│ │ │ ├── count_down_event_test.cpp
│ │ │ ├── crc32_test.cpp
│ │ │ ├── fast_align_test.cpp
│ │ │ ├── fs_util_test.cpp
│ │ │ ├── interruptible_sleeper_test.cpp
│ │ │ ├── location_operator_test.cpp
│ │ │ ├── math_util_test.cpp
│ │ │ ├── mock_s3_adapter.h
│ │ │ ├── net_common_test.cpp
│ │ │ ├── rw_lock_test.cpp
│ │ │ ├── string_util_test.cpp
│ │ │ ├── stringstatus_test.cpp
│ │ │ ├── task_thread_pool_test.cpp
│ │ │ ├── test_name_lock.cpp
│ │ │ ├── test_timeutility.cpp
│ │ │ └── wait_interval_test.cpp
│ │ ├── failpoint
│ │ │ ├── BUILD
│ │ │ ├── failpoint_test.cpp
│ │ │ └── fiu_local.h
│ │ ├── fs
│ │ │ ├── BUILD
│ │ │ ├── ext4_filesystem_test.cpp
│ │ │ ├── local_filesystem_unittest.cpp
│ │ │ ├── localfs_factory_test.cpp
│ │ │ ├── mock_local_filesystem.h
│ │ │ ├── mock_posix_wrapper.h
│ │ │ └── posix_wrapper_test.cpp
│ │ ├── integration
│ │ │ ├── chunkserver
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_basic_test.cpp
│ │ │ │ ├── chunkserver_clone_recover.cpp
│ │ │ │ ├── chunkserver_concurrent_test.cpp
│ │ │ │ └── datastore
│ │ │ │ ├── BUILD
│ │ │ │ ├── datastore_basic_test.cpp
│ │ │ │ ├── datastore_clone_case_test.cpp
│ │ │ │ ├── datastore_concurrency_test.cpp
│ │ │ │ ├── datastore_exception_test.cpp
│ │ │ │ ├── datastore_integration_base.h
│ │ │ │ ├── datastore_integration_main.cpp
│ │ │ │ ├── datastore_integration_test.cpp
│ │ │ │ ├── datastore_restart_test.cpp
│ │ │ │ ├── datastore_snapshot_case_test.cpp
│ │ │ │ └── datastore_stress_test.cpp
│ │ │ ├── client
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_exception_test.cpp
│ │ │ │ ├── common
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── file_operation.cpp
│ │ │ │ │ └── file_operation.h
│ │ │ │ ├── config
│ │ │ │ │ ├── client.conf
│ │ │ │ │ ├── client.conf.1
│ │ │ │ │ ├── topo_example.json
│ │ │ │ │ ├── topo_example_1.json
│ │ │ │ │ └── unstable
│ │ │ │ │ ├── topo_unstable.json
│ │ │ │ │ ├── topo_unstable.txt
│ │ │ │ │ ├── topo_unstable_small.json
│ │ │ │ │ └── topo_unstable_small.txt
│ │ │ │ ├── mds_exception_test.cpp
│ │ │ │ └── unstable_chunkserver_exception_test.cpp
│ │ │ ├── cluster_common
│ │ │ │ ├── BUILD
│ │ │ │ ├── build.sh
│ │ │ │ ├── cluster.cpp
│ │ │ │ ├── cluster.h
│ │ │ │ ├── cluster_basic_test.cpp
│ │ │ │ ├── cluster_common_topo_1.json
│ │ │ │ ├── cluster_common_topo_1.txt
│ │ │ │ ├── cluster_common_topo_2.json
│ │ │ │ ├── cluster_common_topo_2.txt
│ │ │ │ ├── generate_network.sh
│ │ │ │ └── mds.basic.conf
│ │ │ ├── common
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkservice_op.cpp
│ │ │ │ ├── chunkservice_op.h
│ │ │ │ ├── config_generator.h
│ │ │ │ ├── peer_cluster.cpp
│ │ │ │ └── peer_cluster.h
│ │ │ ├── heartbeat
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ ├── heartbeat_basic_test.cpp
│ │ │ │ └── heartbeat_exception_test.cpp
│ │ │ ├── raft
│ │ │ │ ├── BUILD
│ │ │ │ ├── raft_config_change_test.cpp
│ │ │ │ ├── raft_log_replication_test.cpp
│ │ │ │ ├── raft_snapshot_test.cpp
│ │ │ │ └── raft_vote_test.cpp
│ │ │ └── snapshotcloneserver
│ │ │ ├── BUILD
│ │ │ ├── config
│ │ │ │ ├── topo.json
│ │ │ │ ├── topo2.json
│ │ │ │ └── topo3.json
│ │ │ ├── fake_curvefs_client.cpp
│ │ │ ├── fake_curvefs_client.h
│ │ │ ├── fake_snapshot_data_store.cpp
│ │ │ ├── fake_snapshot_data_store.h
│ │ │ ├── fake_snapshotclone_meta_store.cpp
│ │ │ ├── fake_snapshotclone_meta_store.h
│ │ │ ├── snapshot_test_main.cpp
│ │ │ ├── snapshotcloneserver_common_test.cpp
│ │ │ ├── snapshotcloneserver_concurrent_test.cpp
│ │ │ ├── snapshotcloneserver_exception_test.cpp
│ │ │ ├── snapshotcloneserver_module.cpp
│ │ │ ├── snapshotcloneserver_module.h
│ │ │ ├── snapshotcloneserver_recover_test.cpp
│ │ │ ├── snapshotcloneserver_test.cpp
│ │ │ ├── test_snapshotcloneserver_helpler.cpp
│ │ │ └── test_snapshotcloneserver_helpler.h
│ │ ├── kvstorageclient
│ │ │ ├── BUILD
│ │ │ └── etcdclient_test.cpp
│ │ ├── leaderelection
│ │ │ ├── BUILD
│ │ │ └── leader_election_test.cpp
│ │ ├── mds
│ │ │ ├── chunkserverclient
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_chunkserverclient.h
│ │ │ │ ├── test_chunkserver_client.cpp
│ │ │ │ └── test_copyset_client.cpp
│ │ │ ├── copyset
│ │ │ │ ├── BUILD
│ │ │ │ ├── test_copyset.cpp
│ │ │ │ ├── test_copyset_manager.cpp
│ │ │ │ ├── test_copyset_validation.cpp
│ │ │ │ └── test_helper.h
│ │ │ ├── heartbeat
│ │ │ │ ├── BUILD
│ │ │ │ ├── chunkserver_healthy_checker_test.cpp
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ └── heartbeat_manager_test.cpp
│ │ │ ├── mock
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_alloc_statistic.h
│ │ │ │ ├── mock_chunkserver.h
│ │ │ │ ├── mock_coordinator.h
│ │ │ │ ├── mock_etcdclient.h
│ │ │ │ ├── mock_snapshotcloneserver.h
│ │ │ │ ├── mock_topoAdapter.h
│ │ │ │ └── mock_topology.h
│ │ │ ├── nameserver2
│ │ │ │ ├── BUILD
│ │ │ │ ├── allocstatistic
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── alloc_statistic_helper_test.cpp
│ │ │ │ │ └── alloc_statistic_test.cpp
│ │ │ │ ├── chunk_allocator_test.cpp
│ │ │ │ ├── clean_core_test.cpp
│ │ │ │ ├── clean_task_manager_test.cpp
│ │ │ │ ├── curvefs_test.cpp
│ │ │ │ ├── fakes.h
│ │ │ │ ├── file_lock_test.cpp
│ │ │ │ ├── file_record_test.cpp
│ │ │ │ ├── helper
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── namespace_helper_test.cpp
│ │ │ │ ├── idgenerator
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── chunk_id_generator_test.cpp
│ │ │ │ │ ├── etcd_id_generator_test.cpp
│ │ │ │ │ └── inode_id_generator_test.cpp
│ │ │ │ ├── mock
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── mock_chunk_allocate.h
│ │ │ │ │ ├── mock_chunk_id_generator.h
│ │ │ │ │ ├── mock_clean_manager.h
│ │ │ │ │ ├── mock_file_record_manager.h
│ │ │ │ │ ├── mock_inode_id_generator.h
│ │ │ │ │ ├── mock_namespace_storage.h
│ │ │ │ │ ├── mock_snapshotclone_client.h
│ │ │ │ │ └── mock_topology_chunk_allocator.h
│ │ │ │ ├── nameserverMetrics_test.cpp
│ │ │ │ ├── namespace_service_test.cpp
│ │ │ │ ├── namespace_storage_cache_test.cpp
│ │ │ │ └── namespace_storage_test.cpp
│ │ │ ├── schedule
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.cpp
│ │ │ │ ├── common.h
│ │ │ │ ├── coordinator_test.cpp
│ │ │ │ ├── leaderScheduler_test.cpp
│ │ │ │ ├── mock_topoAdapter.h
│ │ │ │ ├── mock_topology_service_manager.h
│ │ │ │ ├── operatorController_test.cpp
│ │ │ │ ├── operatorFactory_test.cpp
│ │ │ │ ├── operatorStep_test.cpp
│ │ │ │ ├── operator_test.cpp
│ │ │ │ ├── rapidLeaderSheduler_test.cpp
│ │ │ │ ├── recoverScheduler_test.cpp
│ │ │ │ ├── replicaScheduler_test.cpp
│ │ │ │ ├── scheduleMetrics_test.cpp
│ │ │ │ ├── scheduleService
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── scheduleService_test.cpp
│ │ │ │ ├── schedulerPOC
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── mock_topology.h
│ │ │ │ │ └── scheduler_poc.cpp
│ │ │ │ ├── scheduler_helper_test.cpp
│ │ │ │ └── topoAdapter_test.cpp
│ │ │ ├── server
│ │ │ │ ├── BUILD
│ │ │ │ └── mds_test.cpp
│ │ │ ├── snapshotcloneclient
│ │ │ │ ├── BUILD
│ │ │ │ └── test_snapshotclone_client.cpp
│ │ │ └── topology
│ │ │ ├── BUILD
│ │ │ ├── mock_topology.h
│ │ │ ├── test_topology.cpp
│ │ │ ├── test_topology_chunk_allocator.cpp
│ │ │ ├── test_topology_helper.cpp
│ │ │ ├── test_topology_helper.h
│ │ │ ├── test_topology_item.cpp
│ │ │ ├── test_topology_metric.cpp
│ │ │ ├── test_topology_service.cpp
│ │ │ ├── test_topology_service_manager.cpp
│ │ │ ├── test_topology_stat.cpp
│ │ │ ├── test_topology_storage_codec.cpp
│ │ │ ├── test_topology_storage_etcd.cpp
│ │ │ └── topology_test_main.cpp
│ │ ├── resources.list
│ │ ├── snapshotcloneserver
│ │ │ ├── BUILD
│ │ │ ├── mock_s3_adapter.h
│ │ │ ├── mock_snapshot_server.h
│ │ │ ├── snapshot_test_main.cpp
│ │ │ ├── test_client.conf
│ │ │ ├── test_clone_core.cpp
│ │ │ ├── test_clone_service_manager.cpp
│ │ │ ├── test_curvefs_client.cpp
│ │ │ ├── test_snapshot_core.cpp
│ │ │ ├── test_snapshot_data_store.cpp
│ │ │ ├── test_snapshot_referance.cpp
│ │ │ ├── test_snapshot_service_manager.cpp
│ │ │ ├── test_snapshotclone_meta_store_etcd.cpp
│ │ │ ├── test_snapshotclone_service.cpp
│ │ │ └── test_snapshotclonecodec.cpp
│ │ ├── tools
│ │ │ ├── BUILD
│ │ │ ├── chunkserver_client_test.cpp
│ │ │ ├── chunkserver_tool_factory_test.cpp
│ │ │ ├── common_test.cpp
│ │ │ ├── config
│ │ │ │ └── data_check.conf
│ │ │ ├── copyset_check_core_test.cpp
│ │ │ ├── copyset_check_test.cpp
│ │ │ ├── curve_cli_test.cpp
│ │ │ ├── curve_meta_tool_test.cpp
│ │ │ ├── curve_tool_factory_test.cpp
│ │ │ ├── curve_tool_test_main.cpp
│ │ │ ├── data_consistency_check_test.cpp
│ │ │ ├── etcd_client_test.cpp
│ │ │ ├── mds_client_test.cpp
│ │ │ ├── metric_client_test.cpp
│ │ │ ├── mock
│ │ │ │ ├── BUILD
│ │ │ │ ├── mock_chunkserver_client.h
│ │ │ │ ├── mock_cli_service.h
│ │ │ │ ├── mock_copyset_check_core.h
│ │ │ │ ├── mock_copyset_service.h
│ │ │ │ ├── mock_etcd_client.h
│ │ │ │ ├── mock_mds_client.h
│ │ │ │ ├── mock_metric_client.h
│ │ │ │ ├── mock_namespace_service.h
│ │ │ │ ├── mock_namespace_tool_core.h
│ │ │ │ ├── mock_schedule_service.h
│ │ │ │ ├── mock_segment_parser.h
│ │ │ │ ├── mock_snapshot_clone_client.h
│ │ │ │ ├── mock_snapshot_read.h
│ │ │ │ ├── mock_topology_service.h
│ │ │ │ └── mock_version_tool.h
│ │ │ ├── namespace_tool_core_test.cpp
│ │ │ ├── namespace_tool_test.cpp
│ │ │ ├── raft_log_tool_test.cpp
│ │ │ ├── schedule_tool_test.cpp
│ │ │ ├── segment_parser_test.cpp
│ │ │ ├── snapshot_clone_client_test.cpp
│ │ │ ├── status_tool_test.cpp
│ │ │ └── version_tool_test.cpp
│ │ └── util
│ │ ├── BUILD
│ │ └── config_generator.h
│ ├── thirdparties
│ │ ├── aws
│ │ │ ├── aws-c-common.BUILD
│ │ │ ├── aws-c-event-stream.BUILD
│ │ │ ├── aws-checksums.BUILD
│ │ │ └── aws.BUILD
│ │ ├── brpc
│ │ │ └── brpc.patch
│ │ ├── etcdclient
│ │ │ ├── Makefile
│ │ │ ├── etcdclient.go
│ │ │ ├── expose-session-for-election.patch
│ │ │ └── objectManager.go
│ │ └── glog
│ │ └── glog.patch
│ ├── tools
│ │ ├── BUILD
│ │ ├── curvefsTool.cpp
│ │ ├── curvefsTool.h
│ │ ├── raft_stat.sh
│ │ ├── snaptool
│ │ │ ├── clone_or_recover.py
│ │ │ ├── common.py
│ │ │ ├── config.py
│ │ │ ├── curltool.py
│ │ │ ├── delete_or_cancel_snap.py
│ │ │ ├── parser.py
│ │ │ ├── queryclone.py
│ │ │ ├── querysnap.py
│ │ │ ├── snaptool
│ │ │ └── snaptool.py
│ │ └── topo_example.json
│ ├── ut.sh
│ └── util
│ ├── build.sh
│ ├── image.sh
│ └── install.sh
├── curve-v1.2.6高可靠分布式存储系统_curve-v1.2.6.zip
└── 说明.htm
257 directories, 1439 files