gitextract_vo3z05bo/ ├── .autocorrectrc ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── enhancement.md │ │ └── support.md │ ├── actions/ │ │ ├── build/ │ │ │ └── action.yml │ │ ├── cancel-outdate-runs/ │ │ │ └── action.yml │ │ ├── mount-coverage-dir/ │ │ │ └── action.yml │ │ ├── upload-coverage/ │ │ │ └── action.yml │ │ └── upload-total-coverage/ │ │ └── action.yml │ ├── scripts/ │ │ ├── apt_install.sh │ │ ├── cache.sh │ │ ├── chaos/ │ │ │ ├── dynamic.yaml │ │ │ ├── juicefs-csi-driver.Dockerfile │ │ │ ├── juicefs.Dockerfile │ │ │ ├── minio.yaml │ │ │ ├── pvc.yaml │ │ │ ├── redis.yaml │ │ │ ├── sc.yaml │ │ │ └── workflow.yaml │ │ ├── check_juicefs_log.sh │ │ ├── cmptree.py │ │ ├── command/ │ │ │ ├── acl.sh │ │ │ ├── clone.sh │ │ │ ├── config.sh │ │ │ ├── debug.sh │ │ │ ├── dump_load.sh │ │ │ ├── dump_load_bench.sh │ │ │ ├── dump_load_cross_meta.sh │ │ │ ├── format.sh │ │ │ ├── fsck.sh │ │ │ ├── gateway-random.sh │ │ │ ├── gateway.sh │ │ │ ├── gc.sh │ │ │ ├── graceful_upgrade.sh │ │ │ ├── info.sh │ │ │ ├── interface.sh │ │ │ ├── mount.sh │ │ │ ├── quota.sh │ │ │ └── random.sh │ │ ├── command-win/ │ │ │ ├── acl.sh │ │ │ ├── clone.sh │ │ │ ├── debug.sh │ │ │ ├── dump_load.sh │ │ │ ├── fsck.sh │ │ │ ├── gateway.sh │ │ │ ├── gc.sh │ │ │ ├── profile.sh │ │ │ └── quota.sh │ │ ├── common/ │ │ │ ├── common.sh │ │ │ ├── common_win.sh │ │ │ └── run_test.sh │ │ ├── compare_results.sh │ │ ├── copyFile.js │ │ ├── fio.sh │ │ ├── flush_meta.py │ │ ├── fsrand.py │ │ ├── hypo/ │ │ │ ├── command.py │ │ │ ├── command_op.py │ │ │ ├── command_test.py │ │ │ ├── common.py │ │ │ ├── context.py │ │ │ ├── file.py │ │ │ ├── file_op.py │ │ │ ├── file_test.py │ │ │ ├── fs.py │ │ │ ├── fs_acl_test.py │ │ │ ├── fs_op.py │ │ │ ├── fs_sdk_test.py │ │ │ ├── fs_test.py │ │ │ ├── readme.md │ │ │ ├── s3.py │ │ │ ├── s3_contant.py │ │ │ ├── s3_op.py │ │ │ ├── s3_strategy.py │ │ │ ├── s3_test.py │ │ │ ├── stats.py │ │ │ ├── strategy.py │ │ │ ├── sync.py │ │ │ └── sync_test.py │ │ ├── mutate/ │ │ │ ├── check_coverage.py │ │ │ ├── check_skip_by_comment.py │ │ │ ├── how_to_use_mutate_test.md │ │ │ ├── modify_sdk_pom.py │ │ │ ├── mutest.sh │ │ │ ├── mutesting.py │ │ │ ├── parse_black_list.py │ │ │ ├── parse_job_total.py │ │ │ ├── parse_mutate_log.py │ │ │ ├── parse_test_cases.py │ │ │ ├── query_report.py │ │ │ └── save_report.py │ │ ├── perf/ │ │ │ ├── ai.sh │ │ │ ├── ai_format_benchmark.py │ │ │ ├── compare_ai.sh │ │ │ ├── compare_mdtest_fio.sh │ │ │ └── mdtest_fio.sh │ │ ├── prepare_db.sh │ │ ├── pysdk/ │ │ │ ├── bench.py │ │ │ └── pysdk_test.py │ │ ├── random_read_write.py │ │ ├── save_benchmark.sh │ │ ├── setup-hdfs.sh │ │ ├── ssh/ │ │ │ ├── Dockerfile │ │ │ └── docker-compose.yml │ │ ├── start_meta_engine.sh │ │ ├── sync/ │ │ │ ├── sync.sh │ │ │ ├── sync_cluster.sh │ │ │ ├── sync_fsrand.sh │ │ │ └── sync_minio.sh │ │ ├── test-mac/ │ │ │ ├── mac_commands.sh │ │ │ └── start_meta_engine.sh │ │ ├── testVersionCompatible.py │ │ ├── upload_coverage_report.sh │ │ ├── utils.py │ │ └── wins_fs_test.py │ └── workflows/ │ ├── bash/ │ │ ├── rm_fs │ │ ├── rm_list.sh │ │ └── rm_syscalls │ ├── cache.yml │ ├── cancel_outdate_runs.yml │ ├── chaos.yml │ ├── check-doc.yaml │ ├── codeql-analysis.yml │ ├── command-win.yml │ ├── command.yml │ ├── command2.yml │ ├── compile.yml │ ├── coverage-report.yml │ ├── dependency-review.yml │ ├── dockerfile-sftp │ ├── dump_load.yml │ ├── dump_load_bench.yml │ ├── dump_load_cross_meta.yml │ ├── fsrand.yml │ ├── fsspec.yml │ ├── gateway-random.yml │ ├── gateway.yml │ ├── integrationtests.yml │ ├── ltpfs.yml │ ├── ltpsyscalls.yml │ ├── mutate-test-sdk.yml │ ├── mutate-test.yml │ ├── perf-test.yml │ ├── permission-check.yaml │ ├── pjdfstest.yml │ ├── pysdk.yml │ ├── random-test.yml │ ├── release.yml │ ├── resources/ │ │ ├── core-site.xml │ │ ├── load-balancer.conf │ │ ├── sync-options.txt │ │ ├── tpcds_datagen.scala │ │ ├── tpcds_run.scala │ │ ├── vdbench_big_file.conf │ │ ├── vdbench_long_run.conf │ │ └── vdbench_small_file.conf │ ├── rmfiles.yml │ ├── sdktest.yml │ ├── sync.yml │ ├── unit-random-tests.yml │ ├── unittests.yml │ ├── vdbench.yml │ ├── verify.yml │ ├── version_compatible_hypo.yml │ ├── wintest.yml │ └── xattr.yml ├── .gitignore ├── .golangci.yml ├── .goreleaser.yml ├── .markdownlint-cli2.jsonc ├── .pre-commit-config.yaml ├── ADOPTERS.md ├── ADOPTERS_CN.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── README_CN.md ├── check-changed.sh ├── cmd/ │ ├── bench.go │ ├── bench_test.go │ ├── clone.go │ ├── compact.go │ ├── compact_test.go │ ├── config.go │ ├── config_test.go │ ├── debug.go │ ├── debug_test.go │ ├── debug_unix.go │ ├── debug_windows.go │ ├── destroy.go │ ├── dump.go │ ├── dump_test.go │ ├── flags.go │ ├── flags_test.go │ ├── format.go │ ├── format_test.go │ ├── fsck.go │ ├── fsck_test.go │ ├── gateway.go │ ├── gateway_noop.go │ ├── gc.go │ ├── gc_test.go │ ├── info.go │ ├── info_test.go │ ├── integration_test.go │ ├── load.go │ ├── main.go │ ├── main_test.go │ ├── mdtest.go │ ├── mount.go │ ├── mount_test.go │ ├── mount_unix.go │ ├── mount_windows.go │ ├── objbench.go │ ├── object.go │ ├── object_test.go │ ├── passfd.go │ ├── printsid.go │ ├── profile.go │ ├── quota.go │ ├── restore.go │ ├── restore_test.go │ ├── rmr.go │ ├── rmr_test.go │ ├── stats.go │ ├── status.go │ ├── status_test.go │ ├── summary.go │ ├── sync.go │ ├── sync_test.go │ ├── umount.go │ ├── version.go │ ├── warmup.go │ ├── warmup_test.go │ ├── webdav.go │ └── webdav_noop.go ├── codecov.yml ├── deploy/ │ └── juicefs-s3-gateway.yaml ├── docs/ │ ├── README.md │ ├── en/ │ │ ├── administration/ │ │ │ ├── destroy.md │ │ │ ├── fault_diagnosis_and_analysis.md │ │ │ ├── metadata/ │ │ │ │ ├── _category_.yml │ │ │ │ ├── etcd_best_practices.md │ │ │ │ ├── fdb_best_practices.md │ │ │ │ ├── mysql_best_practices.md │ │ │ │ ├── postgresql_best_practices.md │ │ │ │ ├── redis_best_practices.md │ │ │ │ └── tikv_best_practices.md │ │ │ ├── metadata_dump_load.md │ │ │ ├── monitoring.md │ │ │ ├── mount_at_boot.md │ │ │ ├── status_check_and_maintenance.md │ │ │ ├── sync_accounts_between_multiple_hosts.md │ │ │ ├── troubleshooting.md │ │ │ └── upgrade.md │ │ ├── benchmark/ │ │ │ ├── benchmark.md │ │ │ ├── fio.md │ │ │ ├── mdtest.md │ │ │ ├── metadata_engines_benchmark.md │ │ │ └── performance_evaluation_guide.md │ │ ├── community/ │ │ │ ├── _roadmap.md │ │ │ ├── adopters.md │ │ │ ├── articles.md │ │ │ ├── integrations.md │ │ │ └── usage_tracking.md │ │ ├── deployment/ │ │ │ ├── _share_via_nfs.md │ │ │ ├── _share_via_smb.md │ │ │ ├── automation.md │ │ │ ├── hadoop_java_sdk.md │ │ │ ├── how_to_use_on_kubernetes.md │ │ │ ├── juicefs_on_docker.md │ │ │ ├── nfs.md │ │ │ ├── production_deployment_recommendations.md │ │ │ ├── python_sdk.md │ │ │ ├── samba.md │ │ │ └── webdav.md │ │ ├── development/ │ │ │ ├── contributing_guide.md │ │ │ └── internals.md │ │ ├── faq.md │ │ ├── getting-started/ │ │ │ ├── for_distributed.md │ │ │ ├── installation.md │ │ │ └── standalone.md │ │ ├── grafana_template.json │ │ ├── guide/ │ │ │ ├── cache.md │ │ │ ├── clone.md │ │ │ ├── dir-stats.md │ │ │ ├── gateway.md │ │ │ ├── quota.md │ │ │ └── sync.md │ │ ├── introduction/ │ │ │ ├── README.md │ │ │ ├── architecture.md │ │ │ ├── comparison/ │ │ │ │ ├── _category_.yml │ │ │ │ ├── juicefs_vs_3fs.md │ │ │ │ ├── juicefs_vs_alluxio.md │ │ │ │ ├── juicefs_vs_cephfs.md │ │ │ │ ├── juicefs_vs_glusterfs.md │ │ │ │ ├── juicefs_vs_lustre.md │ │ │ │ ├── juicefs_vs_s3fs.md │ │ │ │ ├── juicefs_vs_s3ql.md │ │ │ │ └── juicefs_vs_seaweedfs.md │ │ │ └── io_processing.md │ │ ├── reference/ │ │ │ ├── _common_options.mdx │ │ │ ├── command_reference.mdx │ │ │ ├── fuse_mount_options.md │ │ │ ├── how_to_set_up_metadata_engine.md │ │ │ ├── how_to_set_up_object_storage.md │ │ │ ├── p8s_metrics.md │ │ │ ├── posix_compatibility.md │ │ │ ├── redis-csc.md │ │ │ └── spec-limits.md │ │ ├── release_notes.md │ │ ├── security/ │ │ │ ├── encryption.md │ │ │ ├── posix_acl.md │ │ │ └── trash.md │ │ └── tutorials/ │ │ ├── aliyun.md │ │ ├── aws.md │ │ ├── digitalocean.md │ │ ├── juicefs_on_colab.md │ │ ├── juicefs_on_k3s.md │ │ ├── juicefs_on_kubesphere.md │ │ ├── juicefs_on_rancher.md │ │ ├── juicefs_on_wsl.md │ │ ├── qcloud.md │ │ └── windows.md │ └── zh_cn/ │ ├── administration/ │ │ ├── destroy.md │ │ ├── fault_diagnosis_and_analysis.md │ │ ├── metadata/ │ │ │ ├── _category_.yml │ │ │ ├── etcd_best_practices.md │ │ │ ├── fdb_best_practices.md │ │ │ ├── mysql_best_practices.md │ │ │ ├── postgresql_best_practices.md │ │ │ ├── redis_best_practices.md │ │ │ └── tikv_best_practices.md │ │ ├── metadata_dump_load.md │ │ ├── monitoring.md │ │ ├── mount_at_boot.md │ │ ├── status_check_and_maintenance.md │ │ ├── sync_accounts_between_multiple_hosts.md │ │ ├── troubleshooting.md │ │ └── upgrade.md │ ├── benchmark/ │ │ ├── benchmark.md │ │ ├── fio.md │ │ ├── mdtest.md │ │ ├── metadata_engines_benchmark.md │ │ └── performance_evaluation_guide.md │ ├── community/ │ │ ├── _roadmap.md │ │ ├── adopters.md │ │ ├── articles.md │ │ ├── integrations.md │ │ └── usage_tracking.md │ ├── deployment/ │ │ ├── _share_via_nfs.md │ │ ├── _share_via_smb.md │ │ ├── automation.md │ │ ├── hadoop_java_sdk.md │ │ ├── how_to_use_on_kubernetes.md │ │ ├── juicefs_on_docker.md │ │ ├── nfs.md │ │ ├── production_deployment_recommendations.md │ │ ├── python_sdk.md │ │ ├── samba.md │ │ └── webdav.md │ ├── development/ │ │ ├── contributing_guide.md │ │ └── internals.md │ ├── faq.md │ ├── getting-started/ │ │ ├── for_distributed.md │ │ ├── installation.md │ │ └── standalone.md │ ├── guide/ │ │ ├── cache.md │ │ ├── clone.md │ │ ├── dir-stats.md │ │ ├── gateway.md │ │ ├── quota.md │ │ └── sync.md │ ├── introduction/ │ │ ├── README.md │ │ ├── architecture.md │ │ ├── comparison/ │ │ │ ├── _category_.yml │ │ │ ├── juicefs_vs_3fs.md │ │ │ ├── juicefs_vs_alluxio.md │ │ │ ├── juicefs_vs_cephfs.md │ │ │ ├── juicefs_vs_glusterfs.md │ │ │ ├── juicefs_vs_lustre.md │ │ │ ├── juicefs_vs_s3fs.md │ │ │ ├── juicefs_vs_s3ql.md │ │ │ └── juicefs_vs_seaweedfs.md │ │ └── io_processing.md │ ├── reference/ │ │ ├── _common_options.mdx │ │ ├── command_reference.mdx │ │ ├── fuse_mount_options.md │ │ ├── how_to_set_up_metadata_engine.md │ │ ├── how_to_set_up_object_storage.md │ │ ├── p8s_metrics.md │ │ ├── posix_compatibility.md │ │ └── spec-limits.md │ ├── release_notes.md │ ├── security/ │ │ ├── encryption.md │ │ ├── posix_acl.md │ │ └── trash.md │ └── tutorials/ │ ├── aliyun.md │ ├── aws.md │ ├── digitalocean.md │ ├── juicefs_on_colab.md │ ├── juicefs_on_k3s.md │ ├── juicefs_on_kubesphere.md │ ├── juicefs_on_rancher.md │ ├── juicefs_on_wsl.md │ ├── qcloud.md │ └── windows.md ├── go.mod ├── go.sum ├── hack/ │ ├── autocomplete/ │ │ ├── bash_autocomplete │ │ └── zsh_autocomplete │ ├── builder/ │ │ ├── Dockerfile │ │ └── sdk.Dockerfile │ └── winfsp_headers/ │ ├── fuse.h │ ├── fuse_common.h │ ├── fuse_opt.h │ └── winfsp_fuse.h ├── integration/ │ ├── Makefile │ ├── ioctl_test.sh │ └── s3gateway_test.sh ├── main.go ├── package.json ├── pkg/ │ ├── acl/ │ │ ├── acl.go │ │ ├── cache.go │ │ └── cache_test.go │ ├── chunk/ │ │ ├── cache_eviction.go │ │ ├── cached_store.go │ │ ├── cached_store_test.go │ │ ├── chunk.go │ │ ├── disk_cache.go │ │ ├── disk_cache_state.go │ │ ├── disk_cache_state_test.go │ │ ├── disk_cache_test.go │ │ ├── mem_cache.go │ │ ├── metrics.go │ │ ├── page.go │ │ ├── page_test.go │ │ ├── prefetch.go │ │ ├── prefetch_test.go │ │ ├── singleflight.go │ │ ├── singleflight_test.go │ │ ├── utils_darwin.go │ │ ├── utils_linux.go │ │ ├── utils_unix.go │ │ ├── utils_unix_test.go │ │ └── utils_windows.go │ ├── compress/ │ │ ├── compress.go │ │ └── compress_test.go │ ├── fs/ │ │ ├── fs.go │ │ ├── fs_test.go │ │ ├── http.go │ │ ├── http_test.go │ │ └── metrics.go │ ├── fuse/ │ │ ├── context.go │ │ ├── device_darwin.go │ │ ├── device_linux.go │ │ ├── fuse.go │ │ ├── fuse_darwin.go │ │ ├── fuse_linux.go │ │ ├── fuse_test.go │ │ ├── gidcache.go │ │ └── utils.go │ ├── gateway/ │ │ ├── gateway.go │ │ └── gateway_test.go │ ├── meta/ │ │ ├── backup.go │ │ ├── base.go │ │ ├── base_test.go │ │ ├── benchmarks_test.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── context.go │ │ ├── dump.go │ │ ├── info.go │ │ ├── info_test.go │ │ ├── interface.go │ │ ├── interface_test.go │ │ ├── load_dump_test.go │ │ ├── lua_scripts.go │ │ ├── metadata-sub.sample │ │ ├── metadata.sample │ │ ├── openfile.go │ │ ├── pb/ │ │ │ ├── backup.pb.go │ │ │ └── backup.proto │ │ ├── quota.go │ │ ├── random_test.go │ │ ├── redis.go │ │ ├── redis_bak.go │ │ ├── redis_csc.go │ │ ├── redis_csc_test.go │ │ ├── redis_lock.go │ │ ├── slice.go │ │ ├── sql.go │ │ ├── sql_bak.go │ │ ├── sql_lock.go │ │ ├── sql_mysql.go │ │ ├── sql_pg.go │ │ ├── sql_sqlite.go │ │ ├── sql_test.go │ │ ├── status.go │ │ ├── tkv.go │ │ ├── tkv_badger.go │ │ ├── tkv_bak.go │ │ ├── tkv_etcd.go │ │ ├── tkv_fdb.go │ │ ├── tkv_fdb_test.go │ │ ├── tkv_lock.go │ │ ├── tkv_mem.go │ │ ├── tkv_prefix.go │ │ ├── tkv_test.go │ │ ├── tkv_tikv.go │ │ ├── utils.go │ │ ├── utils_darwin.go │ │ ├── utils_linux.go │ │ ├── utils_test.go │ │ └── utils_windows.go │ ├── metric/ │ │ └── metrics.go │ ├── object/ │ │ ├── azure.go │ │ ├── b2.go │ │ ├── bos.go │ │ ├── bunny.go │ │ ├── ceph.go │ │ ├── checksum.go │ │ ├── checksum_test.go │ │ ├── cifs.go │ │ ├── cos.go │ │ ├── dragonfly.go │ │ ├── encrypt.go │ │ ├── encrypt_test.go │ │ ├── eos.go │ │ ├── etcd.go │ │ ├── file.go │ │ ├── file_darwin.go │ │ ├── file_linux.go │ │ ├── file_unix.go │ │ ├── file_unix_test.go │ │ ├── file_windows.go │ │ ├── filesystem_test.go │ │ ├── gluster.go │ │ ├── gluster_test.go │ │ ├── gs.go │ │ ├── hdfs.go │ │ ├── hdfs_kerberos.go │ │ ├── ibmcos.go │ │ ├── interface.go │ │ ├── ks3.go │ │ ├── mem.go │ │ ├── minio.go │ │ ├── nfs.go │ │ ├── object_storage.go │ │ ├── object_storage_test.go │ │ ├── obs.go │ │ ├── oos.go │ │ ├── oss.go │ │ ├── prefix.go │ │ ├── qingstor.go │ │ ├── qiniu.go │ │ ├── redis.go │ │ ├── response_attrs.go │ │ ├── response_attrs_test.go │ │ ├── restful.go │ │ ├── restful_test.go │ │ ├── s3.go │ │ ├── s3_test.go │ │ ├── scw.go │ │ ├── sftp.go │ │ ├── sharding.go │ │ ├── space.go │ │ ├── sql.go │ │ ├── sql_mysql.go │ │ ├── sql_pg.go │ │ ├── sql_sqlite.go │ │ ├── swift.go │ │ ├── tikv.go │ │ ├── tos.go │ │ ├── ufile.go │ │ ├── wasabi.go │ │ └── webdav.go │ ├── sync/ │ │ ├── cluster.go │ │ ├── cluster_test.go │ │ ├── config.go │ │ ├── download.go │ │ ├── download_test.go │ │ ├── sync.go │ │ └── sync_test.go │ ├── usage/ │ │ ├── usage.go │ │ └── usage_test.go │ ├── utils/ │ │ ├── alloc.go │ │ ├── alloc_test.go │ │ ├── buffer.go │ │ ├── buffer_test.go │ │ ├── clock_test.go │ │ ├── clock_unix.go │ │ ├── clock_windows.go │ │ ├── cond.go │ │ ├── cond_test.go │ │ ├── errors.go │ │ ├── general.go │ │ ├── humanize.go │ │ ├── logger.go │ │ ├── logger_syslog.go │ │ ├── logger_test.go │ │ ├── logger_windows.go │ │ ├── memusage.go │ │ ├── memusage_test.go │ │ ├── memusage_windows.go │ │ ├── proc_title.go │ │ ├── proc_title_noop.go │ │ ├── progress.go │ │ ├── progress_test.go │ │ ├── rusage.go │ │ ├── rusage_test.go │ │ ├── rusage_windows.go │ │ ├── utils.go │ │ ├── utils_darwin.go │ │ ├── utils_linux.go │ │ ├── utils_test.go │ │ ├── utils_unix.go │ │ └── utils_windows.go │ ├── version/ │ │ ├── .gitattributes │ │ ├── version.go │ │ └── version_test.go │ ├── vfs/ │ │ ├── accesslog.go │ │ ├── accesslog_test.go │ │ ├── backup.go │ │ ├── backup_test.go │ │ ├── compact.go │ │ ├── compact_test.go │ │ ├── fill.go │ │ ├── fill_test.go │ │ ├── handle.go │ │ ├── helpers.go │ │ ├── helpers_test.go │ │ ├── internal.go │ │ ├── reader.go │ │ ├── vfs.go │ │ ├── vfs_test.go │ │ ├── vfs_unix.go │ │ ├── vfs_windows.go │ │ └── writer.go │ ├── win/ │ │ ├── ldap.go │ │ └── sid.go │ └── winfsp/ │ ├── log.go │ └── winfs.go ├── rfcs/ │ └── 1-dir-used-statistics.md └── sdk/ ├── java/ │ ├── .gitignore │ ├── Makefile │ ├── conf/ │ │ ├── contract/ │ │ │ └── juicefs.xml │ │ ├── core-site.xml │ │ └── log4j.properties │ ├── kerberos.sh │ ├── libjfs/ │ │ ├── Makefile │ │ ├── bridge.go │ │ ├── bridge_test.go │ │ ├── callback.c │ │ ├── guid.go │ │ ├── guid_unix.go │ │ ├── guid_windows.go │ │ ├── kerberos.go │ │ ├── main.go │ │ ├── remote_write.go │ │ └── remote_write_test.go │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── juicefs/ │ │ │ ├── FlinkFileSystemFactory.java │ │ │ ├── JuiceFS.java │ │ │ ├── JuiceFileSystem.java │ │ │ ├── JuiceFileSystemImpl.java │ │ │ ├── KiteDataLoader.java │ │ │ ├── Main.java │ │ │ ├── bench/ │ │ │ │ ├── AccumulatingReducer.java │ │ │ │ ├── IOMapperBase.java │ │ │ │ ├── NNBench.java │ │ │ │ └── TestDFSIO.java │ │ │ ├── exception/ │ │ │ │ └── QuotaExceededException.java │ │ │ ├── kerberos/ │ │ │ │ ├── AuthCredential.java │ │ │ │ ├── JuiceFSDelegationTokenIdentifier.java │ │ │ │ ├── JuiceFSTokenRenewer.java │ │ │ │ └── KerberosUtil.java │ │ │ ├── metrics/ │ │ │ │ └── JuiceFSInstrumentation.java │ │ │ ├── permission/ │ │ │ │ ├── RangerAdminRefresher.java │ │ │ │ ├── RangerConfig.java │ │ │ │ ├── RangerJfsAccessRequest.java │ │ │ │ ├── RangerJfsPlugin.java │ │ │ │ ├── RangerJfsResource.java │ │ │ │ ├── RangerPermissionChecker.java │ │ │ │ ├── RangerPermissionContext.java │ │ │ │ ├── RangerPluginCfg.java │ │ │ │ └── RangerRules.java │ │ │ ├── tools/ │ │ │ │ └── RangerDownloader.java │ │ │ └── utils/ │ │ │ ├── AclTransformation.java │ │ │ ├── BgTaskUtil.java │ │ │ ├── BufferPool.java │ │ │ ├── CallerContextUtil.java │ │ │ ├── ConsistentHash.java │ │ │ ├── FsNodesFetcher.java │ │ │ ├── FsPermissionExtension.java │ │ │ ├── NodesFetcher.java │ │ │ ├── NodesFetcherBuilder.java │ │ │ ├── PatchUtil.java │ │ │ ├── PrestoNodesFetcher.java │ │ │ ├── RedefineClassAgent.java │ │ │ ├── ReflectionUtil.java │ │ │ ├── SparkNodesFetcher.java │ │ │ ├── SparkThriftNodesFetcher.java │ │ │ └── YarnNodesFetcher.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ ├── org.apache.flink.core.fs.FileSystemFactory │ │ ├── org.apache.hadoop.security.token.TokenIdentifier │ │ ├── org.apache.hadoop.security.token.TokenRenewer │ │ └── org.kitesdk.data.spi.Loadable │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── juicefs/ │ │ ├── JuiceFileSystemBgTaskTest.java │ │ ├── JuiceFileSystemTest.java │ │ ├── acl/ │ │ │ └── TestAclCLI.java │ │ ├── contract/ │ │ │ ├── JuiceFSContract.java │ │ │ ├── TestAppend.java │ │ │ ├── TestConcat.java │ │ │ ├── TestCreate.java │ │ │ ├── TestDelete.java │ │ │ ├── TestGetFileStatus.java │ │ │ ├── TestJuiceFileSystemContract.java │ │ │ ├── TestMkdir.java │ │ │ ├── TestOpen.java │ │ │ ├── TestRename.java │ │ │ ├── TestSeek.java │ │ │ └── TestSetTimes.java │ │ ├── kerberos/ │ │ │ └── KerberosTest.java │ │ ├── permission/ │ │ │ ├── RangerAdminClientImpl.java │ │ │ └── RangerPermissionCheckerTest.java │ │ └── utils/ │ │ ├── BgTaskUtilTest.java │ │ └── HashTest.java │ ├── resources/ │ │ ├── hdfs-policies-tag.json │ │ ├── hdfs-policies.json │ │ ├── kerberos.cfg │ │ ├── log4j.properties │ │ └── testAclCLI.xml │ └── test-spark.sh └── python/ ├── .gitignore ├── Dockerfile.builder ├── Dockerfile.builder.arm ├── Makefile ├── examples/ │ ├── ffrecord/ │ │ ├── dataloader.py │ │ ├── dataset.py │ │ ├── filereader.py │ │ ├── filereader_dio.py │ │ ├── main.py │ │ └── readme.md │ └── fsspec/ │ ├── main.py │ └── readme.md └── juicefs/ ├── juicefs/ │ ├── __init__.py │ ├── juicefs.py │ └── spec.py ├── setup.py └── tests/ ├── __init__.py └── test.py