@nxtedition/rocksdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/UPGRADING.md +91 -0
  5. package/binding.cc +1276 -0
  6. package/binding.gyp +73 -0
  7. package/binding.js +1 -0
  8. package/chained-batch.js +44 -0
  9. package/deps/rocksdb/build_version.cc +4 -0
  10. package/deps/rocksdb/rocksdb/CMakeLists.txt +1356 -0
  11. package/deps/rocksdb/rocksdb/COPYING +339 -0
  12. package/deps/rocksdb/rocksdb/LICENSE.Apache +202 -0
  13. package/deps/rocksdb/rocksdb/LICENSE.leveldb +29 -0
  14. package/deps/rocksdb/rocksdb/Makefile +2521 -0
  15. package/deps/rocksdb/rocksdb/TARGETS +2100 -0
  16. package/deps/rocksdb/rocksdb/cache/cache.cc +63 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +381 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +114 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_test.cc +775 -0
  20. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +769 -0
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.h +16 -0
  22. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +574 -0
  23. package/deps/rocksdb/rocksdb/cache/lru_cache.h +339 -0
  24. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +199 -0
  25. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +162 -0
  26. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +111 -0
  27. package/deps/rocksdb/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  28. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  29. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  30. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  37. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +108 -0
  38. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +115 -0
  39. package/deps/rocksdb/rocksdb/db/blob/blob_constants.h +16 -0
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +154 -0
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.h +67 -0
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +206 -0
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +316 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +91 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +660 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +99 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +49 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +268 -0
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.h +57 -0
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +173 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +55 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +164 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +423 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +81 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +771 -0
  57. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +184 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.cc +145 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +148 -0
  60. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +132 -0
  61. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +76 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +168 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +83 -0
  64. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +307 -0
  65. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +464 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +358 -0
  67. package/deps/rocksdb/rocksdb/db/builder.h +95 -0
  68. package/deps/rocksdb/rocksdb/db/c.cc +5281 -0
  69. package/deps/rocksdb/rocksdb/db/c_test.c +2883 -0
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +1602 -0
  71. package/deps/rocksdb/rocksdb/db/column_family.h +787 -0
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +3427 -0
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +425 -0
  74. package/deps/rocksdb/rocksdb/db/compacted_db_impl.cc +169 -0
  75. package/deps/rocksdb/rocksdb/db/compacted_db_impl.h +118 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +591 -0
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +389 -0
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +37 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +1023 -0
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +353 -0
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1254 -0
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1917 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +208 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +1037 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +1224 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1135 -0
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +318 -0
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +255 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +57 -0
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +510 -0
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +2190 -0
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1103 -0
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +32 -0
  95. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +44 -0
  96. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +660 -0
  97. package/deps/rocksdb/rocksdb/db/convenience.cc +78 -0
  98. package/deps/rocksdb/rocksdb/db/corruption_test.cc +921 -0
  99. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +359 -0
  100. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3820 -0
  101. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1058 -0
  102. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2128 -0
  103. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +851 -0
  104. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +6292 -0
  105. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +509 -0
  106. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +130 -0
  107. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +137 -0
  108. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1119 -0
  109. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5057 -0
  110. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +2274 -0
  111. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3421 -0
  112. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +298 -0
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +151 -0
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +967 -0
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1806 -0
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +270 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +146 -0
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +683 -0
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +333 -0
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2024 -0
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_secondary_test.cc +932 -0
  122. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +137 -0
  123. package/deps/rocksdb/rocksdb/db/db_info_dumper.h +15 -0
  124. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +178 -0
  125. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +592 -0
  126. package/deps/rocksdb/rocksdb/db/db_iter.cc +1493 -0
  127. package/deps/rocksdb/rocksdb/db/db_iter.h +390 -0
  128. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +657 -0
  129. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +3268 -0
  130. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +3197 -0
  131. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +299 -0
  132. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +513 -0
  133. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +329 -0
  134. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +241 -0
  135. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +671 -0
  136. package/deps/rocksdb/rocksdb/db/db_options_test.cc +1022 -0
  137. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1723 -0
  138. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1694 -0
  139. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1261 -0
  140. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +164 -0
  141. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +488 -0
  142. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +567 -0
  143. package/deps/rocksdb/rocksdb/db/db_test.cc +6736 -0
  144. package/deps/rocksdb/rocksdb/db/db_test2.cc +5408 -0
  145. package/deps/rocksdb/rocksdb/db/db_test_util.cc +1633 -0
  146. package/deps/rocksdb/rocksdb/db/db_test_util.h +1194 -0
  147. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +2235 -0
  148. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +1780 -0
  149. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2520 -0
  150. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +119 -0
  151. package/deps/rocksdb/rocksdb/db/db_write_test.cc +465 -0
  152. package/deps/rocksdb/rocksdb/db/dbformat.cc +222 -0
  153. package/deps/rocksdb/rocksdb/db/dbformat.h +786 -0
  154. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +206 -0
  155. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +580 -0
  156. package/deps/rocksdb/rocksdb/db/error_handler.cc +726 -0
  157. package/deps/rocksdb/rocksdb/db/error_handler.h +117 -0
  158. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +2598 -0
  159. package/deps/rocksdb/rocksdb/db/event_helpers.cc +233 -0
  160. package/deps/rocksdb/rocksdb/db/event_helpers.h +57 -0
  161. package/deps/rocksdb/rocksdb/db/experimental.cc +50 -0
  162. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1559 -0
  163. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +910 -0
  164. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +195 -0
  165. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2936 -0
  166. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +556 -0
  167. package/deps/rocksdb/rocksdb/db/file_indexer.cc +216 -0
  168. package/deps/rocksdb/rocksdb/db/file_indexer.h +142 -0
  169. package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +350 -0
  170. package/deps/rocksdb/rocksdb/db/filename_test.cc +179 -0
  171. package/deps/rocksdb/rocksdb/db/flush_job.cc +514 -0
  172. package/deps/rocksdb/rocksdb/db/flush_job.h +169 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +647 -0
  174. package/deps/rocksdb/rocksdb/db/flush_scheduler.cc +86 -0
  175. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +54 -0
  176. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1023 -0
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.h +163 -0
  178. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +377 -0
  179. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +282 -0
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +75 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +632 -0
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +1461 -0
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +712 -0
  184. package/deps/rocksdb/rocksdb/db/job_context.h +226 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +1118 -0
  186. package/deps/rocksdb/rocksdb/db/log_format.h +48 -0
  187. package/deps/rocksdb/rocksdb/db/log_reader.cc +654 -0
  188. package/deps/rocksdb/rocksdb/db/log_reader.h +192 -0
  189. package/deps/rocksdb/rocksdb/db/log_test.cc +901 -0
  190. package/deps/rocksdb/rocksdb/db/log_writer.cc +164 -0
  191. package/deps/rocksdb/rocksdb/db/log_writer.h +115 -0
  192. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  193. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +63 -0
  194. package/deps/rocksdb/rocksdb/db/lookup_key.h +66 -0
  195. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +54 -0
  196. package/deps/rocksdb/rocksdb/db/malloc_stats.h +24 -0
  197. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +296 -0
  198. package/deps/rocksdb/rocksdb/db/memtable.cc +1169 -0
  199. package/deps/rocksdb/rocksdb/db/memtable.h +554 -0
  200. package/deps/rocksdb/rocksdb/db/memtable_list.cc +888 -0
  201. package/deps/rocksdb/rocksdb/db/memtable_list.h +438 -0
  202. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +935 -0
  203. package/deps/rocksdb/rocksdb/db/merge_context.h +134 -0
  204. package/deps/rocksdb/rocksdb/db/merge_helper.cc +421 -0
  205. package/deps/rocksdb/rocksdb/db/merge_helper.h +197 -0
  206. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +290 -0
  207. package/deps/rocksdb/rocksdb/db/merge_operator.cc +86 -0
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +608 -0
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +338 -0
  210. package/deps/rocksdb/rocksdb/db/options_file_test.cc +119 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.cc +30 -0
  212. package/deps/rocksdb/rocksdb/db/output_validator.h +47 -0
  213. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +993 -0
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +113 -0
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +76 -0
  216. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +231 -0
  217. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +87 -0
  218. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1374 -0
  219. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +38 -0
  220. package/deps/rocksdb/rocksdb/db/prefix_test.cc +910 -0
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +489 -0
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +446 -0
  223. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +260 -0
  224. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +709 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +439 -0
  226. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +256 -0
  227. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +552 -0
  228. package/deps/rocksdb/rocksdb/db/read_callback.h +53 -0
  229. package/deps/rocksdb/rocksdb/db/repair.cc +722 -0
  230. package/deps/rocksdb/rocksdb/db/repair_test.cc +390 -0
  231. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +61 -0
  232. package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +26 -0
  233. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +167 -0
  234. package/deps/rocksdb/rocksdb/db/table_cache.cc +704 -0
  235. package/deps/rocksdb/rocksdb/db/table_cache.h +233 -0
  236. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +75 -0
  237. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +107 -0
  238. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +517 -0
  239. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +318 -0
  240. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +128 -0
  241. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.cc +54 -0
  242. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +44 -0
  243. package/deps/rocksdb/rocksdb/db/version_builder.cc +1078 -0
  244. package/deps/rocksdb/rocksdb/db/version_builder.h +69 -0
  245. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1551 -0
  246. package/deps/rocksdb/rocksdb/db/version_edit.cc +955 -0
  247. package/deps/rocksdb/rocksdb/db/version_edit.h +609 -0
  248. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +699 -0
  249. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +252 -0
  250. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +597 -0
  251. package/deps/rocksdb/rocksdb/db/version_set.cc +6333 -0
  252. package/deps/rocksdb/rocksdb/db/version_set.h +1485 -0
  253. package/deps/rocksdb/rocksdb/db/version_set_test.cc +3035 -0
  254. package/deps/rocksdb/rocksdb/db/wal_edit.cc +204 -0
  255. package/deps/rocksdb/rocksdb/db/wal_edit.h +166 -0
  256. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +214 -0
  257. package/deps/rocksdb/rocksdb/db/wal_manager.cc +517 -0
  258. package/deps/rocksdb/rocksdb/db/wal_manager.h +119 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +340 -0
  260. package/deps/rocksdb/rocksdb/db/write_batch.cc +2174 -0
  261. package/deps/rocksdb/rocksdb/db/write_batch_base.cc +94 -0
  262. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +250 -0
  263. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +907 -0
  264. package/deps/rocksdb/rocksdb/db/write_callback.h +27 -0
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +457 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +128 -0
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +144 -0
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +135 -0
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +796 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +433 -0
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +14 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +341 -0
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +520 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +23 -0
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +337 -0
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +554 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +79 -0
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +173 -0
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +17 -0
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +38 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +763 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +222 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +27 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +428 -0
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +218 -0
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +64 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2430 -0
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +237 -0
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +343 -0
  290. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +800 -0
  291. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +920 -0
  292. package/deps/rocksdb/rocksdb/env/env.cc +733 -0
  293. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +352 -0
  294. package/deps/rocksdb/rocksdb/env/env_chroot.cc +346 -0
  295. package/deps/rocksdb/rocksdb/env/env_chroot.h +22 -0
  296. package/deps/rocksdb/rocksdb/env/env_encryption.cc +1148 -0
  297. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +137 -0
  298. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +648 -0
  299. package/deps/rocksdb/rocksdb/env/env_posix.cc +514 -0
  300. package/deps/rocksdb/rocksdb/env/env_test.cc +2230 -0
  301. package/deps/rocksdb/rocksdb/env/file_system.cc +132 -0
  302. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +448 -0
  303. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +415 -0
  304. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1086 -0
  305. package/deps/rocksdb/rocksdb/env/io_posix.cc +1499 -0
  306. package/deps/rocksdb/rocksdb/env/io_posix.h +402 -0
  307. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +140 -0
  308. package/deps/rocksdb/rocksdb/env/mock_env.cc +1066 -0
  309. package/deps/rocksdb/rocksdb/env/mock_env.h +41 -0
  310. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +85 -0
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +402 -0
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +150 -0
  313. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +717 -0
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +156 -0
  315. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +99 -0
  316. package/deps/rocksdb/rocksdb/file/file_util.cc +268 -0
  317. package/deps/rocksdb/rocksdb/file/file_util.h +96 -0
  318. package/deps/rocksdb/rocksdb/file/filename.cc +473 -0
  319. package/deps/rocksdb/rocksdb/file/filename.h +182 -0
  320. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +188 -0
  321. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +315 -0
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +142 -0
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +482 -0
  324. package/deps/rocksdb/rocksdb/file/read_write_util.cc +67 -0
  325. package/deps/rocksdb/rocksdb/file/read_write_util.h +34 -0
  326. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +169 -0
  327. package/deps/rocksdb/rocksdb/file/readahead_raf.h +29 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +237 -0
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +63 -0
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +552 -0
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +203 -0
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +523 -0
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +251 -0
  334. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +386 -0
  335. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +839 -0
  336. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +2218 -0
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +294 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +71 -0
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +214 -0
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +98 -0
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +137 -0
  342. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +40 -0
  343. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +46 -0
  344. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +359 -0
  345. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +499 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +138 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1697 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/db_dump_tool.h +45 -0
  350. package/deps/rocksdb/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1671 -0
  352. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +405 -0
  353. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +29 -0
  354. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +129 -0
  355. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1472 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +238 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +61 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +269 -0
  359. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +56 -0
  360. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +128 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +43 -0
  362. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +556 -0
  363. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +77 -0
  364. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +385 -0
  365. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +257 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +155 -0
  367. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1702 -0
  368. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +237 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +35 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +73 -0
  371. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +139 -0
  372. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +10 -0
  373. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +269 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +103 -0
  375. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +48 -0
  376. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +19 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  378. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +47 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +145 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +135 -0
  381. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +592 -0
  382. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +69 -0
  383. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +608 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +711 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +280 -0
  386. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +188 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +58 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +48 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +121 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +74 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +86 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +535 -0
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +61 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +72 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +49 -0
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +175 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +180 -0
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +288 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +71 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +50 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +205 -0
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +100 -0
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +19 -0
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +876 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +128 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +94 -0
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +504 -0
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +95 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +626 -0
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +432 -0
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +92 -0
  417. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +34 -0
  418. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +279 -0
  419. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +16 -0
  420. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +102 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +377 -0
  422. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +127 -0
  423. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +106 -0
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +300 -0
  425. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +165 -0
  426. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +684 -0
  427. package/deps/rocksdb/rocksdb/logging/env_logger.h +165 -0
  428. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +162 -0
  429. package/deps/rocksdb/rocksdb/logging/event_logger.cc +70 -0
  430. package/deps/rocksdb/rocksdb/logging/event_logger.h +203 -0
  431. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +43 -0
  432. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +92 -0
  433. package/deps/rocksdb/rocksdb/logging/log_buffer.h +56 -0
  434. package/deps/rocksdb/rocksdb/logging/logging.h +68 -0
  435. package/deps/rocksdb/rocksdb/logging/posix_logger.h +185 -0
  436. package/deps/rocksdb/rocksdb/memory/allocator.h +57 -0
  437. package/deps/rocksdb/rocksdb/memory/arena.cc +233 -0
  438. package/deps/rocksdb/rocksdb/memory/arena.h +141 -0
  439. package/deps/rocksdb/rocksdb/memory/arena_test.cc +204 -0
  440. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +47 -0
  441. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +218 -0
  442. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +206 -0
  443. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +78 -0
  444. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +33 -0
  445. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +27 -0
  446. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +102 -0
  447. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +38 -0
  448. package/deps/rocksdb/rocksdb/memory/memory_usage.h +25 -0
  449. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +62 -0
  450. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +844 -0
  451. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +49 -0
  452. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +349 -0
  453. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +44 -0
  454. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +997 -0
  455. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +663 -0
  456. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +677 -0
  457. package/deps/rocksdb/rocksdb/memtable/skiplist.h +496 -0
  458. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +388 -0
  459. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +280 -0
  460. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +33 -0
  461. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +301 -0
  462. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -0
  463. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +203 -0
  464. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +23 -0
  465. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +287 -0
  466. package/deps/rocksdb/rocksdb/monitoring/histogram.h +149 -0
  467. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +231 -0
  468. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +200 -0
  469. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +84 -0
  470. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +49 -0
  471. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  472. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +71 -0
  473. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +98 -0
  474. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +62 -0
  475. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +60 -0
  476. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +29 -0
  477. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +566 -0
  478. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +97 -0
  479. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +28 -0
  480. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +18 -0
  481. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +79 -0
  482. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +169 -0
  483. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.h +83 -0
  484. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +431 -0
  485. package/deps/rocksdb/rocksdb/monitoring/statistics.h +138 -0
  486. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -0
  487. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +652 -0
  488. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +163 -0
  489. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +314 -0
  490. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +233 -0
  491. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  492. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +206 -0
  493. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +134 -0
  494. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +32 -0
  495. package/deps/rocksdb/rocksdb/options/cf_options.cc +1026 -0
  496. package/deps/rocksdb/rocksdb/options/cf_options.h +308 -0
  497. package/deps/rocksdb/rocksdb/options/configurable.cc +681 -0
  498. package/deps/rocksdb/rocksdb/options/configurable_helper.h +251 -0
  499. package/deps/rocksdb/rocksdb/options/configurable_test.cc +757 -0
  500. package/deps/rocksdb/rocksdb/options/configurable_test.h +127 -0
  501. package/deps/rocksdb/rocksdb/options/customizable.cc +77 -0
  502. package/deps/rocksdb/rocksdb/options/customizable_helper.h +216 -0
  503. package/deps/rocksdb/rocksdb/options/customizable_test.cc +625 -0
  504. package/deps/rocksdb/rocksdb/options/db_options.cc +835 -0
  505. package/deps/rocksdb/rocksdb/options/db_options.h +126 -0
  506. package/deps/rocksdb/rocksdb/options/options.cc +664 -0
  507. package/deps/rocksdb/rocksdb/options/options_helper.cc +1391 -0
  508. package/deps/rocksdb/rocksdb/options/options_helper.h +118 -0
  509. package/deps/rocksdb/rocksdb/options/options_parser.cc +721 -0
  510. package/deps/rocksdb/rocksdb/options/options_parser.h +151 -0
  511. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +583 -0
  512. package/deps/rocksdb/rocksdb/options/options_test.cc +3794 -0
  513. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +106 -0
  514. package/deps/rocksdb/rocksdb/port/lang.h +16 -0
  515. package/deps/rocksdb/rocksdb/port/likely.h +18 -0
  516. package/deps/rocksdb/rocksdb/port/malloc.h +17 -0
  517. package/deps/rocksdb/rocksdb/port/port.h +21 -0
  518. package/deps/rocksdb/rocksdb/port/port_dirent.h +44 -0
  519. package/deps/rocksdb/rocksdb/port/port_example.h +101 -0
  520. package/deps/rocksdb/rocksdb/port/port_posix.cc +266 -0
  521. package/deps/rocksdb/rocksdb/port/port_posix.h +223 -0
  522. package/deps/rocksdb/rocksdb/port/stack_trace.cc +179 -0
  523. package/deps/rocksdb/rocksdb/port/stack_trace.h +28 -0
  524. package/deps/rocksdb/rocksdb/port/sys_time.h +47 -0
  525. package/deps/rocksdb/rocksdb/port/util_logger.h +20 -0
  526. package/deps/rocksdb/rocksdb/port/win/env_default.cc +45 -0
  527. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1449 -0
  528. package/deps/rocksdb/rocksdb/port/win/env_win.h +294 -0
  529. package/deps/rocksdb/rocksdb/port/win/io_win.cc +1084 -0
  530. package/deps/rocksdb/rocksdb/port/win/io_win.h +494 -0
  531. package/deps/rocksdb/rocksdb/port/win/port_win.cc +283 -0
  532. package/deps/rocksdb/rocksdb/port/win/port_win.h +411 -0
  533. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +79 -0
  534. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +194 -0
  535. package/deps/rocksdb/rocksdb/port/win/win_logger.h +67 -0
  536. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +183 -0
  537. package/deps/rocksdb/rocksdb/port/win/win_thread.h +122 -0
  538. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +221 -0
  539. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +26 -0
  540. package/deps/rocksdb/rocksdb/port/xpress.h +17 -0
  541. package/deps/rocksdb/rocksdb/src.mk +631 -0
  542. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +126 -0
  543. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +57 -0
  544. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  545. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/block.cc +1049 -0
  547. package/deps/rocksdb/rocksdb/table/block_based/block.h +720 -0
  548. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +348 -0
  549. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +119 -0
  550. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +434 -0
  551. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1835 -0
  552. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +193 -0
  553. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +839 -0
  554. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +95 -0
  555. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +383 -0
  556. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +251 -0
  557. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3563 -0
  558. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +681 -0
  559. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +190 -0
  560. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +347 -0
  561. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +201 -0
  562. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +78 -0
  563. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +66 -0
  564. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +32 -0
  565. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +232 -0
  566. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +66 -0
  567. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +623 -0
  568. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  569. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +220 -0
  570. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +59 -0
  571. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +25 -0
  572. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +93 -0
  573. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +136 -0
  574. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +717 -0
  575. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +180 -0
  576. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +102 -0
  577. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +55 -0
  578. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1407 -0
  579. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +168 -0
  580. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +88 -0
  581. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +41 -0
  582. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +344 -0
  583. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +139 -0
  584. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +333 -0
  585. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  586. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.h +49 -0
  587. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +248 -0
  588. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +444 -0
  589. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +54 -0
  590. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +85 -0
  591. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +56 -0
  592. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +22 -0
  593. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +40 -0
  594. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +521 -0
  595. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +144 -0
  596. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +424 -0
  597. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  598. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +142 -0
  599. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +186 -0
  600. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +51 -0
  601. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +64 -0
  602. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +38 -0
  603. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +120 -0
  604. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +59 -0
  605. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +324 -0
  606. package/deps/rocksdb/rocksdb/table/block_fetcher.h +129 -0
  607. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +534 -0
  608. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +277 -0
  609. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +543 -0
  610. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  611. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +663 -0
  612. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +107 -0
  613. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +81 -0
  614. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +404 -0
  615. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +101 -0
  616. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +585 -0
  617. package/deps/rocksdb/rocksdb/table/format.cc +422 -0
  618. package/deps/rocksdb/rocksdb/table/format.h +348 -0
  619. package/deps/rocksdb/rocksdb/table/get_context.cc +408 -0
  620. package/deps/rocksdb/rocksdb/table/get_context.h +212 -0
  621. package/deps/rocksdb/rocksdb/table/internal_iterator.h +205 -0
  622. package/deps/rocksdb/rocksdb/table/iter_heap.h +42 -0
  623. package/deps/rocksdb/rocksdb/table/iterator.cc +210 -0
  624. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +180 -0
  625. package/deps/rocksdb/rocksdb/table/merger_test.cc +180 -0
  626. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +481 -0
  627. package/deps/rocksdb/rocksdb/table/merging_iterator.h +64 -0
  628. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +541 -0
  629. package/deps/rocksdb/rocksdb/table/meta_blocks.h +154 -0
  630. package/deps/rocksdb/rocksdb/table/mock_table.cc +328 -0
  631. package/deps/rocksdb/rocksdb/table/mock_table.h +89 -0
  632. package/deps/rocksdb/rocksdb/table/multiget_context.h +282 -0
  633. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +116 -0
  634. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +44 -0
  635. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +34 -0
  636. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  637. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +135 -0
  638. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +332 -0
  639. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +153 -0
  640. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +263 -0
  641. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +182 -0
  642. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +211 -0
  643. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +249 -0
  644. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +506 -0
  645. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +201 -0
  646. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +781 -0
  647. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +247 -0
  648. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +61 -0
  649. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +502 -0
  650. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +96 -0
  651. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +98 -0
  652. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +228 -0
  653. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +340 -0
  654. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +94 -0
  655. package/deps/rocksdb/rocksdb/table/table_builder.h +203 -0
  656. package/deps/rocksdb/rocksdb/table/table_factory.cc +38 -0
  657. package/deps/rocksdb/rocksdb/table/table_properties.cc +300 -0
  658. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +30 -0
  659. package/deps/rocksdb/rocksdb/table/table_reader.h +147 -0
  660. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +347 -0
  661. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +39 -0
  662. package/deps/rocksdb/rocksdb/table/table_test.cc +4769 -0
  663. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +215 -0
  664. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +43 -0
  665. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +38 -0
  666. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +74 -0
  667. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +93 -0
  668. package/deps/rocksdb/rocksdb/test_util/sync_point.h +161 -0
  669. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +129 -0
  670. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +74 -0
  671. package/deps/rocksdb/rocksdb/test_util/testharness.cc +56 -0
  672. package/deps/rocksdb/rocksdb/test_util/testharness.h +53 -0
  673. package/deps/rocksdb/rocksdb/test_util/testutil.cc +566 -0
  674. package/deps/rocksdb/rocksdb/test_util/testutil.h +887 -0
  675. package/deps/rocksdb/rocksdb/test_util/testutil_test.cc +43 -0
  676. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +388 -0
  677. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +132 -0
  678. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +27 -0
  679. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +45 -0
  680. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +166 -0
  681. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +570 -0
  682. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +92 -0
  683. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +54 -0
  684. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +152 -0
  685. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +59 -0
  686. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +141 -0
  687. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +33 -0
  688. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +74 -0
  689. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +117 -0
  690. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +263 -0
  691. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +96 -0
  692. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +40 -0
  693. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +29 -0
  694. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +144 -0
  695. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +30 -0
  696. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +51 -0
  697. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +28 -0
  698. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +10 -0
  699. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +26 -0
  700. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +138 -0
  701. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +23 -0
  702. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +57 -0
  703. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +260 -0
  704. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +52 -0
  705. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +328 -0
  706. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +1703 -0
  707. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +16 -0
  708. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +304 -0
  709. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +39 -0
  710. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +26 -0
  711. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +318 -0
  712. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.cpp +12 -0
  713. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +57 -0
  714. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +219 -0
  715. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +207 -0
  716. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +164 -0
  717. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +57 -0
  718. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +77 -0
  719. package/deps/rocksdb/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  720. package/deps/rocksdb/rocksdb/thirdparty.inc +268 -0
  721. package/deps/rocksdb/rocksdb/tools/CMakeLists.txt +30 -0
  722. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +110 -0
  723. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  724. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  725. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  726. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  727. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2307 -0
  728. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +395 -0
  729. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +721 -0
  730. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +719 -0
  731. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +25 -0
  732. package/deps/rocksdb/rocksdb/tools/db_bench.cc +21 -0
  733. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +7416 -0
  734. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +328 -0
  735. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +130 -0
  736. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +297 -0
  737. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +259 -0
  738. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_dump.cc +63 -0
  739. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +62 -0
  740. package/deps/rocksdb/rocksdb/tools/io_tracer_parser.cc +25 -0
  741. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +187 -0
  742. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +120 -0
  743. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.h +40 -0
  744. package/deps/rocksdb/rocksdb/tools/ldb.cc +21 -0
  745. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3609 -0
  746. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +665 -0
  747. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +746 -0
  748. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +159 -0
  749. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +221 -0
  750. package/deps/rocksdb/rocksdb/tools/sst_dump.cc +20 -0
  751. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +427 -0
  752. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +541 -0
  753. package/deps/rocksdb/rocksdb/tools/trace_analyzer.cc +25 -0
  754. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +752 -0
  755. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2001 -0
  756. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +292 -0
  757. package/deps/rocksdb/rocksdb/tools/write_stress.cc +305 -0
  758. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +496 -0
  759. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +294 -0
  760. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +379 -0
  761. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +229 -0
  762. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +174 -0
  763. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +215 -0
  764. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +491 -0
  765. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +195 -0
  766. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +255 -0
  767. package/deps/rocksdb/rocksdb/util/autovector.h +367 -0
  768. package/deps/rocksdb/rocksdb/util/autovector_test.cc +330 -0
  769. package/deps/rocksdb/rocksdb/util/bloom_impl.h +485 -0
  770. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1191 -0
  771. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -0
  772. package/deps/rocksdb/rocksdb/util/build_version.h +15 -0
  773. package/deps/rocksdb/rocksdb/util/cast_util.h +20 -0
  774. package/deps/rocksdb/rocksdb/util/channel.h +67 -0
  775. package/deps/rocksdb/rocksdb/util/coding.cc +89 -0
  776. package/deps/rocksdb/rocksdb/util/coding.h +419 -0
  777. package/deps/rocksdb/rocksdb/util/coding_lean.h +101 -0
  778. package/deps/rocksdb/rocksdb/util/coding_test.cc +217 -0
  779. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  780. package/deps/rocksdb/rocksdb/util/comparator.cc +219 -0
  781. package/deps/rocksdb/rocksdb/util/compression.h +1529 -0
  782. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +108 -0
  783. package/deps/rocksdb/rocksdb/util/compression_context_cache.h +47 -0
  784. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +67 -0
  785. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  786. package/deps/rocksdb/rocksdb/util/core_local.h +83 -0
  787. package/deps/rocksdb/rocksdb/util/crc32c.cc +1283 -0
  788. package/deps/rocksdb/rocksdb/util/crc32c.h +51 -0
  789. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +169 -0
  790. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +50 -0
  791. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +94 -0
  792. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +19 -0
  793. package/deps/rocksdb/rocksdb/util/crc32c_ppc_asm.S +756 -0
  794. package/deps/rocksdb/rocksdb/util/crc32c_ppc_constants.h +900 -0
  795. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +180 -0
  796. package/deps/rocksdb/rocksdb/util/defer.h +52 -0
  797. package/deps/rocksdb/rocksdb/util/defer_test.cc +39 -0
  798. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +68 -0
  799. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +70 -0
  800. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +214 -0
  801. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +323 -0
  802. package/deps/rocksdb/rocksdb/util/fastrange.h +112 -0
  803. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +136 -0
  804. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +98 -0
  805. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +449 -0
  806. package/deps/rocksdb/rocksdb/util/filelock_test.cc +152 -0
  807. package/deps/rocksdb/rocksdb/util/filter_bench.cc +781 -0
  808. package/deps/rocksdb/rocksdb/util/gflags_compat.h +20 -0
  809. package/deps/rocksdb/rocksdb/util/hash.cc +83 -0
  810. package/deps/rocksdb/rocksdb/util/hash.h +107 -0
  811. package/deps/rocksdb/rocksdb/util/hash_map.h +67 -0
  812. package/deps/rocksdb/rocksdb/util/hash_test.cc +593 -0
  813. package/deps/rocksdb/rocksdb/util/heap.h +166 -0
  814. package/deps/rocksdb/rocksdb/util/heap_test.cc +139 -0
  815. package/deps/rocksdb/rocksdb/util/kv_map.h +33 -0
  816. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +86 -0
  817. package/deps/rocksdb/rocksdb/util/math.h +186 -0
  818. package/deps/rocksdb/rocksdb/util/math128.h +298 -0
  819. package/deps/rocksdb/rocksdb/util/murmurhash.cc +191 -0
  820. package/deps/rocksdb/rocksdb/util/murmurhash.h +42 -0
  821. package/deps/rocksdb/rocksdb/util/mutexlock.h +186 -0
  822. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +27 -0
  823. package/deps/rocksdb/rocksdb/util/random.cc +56 -0
  824. package/deps/rocksdb/rocksdb/util/random.h +186 -0
  825. package/deps/rocksdb/rocksdb/util/random_test.cc +105 -0
  826. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +340 -0
  827. package/deps/rocksdb/rocksdb/util/rate_limiter.h +113 -0
  828. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +251 -0
  829. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +151 -0
  830. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +107 -0
  831. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1201 -0
  832. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +1062 -0
  833. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +931 -0
  834. package/deps/rocksdb/rocksdb/util/set_comparator.h +22 -0
  835. package/deps/rocksdb/rocksdb/util/slice.cc +243 -0
  836. package/deps/rocksdb/rocksdb/util/slice_test.cc +163 -0
  837. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +153 -0
  838. package/deps/rocksdb/rocksdb/util/status.cc +149 -0
  839. package/deps/rocksdb/rocksdb/util/stderr_logger.h +31 -0
  840. package/deps/rocksdb/rocksdb/util/stop_watch.h +118 -0
  841. package/deps/rocksdb/rocksdb/util/string_util.cc +422 -0
  842. package/deps/rocksdb/rocksdb/util/string_util.h +144 -0
  843. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +354 -0
  844. package/deps/rocksdb/rocksdb/util/thread_local.cc +554 -0
  845. package/deps/rocksdb/rocksdb/util/thread_local.h +101 -0
  846. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +583 -0
  847. package/deps/rocksdb/rocksdb/util/thread_operation.h +121 -0
  848. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +506 -0
  849. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +112 -0
  850. package/deps/rocksdb/rocksdb/util/timer.h +331 -0
  851. package/deps/rocksdb/rocksdb/util/timer_queue.h +230 -0
  852. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +72 -0
  853. package/deps/rocksdb/rocksdb/util/timer_test.cc +399 -0
  854. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +80 -0
  855. package/deps/rocksdb/rocksdb/util/vector_iterator.h +101 -0
  856. package/deps/rocksdb/rocksdb/util/work_queue.h +148 -0
  857. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +268 -0
  858. package/deps/rocksdb/rocksdb/util/xxh3p.h +1392 -0
  859. package/deps/rocksdb/rocksdb/util/xxhash.cc +1158 -0
  860. package/deps/rocksdb/rocksdb/util/xxhash.h +598 -0
  861. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +2354 -0
  862. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db_test.cc +2955 -0
  863. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  864. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +199 -0
  865. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  866. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +266 -0
  867. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +52 -0
  868. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2167 -0
  869. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +500 -0
  870. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +113 -0
  871. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +147 -0
  872. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +66 -0
  873. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +2386 -0
  874. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +281 -0
  875. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +58 -0
  876. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +314 -0
  877. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +244 -0
  878. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +47 -0
  879. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +42 -0
  880. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +375 -0
  881. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +327 -0
  882. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +114 -0
  883. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +187 -0
  884. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +390 -0
  885. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +184 -0
  886. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +67 -0
  887. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  888. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +75 -0
  889. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +72 -0
  890. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +43 -0
  891. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +588 -0
  892. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +82 -0
  893. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +821 -0
  894. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +37 -0
  895. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +29 -0
  896. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +27 -0
  897. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +25 -0
  898. package/deps/rocksdb/rocksdb/utilities/debug.cc +82 -0
  899. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +1497 -0
  900. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +1146 -0
  901. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +262 -0
  902. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +223 -0
  903. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +145 -0
  904. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +44 -0
  905. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +490 -0
  906. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +242 -0
  907. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +581 -0
  908. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +437 -0
  909. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +56 -0
  910. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +275 -0
  911. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +52 -0
  912. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +59 -0
  913. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +39 -0
  914. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +77 -0
  915. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +83 -0
  916. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +97 -0
  917. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +38 -0
  918. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +59 -0
  919. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +31 -0
  920. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +117 -0
  921. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +49 -0
  922. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +598 -0
  923. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +69 -0
  924. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +55 -0
  925. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +87 -0
  926. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +174 -0
  927. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +168 -0
  928. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +431 -0
  929. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +159 -0
  930. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +655 -0
  931. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +425 -0
  932. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +156 -0
  933. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +609 -0
  934. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +296 -0
  935. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  936. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +86 -0
  937. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +125 -0
  938. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +238 -0
  939. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +308 -0
  940. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +168 -0
  941. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +160 -0
  942. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +174 -0
  943. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +360 -0
  944. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +456 -0
  945. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +286 -0
  946. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +167 -0
  947. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +339 -0
  948. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  949. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +140 -0
  950. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +142 -0
  951. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +285 -0
  952. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  953. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +494 -0
  954. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +356 -0
  955. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +224 -0
  956. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +122 -0
  957. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +72 -0
  958. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +244 -0
  959. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +125 -0
  960. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  961. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +29 -0
  962. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +82 -0
  963. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_tracker.h +209 -0
  964. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +720 -0
  965. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +223 -0
  966. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +181 -0
  967. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +319 -0
  968. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +270 -0
  969. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +99 -0
  970. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +30 -0
  971. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +306 -0
  972. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  973. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  974. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  975. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  976. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  977. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  978. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +139 -0
  979. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  980. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +222 -0
  981. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  982. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  983. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +253 -0
  984. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1007 -0
  985. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +560 -0
  986. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +527 -0
  987. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +265 -0
  988. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  989. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +520 -0
  990. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  991. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +120 -0
  992. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  993. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +213 -0
  994. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  995. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  996. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  997. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  998. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +82 -0
  999. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1000. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1001. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1002. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1003. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +172 -0
  1004. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1005. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +132 -0
  1006. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +153 -0
  1007. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1008. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1009. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +201 -0
  1010. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1011. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1012. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1013. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1014. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1015. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +479 -0
  1016. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +130 -0
  1017. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +156 -0
  1018. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1019. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +196 -0
  1020. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +101 -0
  1021. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +111 -0
  1022. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +87 -0
  1023. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1418 -0
  1024. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +752 -0
  1025. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +232 -0
  1026. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +628 -0
  1027. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +228 -0
  1028. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +49 -0
  1029. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +678 -0
  1030. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +373 -0
  1031. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +135 -0
  1032. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +26 -0
  1033. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6350 -0
  1034. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +522 -0
  1035. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +188 -0
  1036. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +80 -0
  1037. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3531 -0
  1038. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +483 -0
  1039. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +119 -0
  1040. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +999 -0
  1041. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +1109 -0
  1042. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +786 -0
  1043. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1039 -0
  1044. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +341 -0
  1045. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +470 -0
  1046. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +108 -0
  1047. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +332 -0
  1048. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +353 -0
  1049. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +703 -0
  1050. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +99 -0
  1051. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +617 -0
  1052. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +345 -0
  1053. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +569 -0
  1054. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1867 -0
  1055. package/deps/rocksdb/rocksdb.gyp +475 -0
  1056. package/deps/snappy/freebsd/config.h +135 -0
  1057. package/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
  1058. package/deps/snappy/linux/config.h +135 -0
  1059. package/deps/snappy/linux/snappy-stubs-public.h +100 -0
  1060. package/deps/snappy/mac/config.h +137 -0
  1061. package/deps/snappy/mac/snappy-stubs-public.h +100 -0
  1062. package/deps/snappy/openbsd/config.h +135 -0
  1063. package/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
  1064. package/deps/snappy/snappy-1.1.7/COPYING +54 -0
  1065. package/deps/snappy/snappy-1.1.7/cmake/SnappyConfig.cmake +1 -0
  1066. package/deps/snappy/snappy-1.1.7/cmake/config.h.in +62 -0
  1067. package/deps/snappy/snappy-1.1.7/snappy-c.cc +90 -0
  1068. package/deps/snappy/snappy-1.1.7/snappy-c.h +138 -0
  1069. package/deps/snappy/snappy-1.1.7/snappy-internal.h +224 -0
  1070. package/deps/snappy/snappy-1.1.7/snappy-sinksource.cc +104 -0
  1071. package/deps/snappy/snappy-1.1.7/snappy-sinksource.h +182 -0
  1072. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.cc +42 -0
  1073. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.h +561 -0
  1074. package/deps/snappy/snappy-1.1.7/snappy-stubs-public.h.in +94 -0
  1075. package/deps/snappy/snappy-1.1.7/snappy-test.cc +612 -0
  1076. package/deps/snappy/snappy-1.1.7/snappy-test.h +573 -0
  1077. package/deps/snappy/snappy-1.1.7/snappy.cc +1515 -0
  1078. package/deps/snappy/snappy-1.1.7/snappy.h +203 -0
  1079. package/deps/snappy/snappy-1.1.7/snappy_unittest.cc +1410 -0
  1080. package/deps/snappy/snappy.gyp +90 -0
  1081. package/deps/snappy/solaris/config.h +135 -0
  1082. package/deps/snappy/solaris/snappy-stubs-public.h +100 -0
  1083. package/deps/snappy/win32/config.h +29 -0
  1084. package/deps/snappy/win32/snappy-stubs-public.h +100 -0
  1085. package/iterator.js +55 -0
  1086. package/leveldown.js +113 -0
  1087. package/package-lock.json +23687 -0
  1088. package/package.json +70 -0
@@ -0,0 +1,1499 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+
10
+ #ifdef ROCKSDB_LIB_IO_POSIX
11
+ #include "env/io_posix.h"
12
+ #include <errno.h>
13
+ #include <fcntl.h>
14
+ #include <algorithm>
15
+ #if defined(OS_LINUX)
16
+ #include <linux/fs.h>
17
+ #ifndef FALLOC_FL_KEEP_SIZE
18
+ #include <linux/falloc.h>
19
+ #endif
20
+ #endif
21
+ #include <stdio.h>
22
+ #include <stdlib.h>
23
+ #include <string.h>
24
+ #include <sys/ioctl.h>
25
+ #include <sys/mman.h>
26
+ #include <sys/stat.h>
27
+ #include <sys/types.h>
28
+ #ifdef OS_LINUX
29
+ #include <sys/statfs.h>
30
+ #include <sys/sysmacros.h>
31
+ #endif
32
+ #include "monitoring/iostats_context_imp.h"
33
+ #include "port/port.h"
34
+ #include "rocksdb/slice.h"
35
+ #include "test_util/sync_point.h"
36
+ #include "util/autovector.h"
37
+ #include "util/coding.h"
38
+ #include "util/string_util.h"
39
+
40
+ #if defined(OS_LINUX) && !defined(F_SET_RW_HINT)
41
+ #define F_LINUX_SPECIFIC_BASE 1024
42
+ #define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
43
+ #endif
44
+
45
+ namespace ROCKSDB_NAMESPACE {
46
+
47
+ std::string IOErrorMsg(const std::string& context,
48
+ const std::string& file_name) {
49
+ if (file_name.empty()) {
50
+ return context;
51
+ }
52
+ return context + ": " + file_name;
53
+ }
54
+
55
+ // file_name can be left empty if it is not unkown.
56
+ IOStatus IOError(const std::string& context, const std::string& file_name,
57
+ int err_number) {
58
+ switch (err_number) {
59
+ case ENOSPC: {
60
+ IOStatus s = IOStatus::NoSpace(IOErrorMsg(context, file_name),
61
+ strerror(err_number));
62
+ s.SetRetryable(true);
63
+ return s;
64
+ }
65
+ case ESTALE:
66
+ return IOStatus::IOError(IOStatus::kStaleFile);
67
+ case ENOENT:
68
+ return IOStatus::PathNotFound(IOErrorMsg(context, file_name),
69
+ strerror(err_number));
70
+ default:
71
+ return IOStatus::IOError(IOErrorMsg(context, file_name),
72
+ strerror(err_number));
73
+ }
74
+ }
75
+
76
+ // A wrapper for fadvise, if the platform doesn't support fadvise,
77
+ // it will simply return 0.
78
+ int Fadvise(int fd, off_t offset, size_t len, int advice) {
79
+ #ifdef OS_LINUX
80
+ return posix_fadvise(fd, offset, len, advice);
81
+ #else
82
+ (void)fd;
83
+ (void)offset;
84
+ (void)len;
85
+ (void)advice;
86
+ return 0; // simply do nothing.
87
+ #endif
88
+ }
89
+
90
+ namespace {
91
+
92
+ // On MacOS (and probably *BSD), the posix write and pwrite calls do not support
93
+ // buffers larger than 2^31-1 bytes. These two wrappers fix this issue by
94
+ // cutting the buffer in 1GB chunks. We use this chunk size to be sure to keep
95
+ // the writes aligned.
96
+
97
+ bool PosixWrite(int fd, const char* buf, size_t nbyte) {
98
+ const size_t kLimit1Gb = 1UL << 30;
99
+
100
+ const char* src = buf;
101
+ size_t left = nbyte;
102
+
103
+ while (left != 0) {
104
+ size_t bytes_to_write = std::min(left, kLimit1Gb);
105
+
106
+ ssize_t done = write(fd, src, bytes_to_write);
107
+ if (done < 0) {
108
+ if (errno == EINTR) {
109
+ continue;
110
+ }
111
+ return false;
112
+ }
113
+ left -= done;
114
+ src += done;
115
+ }
116
+ return true;
117
+ }
118
+
119
+ bool PosixPositionedWrite(int fd, const char* buf, size_t nbyte, off_t offset) {
120
+ const size_t kLimit1Gb = 1UL << 30;
121
+
122
+ const char* src = buf;
123
+ size_t left = nbyte;
124
+
125
+ while (left != 0) {
126
+ size_t bytes_to_write = std::min(left, kLimit1Gb);
127
+
128
+ ssize_t done = pwrite(fd, src, bytes_to_write, offset);
129
+ if (done < 0) {
130
+ if (errno == EINTR) {
131
+ continue;
132
+ }
133
+ return false;
134
+ }
135
+ left -= done;
136
+ offset += done;
137
+ src += done;
138
+ }
139
+
140
+ return true;
141
+ }
142
+
143
+ #ifdef ROCKSDB_RANGESYNC_PRESENT
144
+
145
+ #if !defined(ZFS_SUPER_MAGIC)
146
+ // The magic number for ZFS was not exposed until recently. It should be fixed
147
+ // forever so we can just copy the magic number here.
148
+ #define ZFS_SUPER_MAGIC 0x2fc12fc1
149
+ #endif
150
+
151
+ bool IsSyncFileRangeSupported(int fd) {
152
+ // This function tracks and checks for cases where we know `sync_file_range`
153
+ // definitely will not work properly despite passing the compile-time check
154
+ // (`ROCKSDB_RANGESYNC_PRESENT`). If we are unsure, or if any of the checks
155
+ // fail in unexpected ways, we allow `sync_file_range` to be used. This way
156
+ // should minimize risk of impacting existing use cases.
157
+ struct statfs buf;
158
+ int ret = fstatfs(fd, &buf);
159
+ assert(ret == 0);
160
+ if (ret == 0 && buf.f_type == ZFS_SUPER_MAGIC) {
161
+ // Testing on ZFS showed the writeback did not happen asynchronously when
162
+ // `sync_file_range` was called, even though it returned success. Avoid it
163
+ // and use `fdatasync` instead to preserve the contract of `bytes_per_sync`,
164
+ // even though this'll incur extra I/O for metadata.
165
+ return false;
166
+ }
167
+
168
+ ret = sync_file_range(fd, 0 /* offset */, 0 /* nbytes */, 0 /* flags */);
169
+ assert(!(ret == -1 && errno != ENOSYS));
170
+ if (ret == -1 && errno == ENOSYS) {
171
+ // `sync_file_range` is not implemented on all platforms even if
172
+ // compile-time checks pass and a supported filesystem is in-use. For
173
+ // example, using ext4 on WSL (Windows Subsystem for Linux),
174
+ // `sync_file_range()` returns `ENOSYS`
175
+ // ("Function not implemented").
176
+ return false;
177
+ }
178
+ // None of the known cases matched, so allow `sync_file_range` use.
179
+ return true;
180
+ }
181
+
182
+ #undef ZFS_SUPER_MAGIC
183
+
184
+ #endif // ROCKSDB_RANGESYNC_PRESENT
185
+
186
+ } // anonymous namespace
187
+
188
+ /*
189
+ * DirectIOHelper
190
+ */
191
+ namespace {
192
+
193
+ bool IsSectorAligned(const size_t off, size_t sector_size) {
194
+ assert((sector_size & (sector_size - 1)) == 0);
195
+ return (off & (sector_size - 1)) == 0;
196
+ }
197
+
198
+ #ifndef NDEBUG
199
+ bool IsSectorAligned(const void* ptr, size_t sector_size) {
200
+ return uintptr_t(ptr) % sector_size == 0;
201
+ }
202
+ #endif
203
+ } // namespace
204
+
205
+ /*
206
+ * PosixSequentialFile
207
+ */
208
+ PosixSequentialFile::PosixSequentialFile(const std::string& fname, FILE* file,
209
+ int fd, size_t logical_block_size,
210
+ const EnvOptions& options)
211
+ : filename_(fname),
212
+ file_(file),
213
+ fd_(fd),
214
+ use_direct_io_(options.use_direct_reads),
215
+ logical_sector_size_(logical_block_size) {
216
+ assert(!options.use_direct_reads || !options.use_mmap_reads);
217
+ }
218
+
219
+ PosixSequentialFile::~PosixSequentialFile() {
220
+ if (!use_direct_io()) {
221
+ assert(file_);
222
+ fclose(file_);
223
+ } else {
224
+ assert(fd_);
225
+ close(fd_);
226
+ }
227
+ }
228
+
229
+ IOStatus PosixSequentialFile::Read(size_t n, const IOOptions& /*opts*/,
230
+ Slice* result, char* scratch,
231
+ IODebugContext* /*dbg*/) {
232
+ assert(result != nullptr && !use_direct_io());
233
+ IOStatus s;
234
+ size_t r = 0;
235
+ do {
236
+ clearerr(file_);
237
+ r = fread_unlocked(scratch, 1, n, file_);
238
+ } while (r == 0 && ferror(file_) && errno == EINTR);
239
+ *result = Slice(scratch, r);
240
+ if (r < n) {
241
+ if (feof(file_)) {
242
+ // We leave status as ok if we hit the end of the file
243
+ // We also clear the error so that the reads can continue
244
+ // if a new data is written to the file
245
+ clearerr(file_);
246
+ } else {
247
+ // A partial read with an error: return a non-ok status
248
+ s = IOError("While reading file sequentially", filename_, errno);
249
+ }
250
+ }
251
+ return s;
252
+ }
253
+
254
+ IOStatus PosixSequentialFile::PositionedRead(uint64_t offset, size_t n,
255
+ const IOOptions& /*opts*/,
256
+ Slice* result, char* scratch,
257
+ IODebugContext* /*dbg*/) {
258
+ assert(use_direct_io());
259
+ assert(IsSectorAligned(offset, GetRequiredBufferAlignment()));
260
+ assert(IsSectorAligned(n, GetRequiredBufferAlignment()));
261
+ assert(IsSectorAligned(scratch, GetRequiredBufferAlignment()));
262
+
263
+ IOStatus s;
264
+ ssize_t r = -1;
265
+ size_t left = n;
266
+ char* ptr = scratch;
267
+ while (left > 0) {
268
+ r = pread(fd_, ptr, left, static_cast<off_t>(offset));
269
+ if (r <= 0) {
270
+ if (r == -1 && errno == EINTR) {
271
+ continue;
272
+ }
273
+ break;
274
+ }
275
+ ptr += r;
276
+ offset += r;
277
+ left -= r;
278
+ if (!IsSectorAligned(r, GetRequiredBufferAlignment())) {
279
+ // Bytes reads don't fill sectors. Should only happen at the end
280
+ // of the file.
281
+ break;
282
+ }
283
+ }
284
+ if (r < 0) {
285
+ // An error: return a non-ok status
286
+ s = IOError(
287
+ "While pread " + ToString(n) + " bytes from offset " + ToString(offset),
288
+ filename_, errno);
289
+ }
290
+ *result = Slice(scratch, (r < 0) ? 0 : n - left);
291
+ return s;
292
+ }
293
+
294
+ IOStatus PosixSequentialFile::Skip(uint64_t n) {
295
+ if (fseek(file_, static_cast<long int>(n), SEEK_CUR)) {
296
+ return IOError("While fseek to skip " + ToString(n) + " bytes", filename_,
297
+ errno);
298
+ }
299
+ return IOStatus::OK();
300
+ }
301
+
302
+ IOStatus PosixSequentialFile::InvalidateCache(size_t offset, size_t length) {
303
+ #ifndef OS_LINUX
304
+ (void)offset;
305
+ (void)length;
306
+ return IOStatus::OK();
307
+ #else
308
+ if (!use_direct_io()) {
309
+ // free OS pages
310
+ int ret = Fadvise(fd_, offset, length, POSIX_FADV_DONTNEED);
311
+ if (ret != 0) {
312
+ return IOError("While fadvise NotNeeded offset " + ToString(offset) +
313
+ " len " + ToString(length),
314
+ filename_, errno);
315
+ }
316
+ }
317
+ return IOStatus::OK();
318
+ #endif
319
+ }
320
+
321
+ /*
322
+ * PosixRandomAccessFile
323
+ */
324
+ #if defined(OS_LINUX)
325
+ size_t PosixHelper::GetUniqueIdFromFile(int fd, char* id, size_t max_size) {
326
+ if (max_size < kMaxVarint64Length * 3) {
327
+ return 0;
328
+ }
329
+
330
+ struct stat buf;
331
+ int result = fstat(fd, &buf);
332
+ if (result == -1) {
333
+ return 0;
334
+ }
335
+
336
+ long version = 0;
337
+ result = ioctl(fd, FS_IOC_GETVERSION, &version);
338
+ TEST_SYNC_POINT_CALLBACK("GetUniqueIdFromFile:FS_IOC_GETVERSION", &result);
339
+ if (result == -1) {
340
+ return 0;
341
+ }
342
+ uint64_t uversion = (uint64_t)version;
343
+
344
+ char* rid = id;
345
+ rid = EncodeVarint64(rid, buf.st_dev);
346
+ rid = EncodeVarint64(rid, buf.st_ino);
347
+ rid = EncodeVarint64(rid, uversion);
348
+ assert(rid >= id);
349
+ return static_cast<size_t>(rid - id);
350
+ }
351
+ #endif
352
+
353
+ #if defined(OS_MACOSX) || defined(OS_AIX)
354
+ size_t PosixHelper::GetUniqueIdFromFile(int fd, char* id, size_t max_size) {
355
+ if (max_size < kMaxVarint64Length * 3) {
356
+ return 0;
357
+ }
358
+
359
+ struct stat buf;
360
+ int result = fstat(fd, &buf);
361
+ if (result == -1) {
362
+ return 0;
363
+ }
364
+
365
+ char* rid = id;
366
+ rid = EncodeVarint64(rid, buf.st_dev);
367
+ rid = EncodeVarint64(rid, buf.st_ino);
368
+ rid = EncodeVarint64(rid, buf.st_gen);
369
+ assert(rid >= id);
370
+ return static_cast<size_t>(rid - id);
371
+ }
372
+ #endif
373
+
374
+ #ifdef OS_LINUX
375
+ std::string RemoveTrailingSlash(const std::string& path) {
376
+ std::string p = path;
377
+ if (p.size() > 1 && p.back() == '/') {
378
+ p.pop_back();
379
+ }
380
+ return p;
381
+ }
382
+
383
+ Status LogicalBlockSizeCache::RefAndCacheLogicalBlockSize(
384
+ const std::vector<std::string>& directories) {
385
+ std::vector<std::string> dirs;
386
+ dirs.reserve(directories.size());
387
+ for (auto& d : directories) {
388
+ dirs.emplace_back(RemoveTrailingSlash(d));
389
+ }
390
+
391
+ std::map<std::string, size_t> dir_sizes;
392
+ {
393
+ ReadLock lock(&cache_mutex_);
394
+ for (const auto& dir : dirs) {
395
+ if (cache_.find(dir) == cache_.end()) {
396
+ dir_sizes.emplace(dir, 0);
397
+ }
398
+ }
399
+ }
400
+
401
+ Status s;
402
+ for (auto& dir_size : dir_sizes) {
403
+ s = get_logical_block_size_of_directory_(dir_size.first, &dir_size.second);
404
+ if (!s.ok()) {
405
+ return s;
406
+ }
407
+ }
408
+
409
+ WriteLock lock(&cache_mutex_);
410
+ for (const auto& dir : dirs) {
411
+ auto& v = cache_[dir];
412
+ v.ref++;
413
+ auto dir_size = dir_sizes.find(dir);
414
+ if (dir_size != dir_sizes.end()) {
415
+ v.size = dir_size->second;
416
+ }
417
+ }
418
+ return s;
419
+ }
420
+
421
+ void LogicalBlockSizeCache::UnrefAndTryRemoveCachedLogicalBlockSize(
422
+ const std::vector<std::string>& directories) {
423
+ std::vector<std::string> dirs;
424
+ dirs.reserve(directories.size());
425
+ for (auto& dir : directories) {
426
+ dirs.emplace_back(RemoveTrailingSlash(dir));
427
+ }
428
+
429
+ WriteLock lock(&cache_mutex_);
430
+ for (const auto& dir : dirs) {
431
+ auto it = cache_.find(dir);
432
+ if (it != cache_.end() && !(--(it->second.ref))) {
433
+ cache_.erase(it);
434
+ }
435
+ }
436
+ }
437
+
438
+ size_t LogicalBlockSizeCache::GetLogicalBlockSize(const std::string& fname,
439
+ int fd) {
440
+ std::string dir = fname.substr(0, fname.find_last_of("/"));
441
+ if (dir.empty()) {
442
+ dir = "/";
443
+ }
444
+ {
445
+ ReadLock lock(&cache_mutex_);
446
+ auto it = cache_.find(dir);
447
+ if (it != cache_.end()) {
448
+ return it->second.size;
449
+ }
450
+ }
451
+ return get_logical_block_size_of_fd_(fd);
452
+ }
453
+ #endif
454
+
455
+ Status PosixHelper::GetLogicalBlockSizeOfDirectory(const std::string& directory,
456
+ size_t* size) {
457
+ int fd = open(directory.c_str(), O_DIRECTORY | O_RDONLY);
458
+ if (fd == -1) {
459
+ close(fd);
460
+ return Status::IOError("Cannot open directory " + directory);
461
+ }
462
+ *size = PosixHelper::GetLogicalBlockSizeOfFd(fd);
463
+ close(fd);
464
+ return Status::OK();
465
+ }
466
+
467
+ size_t PosixHelper::GetLogicalBlockSizeOfFd(int fd) {
468
+ #ifdef OS_LINUX
469
+ struct stat buf;
470
+ int result = fstat(fd, &buf);
471
+ if (result == -1) {
472
+ return kDefaultPageSize;
473
+ }
474
+ if (major(buf.st_dev) == 0) {
475
+ // Unnamed devices (e.g. non-device mounts), reserved as null device number.
476
+ // These don't have an entry in /sys/dev/block/. Return a sensible default.
477
+ return kDefaultPageSize;
478
+ }
479
+
480
+ // Reading queue/logical_block_size does not require special permissions.
481
+ const int kBufferSize = 100;
482
+ char path[kBufferSize];
483
+ char real_path[PATH_MAX + 1];
484
+ snprintf(path, kBufferSize, "/sys/dev/block/%u:%u", major(buf.st_dev),
485
+ minor(buf.st_dev));
486
+ if (realpath(path, real_path) == nullptr) {
487
+ return kDefaultPageSize;
488
+ }
489
+ std::string device_dir(real_path);
490
+ if (!device_dir.empty() && device_dir.back() == '/') {
491
+ device_dir.pop_back();
492
+ }
493
+ // NOTE: sda3 and nvme0n1p1 do not have a `queue/` subdir, only the parent sda
494
+ // and nvme0n1 have it.
495
+ // $ ls -al '/sys/dev/block/8:3'
496
+ // lrwxrwxrwx. 1 root root 0 Jun 26 01:38 /sys/dev/block/8:3 ->
497
+ // ../../block/sda/sda3
498
+ // $ ls -al '/sys/dev/block/259:4'
499
+ // lrwxrwxrwx 1 root root 0 Jan 31 16:04 /sys/dev/block/259:4 ->
500
+ // ../../devices/pci0000:17/0000:17:00.0/0000:18:00.0/nvme/nvme0/nvme0n1/nvme0n1p1
501
+ size_t parent_end = device_dir.rfind('/', device_dir.length() - 1);
502
+ if (parent_end == std::string::npos) {
503
+ return kDefaultPageSize;
504
+ }
505
+ size_t parent_begin = device_dir.rfind('/', parent_end - 1);
506
+ if (parent_begin == std::string::npos) {
507
+ return kDefaultPageSize;
508
+ }
509
+ std::string parent =
510
+ device_dir.substr(parent_begin + 1, parent_end - parent_begin - 1);
511
+ std::string child = device_dir.substr(parent_end + 1, std::string::npos);
512
+ if (parent != "block" &&
513
+ (child.compare(0, 4, "nvme") || child.find('p') != std::string::npos)) {
514
+ device_dir = device_dir.substr(0, parent_end);
515
+ }
516
+ std::string fname = device_dir + "/queue/logical_block_size";
517
+ FILE* fp;
518
+ size_t size = 0;
519
+ fp = fopen(fname.c_str(), "r");
520
+ if (fp != nullptr) {
521
+ char* line = nullptr;
522
+ size_t len = 0;
523
+ if (getline(&line, &len, fp) != -1) {
524
+ sscanf(line, "%zu", &size);
525
+ }
526
+ free(line);
527
+ fclose(fp);
528
+ }
529
+ if (size != 0 && (size & (size - 1)) == 0) {
530
+ return size;
531
+ }
532
+ #endif
533
+ (void)fd;
534
+ return kDefaultPageSize;
535
+ }
536
+
537
+ /*
538
+ * PosixRandomAccessFile
539
+ *
540
+ * pread() based random-access
541
+ */
542
+ PosixRandomAccessFile::PosixRandomAccessFile(
543
+ const std::string& fname, int fd, size_t logical_block_size,
544
+ const EnvOptions& options
545
+ #if defined(ROCKSDB_IOURING_PRESENT)
546
+ ,
547
+ ThreadLocalPtr* thread_local_io_urings
548
+ #endif
549
+ )
550
+ : filename_(fname),
551
+ fd_(fd),
552
+ use_direct_io_(options.use_direct_reads),
553
+ logical_sector_size_(logical_block_size)
554
+ #if defined(ROCKSDB_IOURING_PRESENT)
555
+ ,
556
+ thread_local_io_urings_(thread_local_io_urings)
557
+ #endif
558
+ {
559
+ assert(!options.use_direct_reads || !options.use_mmap_reads);
560
+ assert(!options.use_mmap_reads || sizeof(void*) < 8);
561
+ }
562
+
563
+ PosixRandomAccessFile::~PosixRandomAccessFile() { close(fd_); }
564
+
565
+ IOStatus PosixRandomAccessFile::Read(uint64_t offset, size_t n,
566
+ const IOOptions& /*opts*/, Slice* result,
567
+ char* scratch,
568
+ IODebugContext* /*dbg*/) const {
569
+ if (use_direct_io()) {
570
+ assert(IsSectorAligned(offset, GetRequiredBufferAlignment()));
571
+ assert(IsSectorAligned(n, GetRequiredBufferAlignment()));
572
+ assert(IsSectorAligned(scratch, GetRequiredBufferAlignment()));
573
+ }
574
+ IOStatus s;
575
+ ssize_t r = -1;
576
+ size_t left = n;
577
+ char* ptr = scratch;
578
+ while (left > 0) {
579
+ r = pread(fd_, ptr, left, static_cast<off_t>(offset));
580
+ if (r <= 0) {
581
+ if (r == -1 && errno == EINTR) {
582
+ continue;
583
+ }
584
+ break;
585
+ }
586
+ ptr += r;
587
+ offset += r;
588
+ left -= r;
589
+ if (use_direct_io() &&
590
+ r % static_cast<ssize_t>(GetRequiredBufferAlignment()) != 0) {
591
+ // Bytes reads don't fill sectors. Should only happen at the end
592
+ // of the file.
593
+ break;
594
+ }
595
+ }
596
+ if (r < 0) {
597
+ // An error: return a non-ok status
598
+ s = IOError(
599
+ "While pread offset " + ToString(offset) + " len " + ToString(n),
600
+ filename_, errno);
601
+ }
602
+ *result = Slice(scratch, (r < 0) ? 0 : n - left);
603
+ return s;
604
+ }
605
+
606
+ IOStatus PosixRandomAccessFile::MultiRead(FSReadRequest* reqs,
607
+ size_t num_reqs,
608
+ const IOOptions& options,
609
+ IODebugContext* dbg) {
610
+ if (use_direct_io()) {
611
+ for (size_t i = 0; i < num_reqs; i++) {
612
+ assert(IsSectorAligned(reqs[i].offset, GetRequiredBufferAlignment()));
613
+ assert(IsSectorAligned(reqs[i].len, GetRequiredBufferAlignment()));
614
+ assert(IsSectorAligned(reqs[i].scratch, GetRequiredBufferAlignment()));
615
+ }
616
+ }
617
+
618
+ #if defined(ROCKSDB_IOURING_PRESENT)
619
+ struct io_uring* iu = nullptr;
620
+ if (thread_local_io_urings_) {
621
+ iu = static_cast<struct io_uring*>(thread_local_io_urings_->Get());
622
+ if (iu == nullptr) {
623
+ iu = CreateIOUring();
624
+ if (iu != nullptr) {
625
+ thread_local_io_urings_->Reset(iu);
626
+ }
627
+ }
628
+ }
629
+
630
+ // Init failed, platform doesn't support io_uring. Fall back to
631
+ // serialized reads
632
+ if (iu == nullptr) {
633
+ return FSRandomAccessFile::MultiRead(reqs, num_reqs, options, dbg);
634
+ }
635
+
636
+ struct WrappedReadRequest {
637
+ FSReadRequest* req;
638
+ struct iovec iov;
639
+ size_t finished_len;
640
+ explicit WrappedReadRequest(FSReadRequest* r) : req(r), finished_len(0) {}
641
+ };
642
+
643
+ autovector<WrappedReadRequest, 32> req_wraps;
644
+ autovector<WrappedReadRequest*, 4> incomplete_rq_list;
645
+
646
+ for (size_t i = 0; i < num_reqs; i++) {
647
+ req_wraps.emplace_back(&reqs[i]);
648
+ }
649
+
650
+ size_t reqs_off = 0;
651
+ while (num_reqs > reqs_off || !incomplete_rq_list.empty()) {
652
+ size_t this_reqs = (num_reqs - reqs_off) + incomplete_rq_list.size();
653
+
654
+ // If requests exceed depth, split it into batches
655
+ if (this_reqs > kIoUringDepth) this_reqs = kIoUringDepth;
656
+
657
+ assert(incomplete_rq_list.size() <= this_reqs);
658
+ for (size_t i = 0; i < this_reqs; i++) {
659
+ WrappedReadRequest* rep_to_submit;
660
+ if (i < incomplete_rq_list.size()) {
661
+ rep_to_submit = incomplete_rq_list[i];
662
+ } else {
663
+ rep_to_submit = &req_wraps[reqs_off++];
664
+ }
665
+ assert(rep_to_submit->req->len > rep_to_submit->finished_len);
666
+ rep_to_submit->iov.iov_base =
667
+ rep_to_submit->req->scratch + rep_to_submit->finished_len;
668
+ rep_to_submit->iov.iov_len =
669
+ rep_to_submit->req->len - rep_to_submit->finished_len;
670
+
671
+ struct io_uring_sqe* sqe;
672
+ sqe = io_uring_get_sqe(iu);
673
+ io_uring_prep_readv(
674
+ sqe, fd_, &rep_to_submit->iov, 1,
675
+ rep_to_submit->req->offset + rep_to_submit->finished_len);
676
+ io_uring_sqe_set_data(sqe, rep_to_submit);
677
+ }
678
+ incomplete_rq_list.clear();
679
+
680
+ ssize_t ret =
681
+ io_uring_submit_and_wait(iu, static_cast<unsigned int>(this_reqs));
682
+ if (static_cast<size_t>(ret) != this_reqs) {
683
+ fprintf(stderr, "ret = %ld this_reqs: %ld\n", (long)ret, (long)this_reqs);
684
+ }
685
+ assert(static_cast<size_t>(ret) == this_reqs);
686
+
687
+ for (size_t i = 0; i < this_reqs; i++) {
688
+ struct io_uring_cqe* cqe;
689
+ WrappedReadRequest* req_wrap;
690
+
691
+ // We could use the peek variant here, but this seems safer in terms
692
+ // of our initial wait not reaping all completions
693
+ ret = io_uring_wait_cqe(iu, &cqe);
694
+ assert(!ret);
695
+
696
+ req_wrap = static_cast<WrappedReadRequest*>(io_uring_cqe_get_data(cqe));
697
+ FSReadRequest* req = req_wrap->req;
698
+ if (cqe->res < 0) {
699
+ req->result = Slice(req->scratch, 0);
700
+ req->status = IOError("Req failed", filename_, cqe->res);
701
+ } else {
702
+ size_t bytes_read = static_cast<size_t>(cqe->res);
703
+ TEST_SYNC_POINT_CALLBACK(
704
+ "PosixRandomAccessFile::MultiRead:io_uring_result", &bytes_read);
705
+ if (bytes_read == req_wrap->iov.iov_len) {
706
+ req->result = Slice(req->scratch, req->len);
707
+ req->status = IOStatus::OK();
708
+ } else if (bytes_read == 0) {
709
+ // cqe->res == 0 can means EOF, or can mean partial results. See
710
+ // comment
711
+ // https://github.com/facebook/rocksdb/pull/6441#issuecomment-589843435
712
+ // Fall back to pread in this case.
713
+ if (use_direct_io() &&
714
+ !IsSectorAligned(req_wrap->finished_len,
715
+ GetRequiredBufferAlignment())) {
716
+ // Bytes reads don't fill sectors. Should only happen at the end
717
+ // of the file.
718
+ req->result = Slice(req->scratch, req_wrap->finished_len);
719
+ req->status = IOStatus::OK();
720
+ } else {
721
+ Slice tmp_slice;
722
+ req->status =
723
+ Read(req->offset + req_wrap->finished_len,
724
+ req->len - req_wrap->finished_len, options, &tmp_slice,
725
+ req->scratch + req_wrap->finished_len, dbg);
726
+ req->result =
727
+ Slice(req->scratch, req_wrap->finished_len + tmp_slice.size());
728
+ }
729
+ } else if (bytes_read < req_wrap->iov.iov_len) {
730
+ assert(bytes_read > 0);
731
+ assert(bytes_read + req_wrap->finished_len < req->len);
732
+ req_wrap->finished_len += bytes_read;
733
+ incomplete_rq_list.push_back(req_wrap);
734
+ } else {
735
+ req->result = Slice(req->scratch, 0);
736
+ req->status = IOError("Req returned more bytes than requested",
737
+ filename_, cqe->res);
738
+ }
739
+ }
740
+ io_uring_cqe_seen(iu, cqe);
741
+ }
742
+ }
743
+ return IOStatus::OK();
744
+ #else
745
+ return FSRandomAccessFile::MultiRead(reqs, num_reqs, options, dbg);
746
+ #endif
747
+ }
748
+
749
+ IOStatus PosixRandomAccessFile::Prefetch(uint64_t offset, size_t n,
750
+ const IOOptions& /*opts*/,
751
+ IODebugContext* /*dbg*/) {
752
+ IOStatus s;
753
+ if (!use_direct_io()) {
754
+ ssize_t r = 0;
755
+ #ifdef OS_LINUX
756
+ r = readahead(fd_, offset, n);
757
+ #endif
758
+ #ifdef OS_MACOSX
759
+ radvisory advice;
760
+ advice.ra_offset = static_cast<off_t>(offset);
761
+ advice.ra_count = static_cast<int>(n);
762
+ r = fcntl(fd_, F_RDADVISE, &advice);
763
+ #endif
764
+ if (r == -1) {
765
+ s = IOError("While prefetching offset " + ToString(offset) + " len " +
766
+ ToString(n),
767
+ filename_, errno);
768
+ }
769
+ }
770
+ return s;
771
+ }
772
+
773
+ #if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_AIX)
774
+ size_t PosixRandomAccessFile::GetUniqueId(char* id, size_t max_size) const {
775
+ return PosixHelper::GetUniqueIdFromFile(fd_, id, max_size);
776
+ }
777
+ #endif
778
+
779
+ void PosixRandomAccessFile::Hint(AccessPattern pattern) {
780
+ if (use_direct_io()) {
781
+ return;
782
+ }
783
+ switch (pattern) {
784
+ case kNormal:
785
+ Fadvise(fd_, 0, 0, POSIX_FADV_NORMAL);
786
+ break;
787
+ case kRandom:
788
+ Fadvise(fd_, 0, 0, POSIX_FADV_RANDOM);
789
+ break;
790
+ case kSequential:
791
+ Fadvise(fd_, 0, 0, POSIX_FADV_SEQUENTIAL);
792
+ break;
793
+ case kWillNeed:
794
+ Fadvise(fd_, 0, 0, POSIX_FADV_WILLNEED);
795
+ break;
796
+ case kWontNeed:
797
+ Fadvise(fd_, 0, 0, POSIX_FADV_DONTNEED);
798
+ break;
799
+ default:
800
+ assert(false);
801
+ break;
802
+ }
803
+ }
804
+
805
+ IOStatus PosixRandomAccessFile::InvalidateCache(size_t offset, size_t length) {
806
+ if (use_direct_io()) {
807
+ return IOStatus::OK();
808
+ }
809
+ #ifndef OS_LINUX
810
+ (void)offset;
811
+ (void)length;
812
+ return IOStatus::OK();
813
+ #else
814
+ // free OS pages
815
+ int ret = Fadvise(fd_, offset, length, POSIX_FADV_DONTNEED);
816
+ if (ret == 0) {
817
+ return IOStatus::OK();
818
+ }
819
+ return IOError("While fadvise NotNeeded offset " + ToString(offset) +
820
+ " len " + ToString(length),
821
+ filename_, errno);
822
+ #endif
823
+ }
824
+
825
+ /*
826
+ * PosixMmapReadableFile
827
+ *
828
+ * mmap() based random-access
829
+ */
830
+ // base[0,length-1] contains the mmapped contents of the file.
831
+ PosixMmapReadableFile::PosixMmapReadableFile(const int fd,
832
+ const std::string& fname,
833
+ void* base, size_t length,
834
+ const EnvOptions& options)
835
+ : fd_(fd), filename_(fname), mmapped_region_(base), length_(length) {
836
+ #ifdef NDEBUG
837
+ (void)options;
838
+ #endif
839
+ fd_ = fd_ + 0; // suppress the warning for used variables
840
+ assert(options.use_mmap_reads);
841
+ assert(!options.use_direct_reads);
842
+ }
843
+
844
+ PosixMmapReadableFile::~PosixMmapReadableFile() {
845
+ int ret = munmap(mmapped_region_, length_);
846
+ if (ret != 0) {
847
+ fprintf(stdout, "failed to munmap %p length %" ROCKSDB_PRIszt " \n",
848
+ mmapped_region_, length_);
849
+ }
850
+ close(fd_);
851
+ }
852
+
853
+ IOStatus PosixMmapReadableFile::Read(uint64_t offset, size_t n,
854
+ const IOOptions& /*opts*/, Slice* result,
855
+ char* /*scratch*/,
856
+ IODebugContext* /*dbg*/) const {
857
+ IOStatus s;
858
+ if (offset > length_) {
859
+ *result = Slice();
860
+ return IOError("While mmap read offset " + ToString(offset) +
861
+ " larger than file length " + ToString(length_),
862
+ filename_, EINVAL);
863
+ } else if (offset + n > length_) {
864
+ n = static_cast<size_t>(length_ - offset);
865
+ }
866
+ *result = Slice(reinterpret_cast<char*>(mmapped_region_) + offset, n);
867
+ return s;
868
+ }
869
+
870
+ IOStatus PosixMmapReadableFile::InvalidateCache(size_t offset, size_t length) {
871
+ #ifndef OS_LINUX
872
+ (void)offset;
873
+ (void)length;
874
+ return IOStatus::OK();
875
+ #else
876
+ // free OS pages
877
+ int ret = Fadvise(fd_, offset, length, POSIX_FADV_DONTNEED);
878
+ if (ret == 0) {
879
+ return IOStatus::OK();
880
+ }
881
+ return IOError("While fadvise not needed. Offset " + ToString(offset) +
882
+ " len" + ToString(length),
883
+ filename_, errno);
884
+ #endif
885
+ }
886
+
887
+ /*
888
+ * PosixMmapFile
889
+ *
890
+ * We preallocate up to an extra megabyte and use memcpy to append new
891
+ * data to the file. This is safe since we either properly close the
892
+ * file before reading from it, or for log files, the reading code
893
+ * knows enough to skip zero suffixes.
894
+ */
895
+ IOStatus PosixMmapFile::UnmapCurrentRegion() {
896
+ TEST_KILL_RANDOM("PosixMmapFile::UnmapCurrentRegion:0", rocksdb_kill_odds);
897
+ if (base_ != nullptr) {
898
+ int munmap_status = munmap(base_, limit_ - base_);
899
+ if (munmap_status != 0) {
900
+ return IOError("While munmap", filename_, munmap_status);
901
+ }
902
+ file_offset_ += limit_ - base_;
903
+ base_ = nullptr;
904
+ limit_ = nullptr;
905
+ last_sync_ = nullptr;
906
+ dst_ = nullptr;
907
+
908
+ // Increase the amount we map the next time, but capped at 1MB
909
+ if (map_size_ < (1 << 20)) {
910
+ map_size_ *= 2;
911
+ }
912
+ }
913
+ return IOStatus::OK();
914
+ }
915
+
916
+ IOStatus PosixMmapFile::MapNewRegion() {
917
+ #ifdef ROCKSDB_FALLOCATE_PRESENT
918
+ assert(base_ == nullptr);
919
+ TEST_KILL_RANDOM("PosixMmapFile::UnmapCurrentRegion:0", rocksdb_kill_odds);
920
+ // we can't fallocate with FALLOC_FL_KEEP_SIZE here
921
+ if (allow_fallocate_) {
922
+ IOSTATS_TIMER_GUARD(allocate_nanos);
923
+ int alloc_status = fallocate(fd_, 0, file_offset_, map_size_);
924
+ if (alloc_status != 0) {
925
+ // fallback to posix_fallocate
926
+ alloc_status = posix_fallocate(fd_, file_offset_, map_size_);
927
+ }
928
+ if (alloc_status != 0) {
929
+ return IOStatus::IOError("Error allocating space to file : " + filename_ +
930
+ "Error : " + strerror(alloc_status));
931
+ }
932
+ }
933
+
934
+ TEST_KILL_RANDOM("PosixMmapFile::Append:1", rocksdb_kill_odds);
935
+ void* ptr = mmap(nullptr, map_size_, PROT_READ | PROT_WRITE, MAP_SHARED, fd_,
936
+ file_offset_);
937
+ if (ptr == MAP_FAILED) {
938
+ return IOStatus::IOError("MMap failed on " + filename_);
939
+ }
940
+ TEST_KILL_RANDOM("PosixMmapFile::Append:2", rocksdb_kill_odds);
941
+
942
+ base_ = reinterpret_cast<char*>(ptr);
943
+ limit_ = base_ + map_size_;
944
+ dst_ = base_;
945
+ last_sync_ = base_;
946
+ return IOStatus::OK();
947
+ #else
948
+ return IOStatus::NotSupported("This platform doesn't support fallocate()");
949
+ #endif
950
+ }
951
+
952
+ IOStatus PosixMmapFile::Msync() {
953
+ if (dst_ == last_sync_) {
954
+ return IOStatus::OK();
955
+ }
956
+ // Find the beginnings of the pages that contain the first and last
957
+ // bytes to be synced.
958
+ size_t p1 = TruncateToPageBoundary(last_sync_ - base_);
959
+ size_t p2 = TruncateToPageBoundary(dst_ - base_ - 1);
960
+ last_sync_ = dst_;
961
+ TEST_KILL_RANDOM("PosixMmapFile::Msync:0", rocksdb_kill_odds);
962
+ if (msync(base_ + p1, p2 - p1 + page_size_, MS_SYNC) < 0) {
963
+ return IOError("While msync", filename_, errno);
964
+ }
965
+ return IOStatus::OK();
966
+ }
967
+
968
+ PosixMmapFile::PosixMmapFile(const std::string& fname, int fd, size_t page_size,
969
+ const EnvOptions& options)
970
+ : filename_(fname),
971
+ fd_(fd),
972
+ page_size_(page_size),
973
+ map_size_(Roundup(65536, page_size)),
974
+ base_(nullptr),
975
+ limit_(nullptr),
976
+ dst_(nullptr),
977
+ last_sync_(nullptr),
978
+ file_offset_(0) {
979
+ #ifdef ROCKSDB_FALLOCATE_PRESENT
980
+ allow_fallocate_ = options.allow_fallocate;
981
+ fallocate_with_keep_size_ = options.fallocate_with_keep_size;
982
+ #else
983
+ (void)options;
984
+ #endif
985
+ assert((page_size & (page_size - 1)) == 0);
986
+ assert(options.use_mmap_writes);
987
+ assert(!options.use_direct_writes);
988
+ }
989
+
990
+ PosixMmapFile::~PosixMmapFile() {
991
+ if (fd_ >= 0) {
992
+ IOStatus s = PosixMmapFile::Close(IOOptions(), nullptr);
993
+ s.PermitUncheckedError();
994
+ }
995
+ }
996
+
997
+ IOStatus PosixMmapFile::Append(const Slice& data, const IOOptions& /*opts*/,
998
+ IODebugContext* /*dbg*/) {
999
+ const char* src = data.data();
1000
+ size_t left = data.size();
1001
+ while (left > 0) {
1002
+ assert(base_ <= dst_);
1003
+ assert(dst_ <= limit_);
1004
+ size_t avail = limit_ - dst_;
1005
+ if (avail == 0) {
1006
+ IOStatus s = UnmapCurrentRegion();
1007
+ if (!s.ok()) {
1008
+ return s;
1009
+ }
1010
+ s = MapNewRegion();
1011
+ if (!s.ok()) {
1012
+ return s;
1013
+ }
1014
+ TEST_KILL_RANDOM("PosixMmapFile::Append:0", rocksdb_kill_odds);
1015
+ }
1016
+
1017
+ size_t n = (left <= avail) ? left : avail;
1018
+ assert(dst_);
1019
+ memcpy(dst_, src, n);
1020
+ dst_ += n;
1021
+ src += n;
1022
+ left -= n;
1023
+ }
1024
+ return IOStatus::OK();
1025
+ }
1026
+
1027
+ IOStatus PosixMmapFile::Close(const IOOptions& /*opts*/,
1028
+ IODebugContext* /*dbg*/) {
1029
+ IOStatus s;
1030
+ size_t unused = limit_ - dst_;
1031
+
1032
+ s = UnmapCurrentRegion();
1033
+ if (!s.ok()) {
1034
+ s = IOError("While closing mmapped file", filename_, errno);
1035
+ } else if (unused > 0) {
1036
+ // Trim the extra space at the end of the file
1037
+ if (ftruncate(fd_, file_offset_ - unused) < 0) {
1038
+ s = IOError("While ftruncating mmaped file", filename_, errno);
1039
+ }
1040
+ }
1041
+
1042
+ if (close(fd_) < 0) {
1043
+ if (s.ok()) {
1044
+ s = IOError("While closing mmapped file", filename_, errno);
1045
+ }
1046
+ }
1047
+
1048
+ fd_ = -1;
1049
+ base_ = nullptr;
1050
+ limit_ = nullptr;
1051
+ return s;
1052
+ }
1053
+
1054
+ IOStatus PosixMmapFile::Flush(const IOOptions& /*opts*/,
1055
+ IODebugContext* /*dbg*/) {
1056
+ return IOStatus::OK();
1057
+ }
1058
+
1059
+ IOStatus PosixMmapFile::Sync(const IOOptions& /*opts*/,
1060
+ IODebugContext* /*dbg*/) {
1061
+ if (fdatasync(fd_) < 0) {
1062
+ return IOError("While fdatasync mmapped file", filename_, errno);
1063
+ }
1064
+
1065
+ return Msync();
1066
+ }
1067
+
1068
+ /**
1069
+ * Flush data as well as metadata to stable storage.
1070
+ */
1071
+ IOStatus PosixMmapFile::Fsync(const IOOptions& /*opts*/,
1072
+ IODebugContext* /*dbg*/) {
1073
+ if (fsync(fd_) < 0) {
1074
+ return IOError("While fsync mmaped file", filename_, errno);
1075
+ }
1076
+
1077
+ return Msync();
1078
+ }
1079
+
1080
+ /**
1081
+ * Get the size of valid data in the file. This will not match the
1082
+ * size that is returned from the filesystem because we use mmap
1083
+ * to extend file by map_size every time.
1084
+ */
1085
+ uint64_t PosixMmapFile::GetFileSize(const IOOptions& /*opts*/,
1086
+ IODebugContext* /*dbg*/) {
1087
+ size_t used = dst_ - base_;
1088
+ return file_offset_ + used;
1089
+ }
1090
+
1091
+ IOStatus PosixMmapFile::InvalidateCache(size_t offset, size_t length) {
1092
+ #ifndef OS_LINUX
1093
+ (void)offset;
1094
+ (void)length;
1095
+ return IOStatus::OK();
1096
+ #else
1097
+ // free OS pages
1098
+ int ret = Fadvise(fd_, offset, length, POSIX_FADV_DONTNEED);
1099
+ if (ret == 0) {
1100
+ return IOStatus::OK();
1101
+ }
1102
+ return IOError("While fadvise NotNeeded mmapped file", filename_, errno);
1103
+ #endif
1104
+ }
1105
+
1106
+ #ifdef ROCKSDB_FALLOCATE_PRESENT
1107
+ IOStatus PosixMmapFile::Allocate(uint64_t offset, uint64_t len,
1108
+ const IOOptions& /*opts*/,
1109
+ IODebugContext* /*dbg*/) {
1110
+ assert(offset <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1111
+ assert(len <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1112
+ TEST_KILL_RANDOM("PosixMmapFile::Allocate:0", rocksdb_kill_odds);
1113
+ int alloc_status = 0;
1114
+ if (allow_fallocate_) {
1115
+ alloc_status =
1116
+ fallocate(fd_, fallocate_with_keep_size_ ? FALLOC_FL_KEEP_SIZE : 0,
1117
+ static_cast<off_t>(offset), static_cast<off_t>(len));
1118
+ }
1119
+ if (alloc_status == 0) {
1120
+ return IOStatus::OK();
1121
+ } else {
1122
+ return IOError(
1123
+ "While fallocate offset " + ToString(offset) + " len " + ToString(len),
1124
+ filename_, errno);
1125
+ }
1126
+ }
1127
+ #endif
1128
+
1129
+ /*
1130
+ * PosixWritableFile
1131
+ *
1132
+ * Use posix write to write data to a file.
1133
+ */
1134
+ PosixWritableFile::PosixWritableFile(const std::string& fname, int fd,
1135
+ size_t logical_block_size,
1136
+ const EnvOptions& options)
1137
+ : FSWritableFile(options),
1138
+ filename_(fname),
1139
+ use_direct_io_(options.use_direct_writes),
1140
+ fd_(fd),
1141
+ filesize_(0),
1142
+ logical_sector_size_(logical_block_size) {
1143
+ #ifdef ROCKSDB_FALLOCATE_PRESENT
1144
+ allow_fallocate_ = options.allow_fallocate;
1145
+ fallocate_with_keep_size_ = options.fallocate_with_keep_size;
1146
+ #endif
1147
+ #ifdef ROCKSDB_RANGESYNC_PRESENT
1148
+ sync_file_range_supported_ = IsSyncFileRangeSupported(fd_);
1149
+ #endif // ROCKSDB_RANGESYNC_PRESENT
1150
+ assert(!options.use_mmap_writes);
1151
+ }
1152
+
1153
+ PosixWritableFile::~PosixWritableFile() {
1154
+ if (fd_ >= 0) {
1155
+ IOStatus s = PosixWritableFile::Close(IOOptions(), nullptr);
1156
+ s.PermitUncheckedError();
1157
+ }
1158
+ }
1159
+
1160
+ IOStatus PosixWritableFile::Append(const Slice& data, const IOOptions& /*opts*/,
1161
+ IODebugContext* /*dbg*/) {
1162
+ if (use_direct_io()) {
1163
+ assert(IsSectorAligned(data.size(), GetRequiredBufferAlignment()));
1164
+ assert(IsSectorAligned(data.data(), GetRequiredBufferAlignment()));
1165
+ }
1166
+ const char* src = data.data();
1167
+ size_t nbytes = data.size();
1168
+
1169
+ if (!PosixWrite(fd_, src, nbytes)) {
1170
+ return IOError("While appending to file", filename_, errno);
1171
+ }
1172
+
1173
+ filesize_ += nbytes;
1174
+ return IOStatus::OK();
1175
+ }
1176
+
1177
+ IOStatus PosixWritableFile::PositionedAppend(const Slice& data, uint64_t offset,
1178
+ const IOOptions& /*opts*/,
1179
+ IODebugContext* /*dbg*/) {
1180
+ if (use_direct_io()) {
1181
+ assert(IsSectorAligned(offset, GetRequiredBufferAlignment()));
1182
+ assert(IsSectorAligned(data.size(), GetRequiredBufferAlignment()));
1183
+ assert(IsSectorAligned(data.data(), GetRequiredBufferAlignment()));
1184
+ }
1185
+ assert(offset <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1186
+ const char* src = data.data();
1187
+ size_t nbytes = data.size();
1188
+ if (!PosixPositionedWrite(fd_, src, nbytes, static_cast<off_t>(offset))) {
1189
+ return IOError("While pwrite to file at offset " + ToString(offset),
1190
+ filename_, errno);
1191
+ }
1192
+ filesize_ = offset + nbytes;
1193
+ return IOStatus::OK();
1194
+ }
1195
+
1196
+ IOStatus PosixWritableFile::Truncate(uint64_t size, const IOOptions& /*opts*/,
1197
+ IODebugContext* /*dbg*/) {
1198
+ IOStatus s;
1199
+ int r = ftruncate(fd_, size);
1200
+ if (r < 0) {
1201
+ s = IOError("While ftruncate file to size " + ToString(size), filename_,
1202
+ errno);
1203
+ } else {
1204
+ filesize_ = size;
1205
+ }
1206
+ return s;
1207
+ }
1208
+
1209
+ IOStatus PosixWritableFile::Close(const IOOptions& /*opts*/,
1210
+ IODebugContext* /*dbg*/) {
1211
+ IOStatus s;
1212
+
1213
+ size_t block_size;
1214
+ size_t last_allocated_block;
1215
+ GetPreallocationStatus(&block_size, &last_allocated_block);
1216
+ if (last_allocated_block > 0) {
1217
+ // trim the extra space preallocated at the end of the file
1218
+ // NOTE(ljin): we probably don't want to surface failure as an IOError,
1219
+ // but it will be nice to log these errors.
1220
+ int dummy __attribute__((__unused__));
1221
+ dummy = ftruncate(fd_, filesize_);
1222
+ #if defined(ROCKSDB_FALLOCATE_PRESENT) && defined(FALLOC_FL_PUNCH_HOLE) && \
1223
+ !defined(TRAVIS)
1224
+ // in some file systems, ftruncate only trims trailing space if the
1225
+ // new file size is smaller than the current size. Calling fallocate
1226
+ // with FALLOC_FL_PUNCH_HOLE flag to explicitly release these unused
1227
+ // blocks. FALLOC_FL_PUNCH_HOLE is supported on at least the following
1228
+ // filesystems:
1229
+ // XFS (since Linux 2.6.38)
1230
+ // ext4 (since Linux 3.0)
1231
+ // Btrfs (since Linux 3.7)
1232
+ // tmpfs (since Linux 3.5)
1233
+ // We ignore error since failure of this operation does not affect
1234
+ // correctness.
1235
+ // TRAVIS - this code does not work on TRAVIS filesystems.
1236
+ // the FALLOC_FL_KEEP_SIZE option is expected to not change the size
1237
+ // of the file, but it does. Simple strace report will show that.
1238
+ // While we work with Travis-CI team to figure out if this is a
1239
+ // quirk of Docker/AUFS, we will comment this out.
1240
+ struct stat file_stats;
1241
+ int result = fstat(fd_, &file_stats);
1242
+ // After ftruncate, we check whether ftruncate has the correct behavior.
1243
+ // If not, we should hack it with FALLOC_FL_PUNCH_HOLE
1244
+ if (result == 0 &&
1245
+ (file_stats.st_size + file_stats.st_blksize - 1) /
1246
+ file_stats.st_blksize !=
1247
+ file_stats.st_blocks / (file_stats.st_blksize / 512)) {
1248
+ IOSTATS_TIMER_GUARD(allocate_nanos);
1249
+ if (allow_fallocate_) {
1250
+ fallocate(fd_, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, filesize_,
1251
+ block_size * last_allocated_block - filesize_);
1252
+ }
1253
+ }
1254
+ #endif
1255
+ }
1256
+
1257
+ if (close(fd_) < 0) {
1258
+ s = IOError("While closing file after writing", filename_, errno);
1259
+ }
1260
+ fd_ = -1;
1261
+ return s;
1262
+ }
1263
+
1264
+ // write out the cached data to the OS cache
1265
+ IOStatus PosixWritableFile::Flush(const IOOptions& /*opts*/,
1266
+ IODebugContext* /*dbg*/) {
1267
+ return IOStatus::OK();
1268
+ }
1269
+
1270
+ IOStatus PosixWritableFile::Sync(const IOOptions& /*opts*/,
1271
+ IODebugContext* /*dbg*/) {
1272
+ if (fdatasync(fd_) < 0) {
1273
+ return IOError("While fdatasync", filename_, errno);
1274
+ }
1275
+ return IOStatus::OK();
1276
+ }
1277
+
1278
+ IOStatus PosixWritableFile::Fsync(const IOOptions& /*opts*/,
1279
+ IODebugContext* /*dbg*/) {
1280
+ if (fsync(fd_) < 0) {
1281
+ return IOError("While fsync", filename_, errno);
1282
+ }
1283
+ return IOStatus::OK();
1284
+ }
1285
+
1286
+ bool PosixWritableFile::IsSyncThreadSafe() const { return true; }
1287
+
1288
+ uint64_t PosixWritableFile::GetFileSize(const IOOptions& /*opts*/,
1289
+ IODebugContext* /*dbg*/) {
1290
+ return filesize_;
1291
+ }
1292
+
1293
+ void PosixWritableFile::SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) {
1294
+ #ifdef OS_LINUX
1295
+ // Suppress Valgrind "Unimplemented functionality" error.
1296
+ #ifndef ROCKSDB_VALGRIND_RUN
1297
+ if (hint == write_hint_) {
1298
+ return;
1299
+ }
1300
+ if (fcntl(fd_, F_SET_RW_HINT, &hint) == 0) {
1301
+ write_hint_ = hint;
1302
+ }
1303
+ #else
1304
+ (void)hint;
1305
+ #endif // ROCKSDB_VALGRIND_RUN
1306
+ #else
1307
+ (void)hint;
1308
+ #endif // OS_LINUX
1309
+ }
1310
+
1311
+ IOStatus PosixWritableFile::InvalidateCache(size_t offset, size_t length) {
1312
+ if (use_direct_io()) {
1313
+ return IOStatus::OK();
1314
+ }
1315
+ #ifndef OS_LINUX
1316
+ (void)offset;
1317
+ (void)length;
1318
+ return IOStatus::OK();
1319
+ #else
1320
+ // free OS pages
1321
+ int ret = Fadvise(fd_, offset, length, POSIX_FADV_DONTNEED);
1322
+ if (ret == 0) {
1323
+ return IOStatus::OK();
1324
+ }
1325
+ return IOError("While fadvise NotNeeded", filename_, errno);
1326
+ #endif
1327
+ }
1328
+
1329
+ #ifdef ROCKSDB_FALLOCATE_PRESENT
1330
+ IOStatus PosixWritableFile::Allocate(uint64_t offset, uint64_t len,
1331
+ const IOOptions& /*opts*/,
1332
+ IODebugContext* /*dbg*/) {
1333
+ assert(offset <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1334
+ assert(len <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1335
+ TEST_KILL_RANDOM("PosixWritableFile::Allocate:0", rocksdb_kill_odds);
1336
+ IOSTATS_TIMER_GUARD(allocate_nanos);
1337
+ int alloc_status = 0;
1338
+ if (allow_fallocate_) {
1339
+ alloc_status =
1340
+ fallocate(fd_, fallocate_with_keep_size_ ? FALLOC_FL_KEEP_SIZE : 0,
1341
+ static_cast<off_t>(offset), static_cast<off_t>(len));
1342
+ }
1343
+ if (alloc_status == 0) {
1344
+ return IOStatus::OK();
1345
+ } else {
1346
+ return IOError(
1347
+ "While fallocate offset " + ToString(offset) + " len " + ToString(len),
1348
+ filename_, errno);
1349
+ }
1350
+ }
1351
+ #endif
1352
+
1353
+ IOStatus PosixWritableFile::RangeSync(uint64_t offset, uint64_t nbytes,
1354
+ const IOOptions& opts,
1355
+ IODebugContext* dbg) {
1356
+ #ifdef ROCKSDB_RANGESYNC_PRESENT
1357
+ assert(offset <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1358
+ assert(nbytes <= static_cast<uint64_t>(std::numeric_limits<off_t>::max()));
1359
+ if (sync_file_range_supported_) {
1360
+ int ret;
1361
+ if (strict_bytes_per_sync_) {
1362
+ // Specifying `SYNC_FILE_RANGE_WAIT_BEFORE` together with an offset/length
1363
+ // that spans all bytes written so far tells `sync_file_range` to wait for
1364
+ // any outstanding writeback requests to finish before issuing a new one.
1365
+ ret =
1366
+ sync_file_range(fd_, 0, static_cast<off_t>(offset + nbytes),
1367
+ SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE);
1368
+ } else {
1369
+ ret = sync_file_range(fd_, static_cast<off_t>(offset),
1370
+ static_cast<off_t>(nbytes), SYNC_FILE_RANGE_WRITE);
1371
+ }
1372
+ if (ret != 0) {
1373
+ return IOError("While sync_file_range returned " + ToString(ret),
1374
+ filename_, errno);
1375
+ }
1376
+ return IOStatus::OK();
1377
+ }
1378
+ #endif // ROCKSDB_RANGESYNC_PRESENT
1379
+ return FSWritableFile::RangeSync(offset, nbytes, opts, dbg);
1380
+ }
1381
+
1382
+ #ifdef OS_LINUX
1383
+ size_t PosixWritableFile::GetUniqueId(char* id, size_t max_size) const {
1384
+ return PosixHelper::GetUniqueIdFromFile(fd_, id, max_size);
1385
+ }
1386
+ #endif
1387
+
1388
+ /*
1389
+ * PosixRandomRWFile
1390
+ */
1391
+
1392
+ PosixRandomRWFile::PosixRandomRWFile(const std::string& fname, int fd,
1393
+ const EnvOptions& /*options*/)
1394
+ : filename_(fname), fd_(fd) {}
1395
+
1396
+ PosixRandomRWFile::~PosixRandomRWFile() {
1397
+ if (fd_ >= 0) {
1398
+ IOStatus s = Close(IOOptions(), nullptr);
1399
+ s.PermitUncheckedError();
1400
+ }
1401
+ }
1402
+
1403
+ IOStatus PosixRandomRWFile::Write(uint64_t offset, const Slice& data,
1404
+ const IOOptions& /*opts*/,
1405
+ IODebugContext* /*dbg*/) {
1406
+ const char* src = data.data();
1407
+ size_t nbytes = data.size();
1408
+ if (!PosixPositionedWrite(fd_, src, nbytes, static_cast<off_t>(offset))) {
1409
+ return IOError(
1410
+ "While write random read/write file at offset " + ToString(offset),
1411
+ filename_, errno);
1412
+ }
1413
+
1414
+ return IOStatus::OK();
1415
+ }
1416
+
1417
+ IOStatus PosixRandomRWFile::Read(uint64_t offset, size_t n,
1418
+ const IOOptions& /*opts*/, Slice* result,
1419
+ char* scratch, IODebugContext* /*dbg*/) const {
1420
+ size_t left = n;
1421
+ char* ptr = scratch;
1422
+ while (left > 0) {
1423
+ ssize_t done = pread(fd_, ptr, left, offset);
1424
+ if (done < 0) {
1425
+ // error while reading from file
1426
+ if (errno == EINTR) {
1427
+ // read was interrupted, try again.
1428
+ continue;
1429
+ }
1430
+ return IOError("While reading random read/write file offset " +
1431
+ ToString(offset) + " len " + ToString(n),
1432
+ filename_, errno);
1433
+ } else if (done == 0) {
1434
+ // Nothing more to read
1435
+ break;
1436
+ }
1437
+
1438
+ // Read `done` bytes
1439
+ ptr += done;
1440
+ offset += done;
1441
+ left -= done;
1442
+ }
1443
+
1444
+ *result = Slice(scratch, n - left);
1445
+ return IOStatus::OK();
1446
+ }
1447
+
1448
+ IOStatus PosixRandomRWFile::Flush(const IOOptions& /*opts*/,
1449
+ IODebugContext* /*dbg*/) {
1450
+ return IOStatus::OK();
1451
+ }
1452
+
1453
+ IOStatus PosixRandomRWFile::Sync(const IOOptions& /*opts*/,
1454
+ IODebugContext* /*dbg*/) {
1455
+ if (fdatasync(fd_) < 0) {
1456
+ return IOError("While fdatasync random read/write file", filename_, errno);
1457
+ }
1458
+ return IOStatus::OK();
1459
+ }
1460
+
1461
+ IOStatus PosixRandomRWFile::Fsync(const IOOptions& /*opts*/,
1462
+ IODebugContext* /*dbg*/) {
1463
+ if (fsync(fd_) < 0) {
1464
+ return IOError("While fsync random read/write file", filename_, errno);
1465
+ }
1466
+ return IOStatus::OK();
1467
+ }
1468
+
1469
+ IOStatus PosixRandomRWFile::Close(const IOOptions& /*opts*/,
1470
+ IODebugContext* /*dbg*/) {
1471
+ if (close(fd_) < 0) {
1472
+ return IOError("While close random read/write file", filename_, errno);
1473
+ }
1474
+ fd_ = -1;
1475
+ return IOStatus::OK();
1476
+ }
1477
+
1478
+ PosixMemoryMappedFileBuffer::~PosixMemoryMappedFileBuffer() {
1479
+ // TODO should have error handling though not much we can do...
1480
+ munmap(this->base_, length_);
1481
+ }
1482
+
1483
+ /*
1484
+ * PosixDirectory
1485
+ */
1486
+
1487
+ PosixDirectory::~PosixDirectory() { close(fd_); }
1488
+
1489
+ IOStatus PosixDirectory::Fsync(const IOOptions& /*opts*/,
1490
+ IODebugContext* /*dbg*/) {
1491
+ #ifndef OS_AIX
1492
+ if (fsync(fd_) == -1) {
1493
+ return IOError("While fsync", "a directory", errno);
1494
+ }
1495
+ #endif
1496
+ return IOStatus::OK();
1497
+ }
1498
+ } // namespace ROCKSDB_NAMESPACE
1499
+ #endif