@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.1

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 (490) hide show
  1. package/BUILDING.md +12 -4
  2. package/binding.cc +421 -40
  3. package/deps/rocksdb/build_version.cc +4 -10
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
  5. package/deps/rocksdb/rocksdb/Makefile +73 -91
  6. package/deps/rocksdb/rocksdb/TARGETS +27 -2
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  8. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  12. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  13. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  22. package/deps/rocksdb/rocksdb/common.mk +30 -0
  23. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  24. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  25. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  26. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  27. package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
  28. package/deps/rocksdb/rocksdb/db/c.cc +71 -0
  29. package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
  46. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  48. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  49. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  50. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
  51. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  52. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  53. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  54. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  55. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  56. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
  67. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  68. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  69. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  70. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  71. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  73. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  76. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  77. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
  78. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
  79. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  80. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  81. package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
  82. package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
  83. package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
  84. package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
  85. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  87. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
  88. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  89. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  90. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  91. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  92. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  93. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  95. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
  96. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
  97. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
  98. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  99. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  100. package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
  101. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  102. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  103. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  104. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
  105. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
  106. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  107. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  108. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  109. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  110. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  111. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  112. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  113. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  114. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  115. package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
  116. package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
  117. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  118. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
  119. package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
  120. package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
  122. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
  124. package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
  125. package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
  128. package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
  131. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  132. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  133. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  135. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  136. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  147. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  148. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  150. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  152. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  153. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  154. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  155. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  156. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  157. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  158. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  159. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  160. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  161. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
  162. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
  163. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  164. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
  165. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  166. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  167. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
  168. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
  169. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
  170. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
  171. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  172. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  173. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  174. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  175. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  176. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  178. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  179. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
  181. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
  183. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  184. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  185. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  187. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
  191. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  192. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  193. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  194. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  195. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  196. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  197. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  198. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  199. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  200. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  201. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  202. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  203. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  204. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  205. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
  206. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  207. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  208. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  209. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  212. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  213. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  214. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  215. package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
  216. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  217. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  218. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  219. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  220. package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
  221. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  222. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  223. package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
  224. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  225. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
  226. package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
  227. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  228. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  229. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  230. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  231. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  232. package/deps/rocksdb/rocksdb/src.mk +6 -1
  233. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  234. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  236. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  237. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  239. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
  240. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
  241. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
  246. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
  247. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
  249. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
  250. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
  251. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  252. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
  253. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
  254. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  255. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  256. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  258. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
  259. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  260. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
  261. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  262. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
  263. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
  264. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
  265. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  266. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  267. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  268. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  269. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  270. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  271. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
  272. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  273. package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
  274. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  275. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  276. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  277. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
  278. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
  279. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  280. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  281. package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
  282. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  283. package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
  284. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
  285. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
  286. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  287. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  288. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  289. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  290. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  291. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
  292. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  293. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  294. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  295. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  296. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  297. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  298. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
  299. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  300. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  301. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
  302. package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
  303. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  304. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  305. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  306. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  307. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  308. package/deps/rocksdb/rocksdb/util/compression.h +56 -7
  309. package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
  310. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  311. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  312. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  313. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  314. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  315. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  316. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  317. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  318. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  319. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
  320. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  321. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  322. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  323. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  324. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  325. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  326. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  327. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  328. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  329. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  331. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  332. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  333. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  334. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  335. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  336. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  337. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  338. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  339. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  340. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  341. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  342. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  343. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  344. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  345. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  346. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  351. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  352. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  353. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  356. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  357. package/deps/rocksdb/rocksdb.gyp +20 -13
  358. package/index.js +187 -3
  359. package/iterator.js +1 -0
  360. package/package-lock.json +23687 -0
  361. package/package.json +2 -30
  362. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  363. package/snapshot.js +23 -0
  364. package/deps/liburing/liburing/README +0 -46
  365. package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
  366. package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
  367. package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
  368. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
  369. package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
  370. package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
  371. package/deps/liburing/liburing/test/Makefile +0 -312
  372. package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
  373. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
  374. package/deps/liburing/liburing/test/accept-link.c +0 -251
  375. package/deps/liburing/liburing/test/accept-reuse.c +0 -164
  376. package/deps/liburing/liburing/test/accept-test.c +0 -79
  377. package/deps/liburing/liburing/test/accept.c +0 -476
  378. package/deps/liburing/liburing/test/across-fork.c +0 -283
  379. package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
  380. package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
  381. package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
  382. package/deps/liburing/liburing/test/close-opath.c +0 -122
  383. package/deps/liburing/liburing/test/config +0 -10
  384. package/deps/liburing/liburing/test/connect.c +0 -398
  385. package/deps/liburing/liburing/test/cq-full.c +0 -96
  386. package/deps/liburing/liburing/test/cq-overflow.c +0 -294
  387. package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
  388. package/deps/liburing/liburing/test/cq-ready.c +0 -94
  389. package/deps/liburing/liburing/test/cq-size.c +0 -58
  390. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
  391. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
  392. package/deps/liburing/liburing/test/defer.c +0 -307
  393. package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
  394. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
  395. package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
  396. package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
  397. package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
  398. package/deps/liburing/liburing/test/eventfd.c +0 -112
  399. package/deps/liburing/liburing/test/fadvise.c +0 -202
  400. package/deps/liburing/liburing/test/fallocate.c +0 -249
  401. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
  402. package/deps/liburing/liburing/test/file-register.c +0 -843
  403. package/deps/liburing/liburing/test/file-update.c +0 -173
  404. package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
  405. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
  406. package/deps/liburing/liburing/test/fixed-link.c +0 -90
  407. package/deps/liburing/liburing/test/fsync.c +0 -224
  408. package/deps/liburing/liburing/test/hardlink.c +0 -136
  409. package/deps/liburing/liburing/test/helpers.c +0 -135
  410. package/deps/liburing/liburing/test/helpers.h +0 -67
  411. package/deps/liburing/liburing/test/io-cancel.c +0 -537
  412. package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
  413. package/deps/liburing/liburing/test/io_uring_register.c +0 -664
  414. package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
  415. package/deps/liburing/liburing/test/iopoll.c +0 -366
  416. package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
  417. package/deps/liburing/liburing/test/lfs-openat.c +0 -273
  418. package/deps/liburing/liburing/test/link-timeout.c +0 -1107
  419. package/deps/liburing/liburing/test/link.c +0 -496
  420. package/deps/liburing/liburing/test/link_drain.c +0 -229
  421. package/deps/liburing/liburing/test/madvise.c +0 -195
  422. package/deps/liburing/liburing/test/mkdir.c +0 -108
  423. package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
  424. package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
  425. package/deps/liburing/liburing/test/nop.c +0 -115
  426. package/deps/liburing/liburing/test/open-close.c +0 -146
  427. package/deps/liburing/liburing/test/openat2.c +0 -240
  428. package/deps/liburing/liburing/test/personality.c +0 -204
  429. package/deps/liburing/liburing/test/pipe-eof.c +0 -81
  430. package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
  431. package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
  432. package/deps/liburing/liburing/test/poll-cancel.c +0 -135
  433. package/deps/liburing/liburing/test/poll-link.c +0 -227
  434. package/deps/liburing/liburing/test/poll-many.c +0 -208
  435. package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
  436. package/deps/liburing/liburing/test/poll-ring.c +0 -48
  437. package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
  438. package/deps/liburing/liburing/test/poll.c +0 -109
  439. package/deps/liburing/liburing/test/probe.c +0 -137
  440. package/deps/liburing/liburing/test/read-write.c +0 -876
  441. package/deps/liburing/liburing/test/register-restrictions.c +0 -633
  442. package/deps/liburing/liburing/test/rename.c +0 -134
  443. package/deps/liburing/liburing/test/ring-leak.c +0 -173
  444. package/deps/liburing/liburing/test/ring-leak2.c +0 -249
  445. package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
  446. package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
  447. package/deps/liburing/liburing/test/runtests.sh +0 -170
  448. package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
  449. package/deps/liburing/liburing/test/self.c +0 -91
  450. package/deps/liburing/liburing/test/send_recv.c +0 -291
  451. package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
  452. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
  453. package/deps/liburing/liburing/test/shared-wq.c +0 -84
  454. package/deps/liburing/liburing/test/short-read.c +0 -75
  455. package/deps/liburing/liburing/test/shutdown.c +0 -163
  456. package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
  457. package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
  458. package/deps/liburing/liburing/test/socket-rw.c +0 -147
  459. package/deps/liburing/liburing/test/splice.c +0 -511
  460. package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
  461. package/deps/liburing/liburing/test/sq-full.c +0 -45
  462. package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
  463. package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
  464. package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
  465. package/deps/liburing/liburing/test/sq-space_left.c +0 -159
  466. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
  467. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
  468. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
  469. package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
  470. package/deps/liburing/liburing/test/statx.c +0 -172
  471. package/deps/liburing/liburing/test/stdout.c +0 -232
  472. package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
  473. package/deps/liburing/liburing/test/submit-reuse.c +0 -239
  474. package/deps/liburing/liburing/test/symlink.c +0 -116
  475. package/deps/liburing/liburing/test/teardowns.c +0 -58
  476. package/deps/liburing/liburing/test/thread-exit.c +0 -131
  477. package/deps/liburing/liburing/test/timeout-new.c +0 -246
  478. package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
  479. package/deps/liburing/liburing/test/timeout.c +0 -1354
  480. package/deps/liburing/liburing/test/unlink.c +0 -111
  481. package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
  482. package/deps/rocksdb/rocksdb/README.md +0 -32
  483. package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
  484. package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
  485. package/deps/rocksdb/rocksdb/port/README +0 -10
  486. package/deps/rocksdb/rocksdb/python.mk +0 -9
  487. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
  488. package/prebuilds/darwin-x64/node.napi.node +0 -0
  489. package/prebuilds/linux-arm64/node.napi.node +0 -0
  490. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -1,159 +0,0 @@
1
- #include <fcntl.h>
2
- #include <signal.h>
3
- #include <stdint.h>
4
- #include <stdlib.h>
5
- #include <string.h>
6
- #include <sys/mman.h>
7
- #include <sys/syscall.h>
8
- #include <sys/wait.h>
9
- #include <time.h>
10
- #include <unistd.h>
11
- #include "liburing.h"
12
- #include "../src/syscall.h"
13
-
14
- static uint64_t current_time_ms(void)
15
- {
16
- struct timespec ts;
17
- if (clock_gettime(CLOCK_MONOTONIC, &ts))
18
- exit(1);
19
- return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
20
- }
21
-
22
- #define SIZEOF_IO_URING_SQE 64
23
- #define SIZEOF_IO_URING_CQE 16
24
- #define SQ_TAIL_OFFSET 64
25
- #define SQ_RING_MASK_OFFSET 256
26
- #define SQ_RING_ENTRIES_OFFSET 264
27
- #define CQ_RING_ENTRIES_OFFSET 268
28
- #define CQ_CQES_OFFSET 320
29
-
30
- #define IORING_OFF_SQES 0x10000000ULL
31
-
32
- #define sys_io_uring_setup 425
33
-
34
- static void kill_and_wait(int pid, int* status)
35
- {
36
- kill(-pid, SIGKILL);
37
- kill(pid, SIGKILL);
38
- while (waitpid(-1, status, __WALL) != pid) {
39
- }
40
- }
41
-
42
- #define WAIT_FLAGS __WALL
43
-
44
- uint64_t r[3] = {0xffffffffffffffff, 0x0, 0x0};
45
-
46
- static long syz_io_uring_setup(volatile long a0, volatile long a1,
47
- volatile long a2, volatile long a3, volatile long a4, volatile long
48
- a5)
49
- {
50
- uint32_t entries = (uint32_t)a0;
51
- struct io_uring_params* setup_params = (struct io_uring_params*)a1;
52
- void* vma1 = (void*)a2;
53
- void* vma2 = (void*)a3;
54
- void** ring_ptr_out = (void**)a4;
55
- void** sqes_ptr_out = (void**)a5;
56
- uint32_t fd_io_uring = syscall(sys_io_uring_setup, entries, setup_params);
57
- uint32_t sq_ring_sz = setup_params->sq_off.array +
58
- setup_params->sq_entries * sizeof(uint32_t);
59
- uint32_t cq_ring_sz = setup_params->cq_off.cqes +
60
- setup_params->cq_entries * SIZEOF_IO_URING_CQE;
61
- uint32_t ring_sz = sq_ring_sz > cq_ring_sz ? sq_ring_sz : cq_ring_sz;
62
- *ring_ptr_out = mmap(vma1, ring_sz, PROT_READ | PROT_WRITE,
63
- MAP_SHARED | MAP_POPULATE | MAP_FIXED, fd_io_uring,
64
- IORING_OFF_SQ_RING);
65
- uint32_t sqes_sz = setup_params->sq_entries * SIZEOF_IO_URING_SQE;
66
- *sqes_ptr_out = mmap(vma2, sqes_sz, PROT_READ | PROT_WRITE,
67
- MAP_SHARED | MAP_POPULATE | MAP_FIXED, fd_io_uring, IORING_OFF_SQES);
68
- return fd_io_uring;
69
- }
70
-
71
- static long syz_io_uring_submit(volatile long a0, volatile long a1,
72
- volatile long a2, volatile long a3)
73
- {
74
- char* ring_ptr = (char*)a0;
75
- char* sqes_ptr = (char*)a1;
76
- char* sqe = (char*)a2;
77
- uint32_t sqes_index = (uint32_t)a3;
78
- uint32_t sq_ring_entries = *(uint32_t*)(ring_ptr + SQ_RING_ENTRIES_OFFSET);
79
- uint32_t cq_ring_entries = *(uint32_t*)(ring_ptr + CQ_RING_ENTRIES_OFFSET);
80
- uint32_t sq_array_off = (CQ_CQES_OFFSET + cq_ring_entries *
81
- SIZEOF_IO_URING_CQE + 63) & ~63;
82
- if (sq_ring_entries)
83
- sqes_index %= sq_ring_entries;
84
- char* sqe_dest = sqes_ptr + sqes_index * SIZEOF_IO_URING_SQE;
85
- memcpy(sqe_dest, sqe, SIZEOF_IO_URING_SQE);
86
- uint32_t sq_ring_mask = *(uint32_t*)(ring_ptr + SQ_RING_MASK_OFFSET);
87
- uint32_t* sq_tail_ptr = (uint32_t*)(ring_ptr + SQ_TAIL_OFFSET);
88
- uint32_t sq_tail = *sq_tail_ptr & sq_ring_mask;
89
- uint32_t sq_tail_next = *sq_tail_ptr + 1;
90
- uint32_t* sq_array = (uint32_t*)(ring_ptr + sq_array_off);
91
- *(sq_array + sq_tail) = sqes_index;
92
- __atomic_store_n(sq_tail_ptr, sq_tail_next, __ATOMIC_RELEASE);
93
- return 0;
94
- }
95
-
96
-
97
- void trigger_bug(void)
98
- {
99
- intptr_t res = 0;
100
- *(uint32_t*)0x20000204 = 0;
101
- *(uint32_t*)0x20000208 = 2;
102
- *(uint32_t*)0x2000020c = 0;
103
- *(uint32_t*)0x20000210 = 0;
104
- *(uint32_t*)0x20000218 = -1;
105
- memset((void*)0x2000021c, 0, 12);
106
- res = -1;
107
- res = syz_io_uring_setup(0x7987, 0x20000200, 0x20400000, 0x20ffd000, 0x200000c0, 0x200001c0);
108
- if (res != -1) {
109
- r[0] = res;
110
- r[1] = *(uint64_t*)0x200000c0;
111
- r[2] = *(uint64_t*)0x200001c0;
112
- }
113
- *(uint8_t*)0x20000180 = 0xb;
114
- *(uint8_t*)0x20000181 = 1;
115
- *(uint16_t*)0x20000182 = 0;
116
- *(uint32_t*)0x20000184 = 0;
117
- *(uint64_t*)0x20000188 = 4;
118
- *(uint64_t*)0x20000190 = 0x20000140;
119
- *(uint64_t*)0x20000140 = 0x77359400;
120
- *(uint64_t*)0x20000148 = 0;
121
- *(uint32_t*)0x20000198 = 1;
122
- *(uint32_t*)0x2000019c = 0;
123
- *(uint64_t*)0x200001a0 = 0;
124
- *(uint16_t*)0x200001a8 = 0;
125
- *(uint16_t*)0x200001aa = 0;
126
- memset((void*)0x200001ac, 0, 20);
127
- syz_io_uring_submit(r[1], r[2], 0x20000180, 1);
128
- *(uint32_t*)0x20000544 = 0;
129
- *(uint32_t*)0x20000548 = 0x36;
130
- *(uint32_t*)0x2000054c = 0;
131
- *(uint32_t*)0x20000550 = 0;
132
- *(uint32_t*)0x20000558 = r[0];
133
- memset((void*)0x2000055c, 0, 12);
134
-
135
- }
136
- int main(void)
137
- {
138
- syscall(__NR_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x32ul, -1, 0ul);
139
- int pid = fork();
140
- if (pid < 0)
141
- exit(1);
142
- if (pid == 0) {
143
- trigger_bug();
144
- exit(0);
145
- }
146
- int status = 0;
147
- uint64_t start = current_time_ms();
148
- for (;;) {
149
- if (current_time_ms() - start < 1000) {
150
- continue;
151
- }
152
- kill_and_wait(pid, &status);
153
- break;
154
- }
155
- return 0;
156
- }
157
-
158
-
159
-
@@ -1,195 +0,0 @@
1
- // https://syzkaller.appspot.com/bug?id=99f4ea77bb9b9ef24cefb66469be319f4aa9f162
2
- // autogenerated by syzkaller (https://github.com/google/syzkaller)
3
-
4
- #include <dirent.h>
5
- #include <endian.h>
6
- #include <errno.h>
7
- #include <fcntl.h>
8
- #include <signal.h>
9
- #include <stdarg.h>
10
- #include <stdbool.h>
11
- #include <stdint.h>
12
- #include <stdio.h>
13
- #include <stdlib.h>
14
- #include <string.h>
15
- #include <sys/mman.h>
16
- #include <sys/prctl.h>
17
- #include <sys/stat.h>
18
- #include <sys/types.h>
19
- #include <sys/wait.h>
20
- #include <time.h>
21
- #include <unistd.h>
22
-
23
- #include "liburing.h"
24
- #include "../src/syscall.h"
25
-
26
- static void sleep_ms(uint64_t ms)
27
- {
28
- usleep(ms * 1000);
29
- }
30
-
31
- static uint64_t current_time_ms(void)
32
- {
33
- struct timespec ts;
34
- if (clock_gettime(CLOCK_MONOTONIC, &ts))
35
- exit(1);
36
- return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000;
37
- }
38
-
39
- static bool write_file(const char* file, const char* what, ...)
40
- {
41
- char buf[1024];
42
- va_list args;
43
- va_start(args, what);
44
- vsnprintf(buf, sizeof(buf), what, args);
45
- va_end(args);
46
- buf[sizeof(buf) - 1] = 0;
47
- int len = strlen(buf);
48
- int fd = open(file, O_WRONLY | O_CLOEXEC);
49
- if (fd == -1)
50
- return false;
51
- if (write(fd, buf, len) != len) {
52
- int err = errno;
53
- close(fd);
54
- errno = err;
55
- return false;
56
- }
57
- close(fd);
58
- return true;
59
- }
60
-
61
- #define SIZEOF_IO_URING_SQE 64
62
- #define SIZEOF_IO_URING_CQE 16
63
- #define SQ_HEAD_OFFSET 0
64
- #define SQ_TAIL_OFFSET 64
65
- #define SQ_RING_MASK_OFFSET 256
66
- #define SQ_RING_ENTRIES_OFFSET 264
67
- #define SQ_FLAGS_OFFSET 276
68
- #define SQ_DROPPED_OFFSET 272
69
- #define CQ_HEAD_OFFSET 128
70
- #define CQ_TAIL_OFFSET 192
71
- #define CQ_RING_MASK_OFFSET 260
72
- #define CQ_RING_ENTRIES_OFFSET 268
73
- #define CQ_RING_OVERFLOW_OFFSET 284
74
- #define CQ_FLAGS_OFFSET 280
75
- #define CQ_CQES_OFFSET 320
76
-
77
- static long syz_io_uring_setup(volatile long a0, volatile long a1,
78
- volatile long a2, volatile long a3,
79
- volatile long a4, volatile long a5)
80
- {
81
- uint32_t entries = (uint32_t)a0;
82
- struct io_uring_params* setup_params = (struct io_uring_params*)a1;
83
- void* vma1 = (void*)a2;
84
- void* vma2 = (void*)a3;
85
- void** ring_ptr_out = (void**)a4;
86
- void** sqes_ptr_out = (void**)a5;
87
- uint32_t fd_io_uring = __sys_io_uring_setup(entries, setup_params);
88
- uint32_t sq_ring_sz =
89
- setup_params->sq_off.array + setup_params->sq_entries * sizeof(uint32_t);
90
- uint32_t cq_ring_sz = setup_params->cq_off.cqes +
91
- setup_params->cq_entries * SIZEOF_IO_URING_CQE;
92
- uint32_t ring_sz = sq_ring_sz > cq_ring_sz ? sq_ring_sz : cq_ring_sz;
93
- *ring_ptr_out = mmap(vma1, ring_sz, PROT_READ | PROT_WRITE,
94
- MAP_SHARED | MAP_POPULATE | MAP_FIXED, fd_io_uring,
95
- IORING_OFF_SQ_RING);
96
- uint32_t sqes_sz = setup_params->sq_entries * SIZEOF_IO_URING_SQE;
97
- *sqes_ptr_out =
98
- mmap(vma2, sqes_sz, PROT_READ | PROT_WRITE,
99
- MAP_SHARED | MAP_POPULATE | MAP_FIXED, fd_io_uring, IORING_OFF_SQES);
100
- return fd_io_uring;
101
- }
102
-
103
- static void kill_and_wait(int pid, int* status)
104
- {
105
- kill(-pid, SIGKILL);
106
- kill(pid, SIGKILL);
107
- for (int i = 0; i < 100; i++) {
108
- if (waitpid(-1, status, WNOHANG | __WALL) == pid)
109
- return;
110
- usleep(1000);
111
- }
112
- DIR* dir = opendir("/sys/fs/fuse/connections");
113
- if (dir) {
114
- for (;;) {
115
- struct dirent* ent = readdir(dir);
116
- if (!ent)
117
- break;
118
- if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0)
119
- continue;
120
- char abort[300];
121
- snprintf(abort, sizeof(abort), "/sys/fs/fuse/connections/%s/abort",
122
- ent->d_name);
123
- int fd = open(abort, O_WRONLY);
124
- if (fd == -1) {
125
- continue;
126
- }
127
- if (write(fd, abort, 1) < 0) {
128
- }
129
- close(fd);
130
- }
131
- closedir(dir);
132
- } else {
133
- }
134
- while (waitpid(-1, status, __WALL) != pid) {
135
- }
136
- }
137
-
138
- static void setup_test()
139
- {
140
- prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0);
141
- setpgrp();
142
- write_file("/proc/self/oom_score_adj", "1000");
143
- }
144
-
145
- static void execute_one(void);
146
-
147
- #define WAIT_FLAGS __WALL
148
-
149
- static void loop(void)
150
- {
151
- int iter = 0;
152
- for (; iter < 100; iter++) {
153
- int pid = fork();
154
- if (pid < 0)
155
- exit(1);
156
- if (pid == 0) {
157
- setup_test();
158
- execute_one();
159
- exit(0);
160
- }
161
- int status = 0;
162
- uint64_t start = current_time_ms();
163
- for (;;) {
164
- if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid)
165
- break;
166
- sleep_ms(1);
167
- if (current_time_ms() - start < 5000) {
168
- continue;
169
- }
170
- kill_and_wait(pid, &status);
171
- break;
172
- }
173
- }
174
- }
175
-
176
- void execute_one(void)
177
- {
178
- *(uint32_t*)0x20000044 = 0;
179
- *(uint32_t*)0x20000048 = 0x42;
180
- *(uint32_t*)0x2000004c = 0;
181
- *(uint32_t*)0x20000050 = 0;
182
- *(uint32_t*)0x20000058 = -1;
183
- *(uint32_t*)0x2000005c = 0;
184
- *(uint32_t*)0x20000060 = 0;
185
- *(uint32_t*)0x20000064 = 0;
186
- syz_io_uring_setup(0x74bc, 0x20000040, 0x20ffb000, 0x20ffc000, 0, 0);
187
- }
188
- int main(void)
189
- {
190
- mmap((void *)0x1ffff000ul, 0x1000ul, 0ul, 0x32ul, -1, 0ul);
191
- mmap((void *)0x20000000ul, 0x1000000ul, 7ul, 0x32ul, -1, 0ul);
192
- mmap((void *)0x21000000ul, 0x1000ul, 0ul, 0x32ul, -1, 0ul);
193
- loop();
194
- return 0;
195
- }
@@ -1,77 +0,0 @@
1
- /*
2
- * Test that we exit properly with SQPOLL and having a request that
3
- * adds a circular reference to the ring itself.
4
- */
5
- #include <errno.h>
6
- #include <stdio.h>
7
- #include <stdlib.h>
8
- #include <unistd.h>
9
- #include <sys/time.h>
10
- #include <sys/poll.h>
11
- #include "liburing.h"
12
-
13
- static unsigned long long mtime_since(const struct timeval *s,
14
- const struct timeval *e)
15
- {
16
- long long sec, usec;
17
-
18
- sec = e->tv_sec - s->tv_sec;
19
- usec = (e->tv_usec - s->tv_usec);
20
- if (sec > 0 && usec < 0) {
21
- sec--;
22
- usec += 1000000;
23
- }
24
-
25
- sec *= 1000;
26
- usec /= 1000;
27
- return sec + usec;
28
- }
29
-
30
- static unsigned long long mtime_since_now(struct timeval *tv)
31
- {
32
- struct timeval end;
33
-
34
- gettimeofday(&end, NULL);
35
- return mtime_since(tv, &end);
36
- }
37
-
38
- int main(int argc, char *argv[])
39
- {
40
- struct io_uring_params p = {};
41
- struct timeval tv;
42
- struct io_uring ring;
43
- struct io_uring_sqe *sqe;
44
- int ret;
45
-
46
- if (argc > 1)
47
- return 0;
48
-
49
- p.flags = IORING_SETUP_SQPOLL;
50
- p.sq_thread_idle = 100;
51
-
52
- ret = io_uring_queue_init_params(1, &ring, &p);
53
- if (ret) {
54
- if (geteuid()) {
55
- printf("%s: skipped, not root\n", argv[0]);
56
- return 0;
57
- }
58
- fprintf(stderr, "queue_init=%d\n", ret);
59
- return 1;
60
- }
61
-
62
- if (!(p.features & IORING_FEAT_SQPOLL_NONFIXED)) {
63
- fprintf(stdout, "Skipping\n");
64
- return 0;
65
- }
66
-
67
- sqe = io_uring_get_sqe(&ring);
68
- io_uring_prep_poll_add(sqe, ring.ring_fd, POLLIN);
69
- io_uring_submit(&ring);
70
-
71
- gettimeofday(&tv, NULL);
72
- do {
73
- usleep(1000);
74
- } while (mtime_since_now(&tv) < 1000);
75
-
76
- return 0;
77
- }
@@ -1,68 +0,0 @@
1
- /*
2
- * Test that the sqthread goes to sleep around the specified time, and that
3
- * the NEED_WAKEUP flag is then set.
4
- */
5
- #include <errno.h>
6
- #include <stdio.h>
7
- #include <stdlib.h>
8
- #include <unistd.h>
9
- #include <sys/time.h>
10
- #include "liburing.h"
11
-
12
- static unsigned long long mtime_since(const struct timeval *s,
13
- const struct timeval *e)
14
- {
15
- long long sec, usec;
16
-
17
- sec = e->tv_sec - s->tv_sec;
18
- usec = (e->tv_usec - s->tv_usec);
19
- if (sec > 0 && usec < 0) {
20
- sec--;
21
- usec += 1000000;
22
- }
23
-
24
- sec *= 1000;
25
- usec /= 1000;
26
- return sec + usec;
27
- }
28
-
29
- static unsigned long long mtime_since_now(struct timeval *tv)
30
- {
31
- struct timeval end;
32
-
33
- gettimeofday(&end, NULL);
34
- return mtime_since(tv, &end);
35
- }
36
-
37
- int main(int argc, char *argv[])
38
- {
39
- struct io_uring_params p = {};
40
- struct timeval tv;
41
- struct io_uring ring;
42
- int ret;
43
-
44
- if (argc > 1)
45
- return 0;
46
-
47
- p.flags = IORING_SETUP_SQPOLL;
48
- p.sq_thread_idle = 100;
49
-
50
- ret = io_uring_queue_init_params(1, &ring, &p);
51
- if (ret) {
52
- if (geteuid()) {
53
- printf("%s: skipped, not root\n", argv[0]);
54
- return 0;
55
- }
56
- fprintf(stderr, "queue_init=%d\n", ret);
57
- return 1;
58
- }
59
-
60
- gettimeofday(&tv, NULL);
61
- do {
62
- usleep(1000);
63
- if ((*ring.sq.kflags) & IORING_SQ_NEED_WAKEUP)
64
- return 0;
65
- } while (mtime_since_now(&tv) < 1000);
66
-
67
- return 1;
68
- }
@@ -1,172 +0,0 @@
1
- /* SPDX-License-Identifier: MIT */
2
- /*
3
- * Description: run various statx(2) tests
4
- *
5
- */
6
- #include <errno.h>
7
- #include <stdio.h>
8
- #include <unistd.h>
9
- #include <stdlib.h>
10
- #include <string.h>
11
- #include <fcntl.h>
12
- #include <sys/types.h>
13
- #include <sys/syscall.h>
14
- #include <linux/stat.h>
15
-
16
- #include "helpers.h"
17
- #include "liburing.h"
18
-
19
- #ifdef __NR_statx
20
- static int do_statx(int dfd, const char *path, int flags, unsigned mask,
21
- struct statx *statxbuf)
22
- {
23
- return syscall(__NR_statx, dfd, path, flags, mask, statxbuf);
24
- }
25
- #else
26
- static int do_statx(int dfd, const char *path, int flags, unsigned mask,
27
- struct statx *statxbuf)
28
- {
29
- errno = ENOSYS;
30
- return -1;
31
- }
32
- #endif
33
-
34
- static int statx_syscall_supported(void)
35
- {
36
- return errno == ENOSYS ? 0 : -1;
37
- }
38
-
39
- static int test_statx(struct io_uring *ring, const char *path)
40
- {
41
- struct io_uring_cqe *cqe;
42
- struct io_uring_sqe *sqe;
43
- struct statx x1, x2;
44
- int ret;
45
-
46
- sqe = io_uring_get_sqe(ring);
47
- if (!sqe) {
48
- fprintf(stderr, "get sqe failed\n");
49
- goto err;
50
- }
51
- io_uring_prep_statx(sqe, -1, path, 0, STATX_ALL, &x1);
52
-
53
- ret = io_uring_submit(ring);
54
- if (ret <= 0) {
55
- fprintf(stderr, "sqe submit failed: %d\n", ret);
56
- goto err;
57
- }
58
-
59
- ret = io_uring_wait_cqe(ring, &cqe);
60
- if (ret < 0) {
61
- fprintf(stderr, "wait completion %d\n", ret);
62
- goto err;
63
- }
64
- ret = cqe->res;
65
- io_uring_cqe_seen(ring, cqe);
66
- if (ret)
67
- return ret;
68
- ret = do_statx(-1, path, 0, STATX_ALL, &x2);
69
- if (ret < 0)
70
- return statx_syscall_supported();
71
- if (memcmp(&x1, &x2, sizeof(x1))) {
72
- fprintf(stderr, "Miscompare between io_uring and statx\n");
73
- goto err;
74
- }
75
- return 0;
76
- err:
77
- return -1;
78
- }
79
-
80
- static int test_statx_fd(struct io_uring *ring, const char *path)
81
- {
82
- struct io_uring_cqe *cqe;
83
- struct io_uring_sqe *sqe;
84
- struct statx x1, x2;
85
- int ret, fd;
86
-
87
- fd = open(path, O_RDONLY);
88
- if (fd < 0) {
89
- perror("open");
90
- return 1;
91
- }
92
-
93
- memset(&x1, 0, sizeof(x1));
94
-
95
- sqe = io_uring_get_sqe(ring);
96
- if (!sqe) {
97
- fprintf(stderr, "get sqe failed\n");
98
- goto err;
99
- }
100
- io_uring_prep_statx(sqe, fd, "", AT_EMPTY_PATH, STATX_ALL, &x1);
101
-
102
- ret = io_uring_submit(ring);
103
- if (ret <= 0) {
104
- fprintf(stderr, "sqe submit failed: %d\n", ret);
105
- goto err;
106
- }
107
-
108
- ret = io_uring_wait_cqe(ring, &cqe);
109
- if (ret < 0) {
110
- fprintf(stderr, "wait completion %d\n", ret);
111
- goto err;
112
- }
113
- ret = cqe->res;
114
- io_uring_cqe_seen(ring, cqe);
115
- if (ret)
116
- return ret;
117
- memset(&x2, 0, sizeof(x2));
118
- ret = do_statx(fd, "", AT_EMPTY_PATH, STATX_ALL, &x2);
119
- if (ret < 0)
120
- return statx_syscall_supported();
121
- if (memcmp(&x1, &x2, sizeof(x1))) {
122
- fprintf(stderr, "Miscompare between io_uring and statx\n");
123
- goto err;
124
- }
125
- return 0;
126
- err:
127
- return -1;
128
- }
129
-
130
- int main(int argc, char *argv[])
131
- {
132
- struct io_uring ring;
133
- const char *fname;
134
- int ret;
135
-
136
- ret = io_uring_queue_init(8, &ring, 0);
137
- if (ret) {
138
- fprintf(stderr, "ring setup failed\n");
139
- return 1;
140
- }
141
-
142
- if (argc > 1) {
143
- fname = argv[1];
144
- } else {
145
- fname = "/tmp/.statx";
146
- t_create_file(fname, 4096);
147
- }
148
-
149
- ret = test_statx(&ring, fname);
150
- if (ret) {
151
- if (ret == -EINVAL) {
152
- fprintf(stdout, "statx not supported, skipping\n");
153
- goto done;
154
- }
155
- fprintf(stderr, "test_statx failed: %d\n", ret);
156
- goto err;
157
- }
158
-
159
- ret = test_statx_fd(&ring, fname);
160
- if (ret) {
161
- fprintf(stderr, "test_statx_fd failed: %d\n", ret);
162
- goto err;
163
- }
164
- done:
165
- if (fname != argv[1])
166
- unlink(fname);
167
- return 0;
168
- err:
169
- if (fname != argv[1])
170
- unlink(fname);
171
- return 1;
172
- }