@nxtedition/rocksdb 5.2.37 → 5.2.40

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 (189) hide show
  1. package/binding.cc +67 -82
  2. package/deps/liburing/liburing/COPYING +502 -0
  3. package/deps/liburing/liburing/COPYING.GPL +339 -0
  4. package/deps/liburing/liburing/LICENSE +7 -0
  5. package/deps/liburing/liburing/Makefile +84 -0
  6. package/deps/liburing/liburing/Makefile.quiet +11 -0
  7. package/deps/liburing/liburing/README +46 -0
  8. package/deps/liburing/liburing/configure +420 -0
  9. package/deps/liburing/liburing/debian/README.Debian +7 -0
  10. package/deps/liburing/liburing/debian/changelog +27 -0
  11. package/deps/liburing/liburing/debian/compat +1 -0
  12. package/deps/liburing/liburing/debian/control +48 -0
  13. package/deps/liburing/liburing/debian/copyright +49 -0
  14. package/deps/liburing/liburing/debian/liburing-dev.install +4 -0
  15. package/deps/liburing/liburing/debian/liburing-dev.manpages +6 -0
  16. package/deps/liburing/liburing/debian/liburing1-udeb.install +1 -0
  17. package/deps/liburing/liburing/debian/liburing1.install +1 -0
  18. package/deps/liburing/liburing/debian/liburing1.symbols +32 -0
  19. package/deps/liburing/liburing/debian/patches/series +1 -0
  20. package/deps/liburing/liburing/debian/rules +81 -0
  21. package/deps/liburing/liburing/debian/source/format +1 -0
  22. package/deps/liburing/liburing/debian/source/local-options +2 -0
  23. package/deps/liburing/liburing/debian/source/options +1 -0
  24. package/deps/liburing/liburing/debian/watch +3 -0
  25. package/deps/liburing/liburing/examples/Makefile +29 -0
  26. package/deps/liburing/liburing/examples/io_uring-cp.c +279 -0
  27. package/deps/liburing/liburing/examples/io_uring-test.c +112 -0
  28. package/deps/liburing/liburing/examples/link-cp.c +193 -0
  29. package/deps/liburing/liburing/examples/ucontext-cp.c +273 -0
  30. package/deps/liburing/liburing/liburing.pc.in +12 -0
  31. package/deps/liburing/liburing/liburing.spec +66 -0
  32. package/deps/liburing/liburing/make-debs.sh +53 -0
  33. package/deps/liburing/liburing/man/io_uring.7 +736 -0
  34. package/deps/liburing/liburing/man/io_uring_enter.2 +1403 -0
  35. package/deps/liburing/liburing/man/io_uring_get_sqe.3 +37 -0
  36. package/deps/liburing/liburing/man/io_uring_queue_exit.3 +27 -0
  37. package/deps/liburing/liburing/man/io_uring_queue_init.3 +44 -0
  38. package/deps/liburing/liburing/man/io_uring_register.2 +605 -0
  39. package/deps/liburing/liburing/man/io_uring_setup.2 +515 -0
  40. package/deps/liburing/liburing/src/Makefile +76 -0
  41. package/deps/liburing/liburing/src/include/liburing/barrier.h +73 -0
  42. package/deps/liburing/liburing/src/include/liburing/io_uring.h +422 -0
  43. package/deps/liburing/liburing/src/include/liburing.h +775 -0
  44. package/deps/liburing/liburing/src/liburing.map +46 -0
  45. package/deps/liburing/liburing/src/queue.c +403 -0
  46. package/deps/liburing/liburing/src/register.c +299 -0
  47. package/deps/liburing/liburing/src/setup.c +356 -0
  48. package/deps/liburing/liburing/src/syscall.c +73 -0
  49. package/deps/liburing/liburing/src/syscall.h +20 -0
  50. package/deps/liburing/liburing/test/232c93d07b74-test.c +305 -0
  51. package/deps/liburing/liburing/test/35fa71a030ca-test.c +329 -0
  52. package/deps/liburing/liburing/test/500f9fbadef8-test.c +89 -0
  53. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +93 -0
  54. package/deps/liburing/liburing/test/8a9973408177-test.c +106 -0
  55. package/deps/liburing/liburing/test/917257daa0fe-test.c +53 -0
  56. package/deps/liburing/liburing/test/Makefile +312 -0
  57. package/deps/liburing/liburing/test/a0908ae19763-test.c +58 -0
  58. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +180 -0
  59. package/deps/liburing/liburing/test/accept-link.c +251 -0
  60. package/deps/liburing/liburing/test/accept-reuse.c +164 -0
  61. package/deps/liburing/liburing/test/accept-test.c +79 -0
  62. package/deps/liburing/liburing/test/accept.c +476 -0
  63. package/deps/liburing/liburing/test/across-fork.c +283 -0
  64. package/deps/liburing/liburing/test/b19062a56726-test.c +53 -0
  65. package/deps/liburing/liburing/test/b5837bd5311d-test.c +77 -0
  66. package/deps/liburing/liburing/test/ce593a6c480a-test.c +135 -0
  67. package/deps/liburing/liburing/test/close-opath.c +122 -0
  68. package/deps/liburing/liburing/test/config +10 -0
  69. package/deps/liburing/liburing/test/connect.c +398 -0
  70. package/deps/liburing/liburing/test/cq-full.c +96 -0
  71. package/deps/liburing/liburing/test/cq-overflow.c +294 -0
  72. package/deps/liburing/liburing/test/cq-peek-batch.c +102 -0
  73. package/deps/liburing/liburing/test/cq-ready.c +94 -0
  74. package/deps/liburing/liburing/test/cq-size.c +58 -0
  75. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +96 -0
  76. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +65 -0
  77. package/deps/liburing/liburing/test/defer.c +307 -0
  78. package/deps/liburing/liburing/test/double-poll-crash.c +186 -0
  79. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +114 -0
  80. package/deps/liburing/liburing/test/empty-eownerdead.c +42 -0
  81. package/deps/liburing/liburing/test/eventfd-disable.c +151 -0
  82. package/deps/liburing/liburing/test/eventfd-ring.c +97 -0
  83. package/deps/liburing/liburing/test/eventfd.c +112 -0
  84. package/deps/liburing/liburing/test/fadvise.c +202 -0
  85. package/deps/liburing/liburing/test/fallocate.c +249 -0
  86. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +138 -0
  87. package/deps/liburing/liburing/test/file-register.c +843 -0
  88. package/deps/liburing/liburing/test/file-update.c +173 -0
  89. package/deps/liburing/liburing/test/files-exit-hang-poll.c +128 -0
  90. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +134 -0
  91. package/deps/liburing/liburing/test/fixed-link.c +90 -0
  92. package/deps/liburing/liburing/test/fsync.c +224 -0
  93. package/deps/liburing/liburing/test/hardlink.c +136 -0
  94. package/deps/liburing/liburing/test/helpers.c +135 -0
  95. package/deps/liburing/liburing/test/helpers.h +67 -0
  96. package/deps/liburing/liburing/test/io-cancel.c +537 -0
  97. package/deps/liburing/liburing/test/io_uring_enter.c +296 -0
  98. package/deps/liburing/liburing/test/io_uring_register.c +664 -0
  99. package/deps/liburing/liburing/test/io_uring_setup.c +192 -0
  100. package/deps/liburing/liburing/test/iopoll.c +366 -0
  101. package/deps/liburing/liburing/test/lfs-openat-write.c +117 -0
  102. package/deps/liburing/liburing/test/lfs-openat.c +273 -0
  103. package/deps/liburing/liburing/test/link-timeout.c +1107 -0
  104. package/deps/liburing/liburing/test/link.c +496 -0
  105. package/deps/liburing/liburing/test/link_drain.c +229 -0
  106. package/deps/liburing/liburing/test/madvise.c +195 -0
  107. package/deps/liburing/liburing/test/mkdir.c +108 -0
  108. package/deps/liburing/liburing/test/multicqes_drain.c +383 -0
  109. package/deps/liburing/liburing/test/nop-all-sizes.c +107 -0
  110. package/deps/liburing/liburing/test/nop.c +115 -0
  111. package/deps/liburing/liburing/test/open-close.c +146 -0
  112. package/deps/liburing/liburing/test/openat2.c +240 -0
  113. package/deps/liburing/liburing/test/personality.c +204 -0
  114. package/deps/liburing/liburing/test/pipe-eof.c +81 -0
  115. package/deps/liburing/liburing/test/pipe-reuse.c +105 -0
  116. package/deps/liburing/liburing/test/poll-cancel-ton.c +139 -0
  117. package/deps/liburing/liburing/test/poll-cancel.c +135 -0
  118. package/deps/liburing/liburing/test/poll-link.c +227 -0
  119. package/deps/liburing/liburing/test/poll-many.c +208 -0
  120. package/deps/liburing/liburing/test/poll-mshot-update.c +273 -0
  121. package/deps/liburing/liburing/test/poll-ring.c +48 -0
  122. package/deps/liburing/liburing/test/poll-v-poll.c +353 -0
  123. package/deps/liburing/liburing/test/poll.c +109 -0
  124. package/deps/liburing/liburing/test/probe.c +137 -0
  125. package/deps/liburing/liburing/test/read-write.c +876 -0
  126. package/deps/liburing/liburing/test/register-restrictions.c +633 -0
  127. package/deps/liburing/liburing/test/rename.c +134 -0
  128. package/deps/liburing/liburing/test/ring-leak.c +173 -0
  129. package/deps/liburing/liburing/test/ring-leak2.c +249 -0
  130. package/deps/liburing/liburing/test/rsrc_tags.c +449 -0
  131. package/deps/liburing/liburing/test/runtests-loop.sh +16 -0
  132. package/deps/liburing/liburing/test/runtests.sh +170 -0
  133. package/deps/liburing/liburing/test/rw_merge_test.c +97 -0
  134. package/deps/liburing/liburing/test/self.c +91 -0
  135. package/deps/liburing/liburing/test/send_recv.c +291 -0
  136. package/deps/liburing/liburing/test/send_recvmsg.c +345 -0
  137. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +198 -0
  138. package/deps/liburing/liburing/test/shared-wq.c +84 -0
  139. package/deps/liburing/liburing/test/short-read.c +75 -0
  140. package/deps/liburing/liburing/test/shutdown.c +163 -0
  141. package/deps/liburing/liburing/test/sigfd-deadlock.c +74 -0
  142. package/deps/liburing/liburing/test/socket-rw-eagain.c +156 -0
  143. package/deps/liburing/liburing/test/socket-rw.c +147 -0
  144. package/deps/liburing/liburing/test/splice.c +511 -0
  145. package/deps/liburing/liburing/test/sq-full-cpp.cc +45 -0
  146. package/deps/liburing/liburing/test/sq-full.c +45 -0
  147. package/deps/liburing/liburing/test/sq-poll-dup.c +200 -0
  148. package/deps/liburing/liburing/test/sq-poll-kthread.c +168 -0
  149. package/deps/liburing/liburing/test/sq-poll-share.c +137 -0
  150. package/deps/liburing/liburing/test/sq-space_left.c +159 -0
  151. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +159 -0
  152. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +195 -0
  153. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +77 -0
  154. package/deps/liburing/liburing/test/sqpoll-sleep.c +68 -0
  155. package/deps/liburing/liburing/test/statx.c +172 -0
  156. package/deps/liburing/liburing/test/stdout.c +232 -0
  157. package/deps/liburing/liburing/test/submit-link-fail.c +154 -0
  158. package/deps/liburing/liburing/test/submit-reuse.c +239 -0
  159. package/deps/liburing/liburing/test/symlink.c +116 -0
  160. package/deps/liburing/liburing/test/teardowns.c +58 -0
  161. package/deps/liburing/liburing/test/thread-exit.c +131 -0
  162. package/deps/liburing/liburing/test/timeout-new.c +246 -0
  163. package/deps/liburing/liburing/test/timeout-overflow.c +204 -0
  164. package/deps/liburing/liburing/test/timeout.c +1354 -0
  165. package/deps/liburing/liburing/test/unlink.c +111 -0
  166. package/deps/liburing/liburing/test/wakeup-hang.c +162 -0
  167. package/deps/liburing/liburing.gyp +20 -0
  168. package/deps/rocksdb/rocksdb/db/corruption_test.cc +62 -0
  169. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -62
  170. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +25 -11
  171. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +74 -155
  172. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
  173. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  174. package/deps/rocksdb/rocksdb/env/fs_posix.cc +13 -0
  175. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +4 -2
  176. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +22 -4
  177. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +5 -0
  178. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +15 -0
  179. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  181. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -0
  182. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +3 -7
  183. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +2 -1
  184. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -29
  185. package/deps/rocksdb/rocksdb.gyp +4 -3
  186. package/package.json +1 -1
  187. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  188. package/prebuilds/darwin-x64/node.napi.node +0 -0
  189. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -0,0 +1,204 @@
1
+ /* SPDX-License-Identifier: MIT */
2
+ /*
3
+ * Description: run timeout overflow test
4
+ *
5
+ */
6
+ #include <errno.h>
7
+ #include <stdio.h>
8
+ #include <limits.h>
9
+ #include <string.h>
10
+ #include <sys/time.h>
11
+
12
+ #include "liburing.h"
13
+
14
+ #define TIMEOUT_MSEC 200
15
+ static int not_supported;
16
+
17
+ static void msec_to_ts(struct __kernel_timespec *ts, unsigned int msec)
18
+ {
19
+ ts->tv_sec = msec / 1000;
20
+ ts->tv_nsec = (msec % 1000) * 1000000;
21
+ }
22
+
23
+ static int check_timeout_support(void)
24
+ {
25
+ struct io_uring_sqe *sqe;
26
+ struct io_uring_cqe *cqe;
27
+ struct __kernel_timespec ts;
28
+ struct io_uring_params p;
29
+ struct io_uring ring;
30
+ int ret;
31
+
32
+ memset(&p, 0, sizeof(p));
33
+ ret = io_uring_queue_init_params(1, &ring, &p);
34
+ if (ret) {
35
+ fprintf(stderr, "ring setup failed: %d\n", ret);
36
+ return 1;
37
+ }
38
+
39
+ /* not really a match, but same kernel added batched completions */
40
+ if (p.features & IORING_FEAT_POLL_32BITS) {
41
+ fprintf(stdout, "Skipping\n");
42
+ not_supported = 1;
43
+ return 0;
44
+ }
45
+
46
+ sqe = io_uring_get_sqe(&ring);
47
+ msec_to_ts(&ts, TIMEOUT_MSEC);
48
+ io_uring_prep_timeout(sqe, &ts, 1, 0);
49
+
50
+ ret = io_uring_submit(&ring);
51
+ if (ret < 0) {
52
+ fprintf(stderr, "sqe submit failed: %d\n", ret);
53
+ goto err;
54
+ }
55
+
56
+ ret = io_uring_wait_cqe(&ring, &cqe);
57
+ if (ret < 0) {
58
+ fprintf(stderr, "wait completion %d\n", ret);
59
+ goto err;
60
+ }
61
+
62
+ if (cqe->res == -EINVAL) {
63
+ not_supported = 1;
64
+ fprintf(stdout, "Timeout not supported, ignored\n");
65
+ return 0;
66
+ }
67
+
68
+ io_uring_cqe_seen(&ring, cqe);
69
+ io_uring_queue_exit(&ring);
70
+ return 0;
71
+ err:
72
+ io_uring_queue_exit(&ring);
73
+ return 1;
74
+ }
75
+
76
+ /*
77
+ * We first setup 4 timeout requests, which require a count value of 1, 1, 2,
78
+ * UINT_MAX, so the sequence is 1, 2, 4, 2. Before really timeout, this 4
79
+ * requests will not lead the change of cq_cached_tail, so as sq_dropped.
80
+ *
81
+ * And before this patch. The order of this four requests will be req1->req2->
82
+ * req4->req3. Actually, it should be req1->req2->req3->req4.
83
+ *
84
+ * Then, if there is 2 nop req. All timeout requests expect req4 will completed
85
+ * successful after the patch. And req1/req2 will completed successful with
86
+ * req3/req4 return -ETIME without this patch!
87
+ */
88
+ static int test_timeout_overflow(void)
89
+ {
90
+ struct io_uring_sqe *sqe;
91
+ struct io_uring_cqe *cqe;
92
+ struct __kernel_timespec ts;
93
+ struct io_uring ring;
94
+ int i, ret;
95
+
96
+ ret = io_uring_queue_init(16, &ring, 0);
97
+ if (ret) {
98
+ fprintf(stderr, "ring setup failed: %d\n", ret);
99
+ return 1;
100
+ }
101
+
102
+ msec_to_ts(&ts, TIMEOUT_MSEC);
103
+ for (i = 0; i < 4; i++) {
104
+ unsigned num;
105
+ sqe = io_uring_get_sqe(&ring);
106
+ switch (i) {
107
+ case 0:
108
+ case 1:
109
+ num = 1;
110
+ break;
111
+ case 2:
112
+ num = 2;
113
+ break;
114
+ case 3:
115
+ num = UINT_MAX;
116
+ break;
117
+ }
118
+ io_uring_prep_timeout(sqe, &ts, num, 0);
119
+ }
120
+
121
+ for (i = 0; i < 2; i++) {
122
+ sqe = io_uring_get_sqe(&ring);
123
+ io_uring_prep_nop(sqe);
124
+ io_uring_sqe_set_data(sqe, (void *) 1);
125
+ }
126
+ ret = io_uring_submit(&ring);
127
+ if (ret < 0) {
128
+ fprintf(stderr, "sqe submit failed: %d\n", ret);
129
+ goto err;
130
+ }
131
+
132
+ i = 0;
133
+ while (i < 6) {
134
+ ret = io_uring_wait_cqe(&ring, &cqe);
135
+ if (ret < 0) {
136
+ fprintf(stderr, "wait completion %d\n", ret);
137
+ goto err;
138
+ }
139
+
140
+ /*
141
+ * cqe1: first nop req
142
+ * cqe2: first timeout req, because of cqe1
143
+ * cqe3: second timeout req because of cqe1 + cqe2
144
+ * cqe4: second nop req
145
+ * cqe5~cqe6: the left three timeout req
146
+ */
147
+ switch (i) {
148
+ case 0:
149
+ case 3:
150
+ if (io_uring_cqe_get_data(cqe) != (void *) 1) {
151
+ fprintf(stderr, "nop not seen as 1 or 2\n");
152
+ goto err;
153
+ }
154
+ break;
155
+ case 1:
156
+ case 2:
157
+ case 4:
158
+ if (cqe->res == -ETIME) {
159
+ fprintf(stderr, "expected not return -ETIME "
160
+ "for the #%d timeout req\n", i - 1);
161
+ goto err;
162
+ }
163
+ break;
164
+ case 5:
165
+ if (cqe->res != -ETIME) {
166
+ fprintf(stderr, "expected return -ETIME for "
167
+ "the #%d timeout req\n", i - 1);
168
+ goto err;
169
+ }
170
+ break;
171
+ }
172
+ io_uring_cqe_seen(&ring, cqe);
173
+ i++;
174
+ }
175
+
176
+ return 0;
177
+ err:
178
+ return 1;
179
+ }
180
+
181
+ int main(int argc, char *argv[])
182
+ {
183
+ int ret;
184
+
185
+ if (argc > 1)
186
+ return 0;
187
+
188
+ ret = check_timeout_support();
189
+ if (ret) {
190
+ fprintf(stderr, "check_timeout_support failed: %d\n", ret);
191
+ return 1;
192
+ }
193
+
194
+ if (not_supported)
195
+ return 0;
196
+
197
+ ret = test_timeout_overflow();
198
+ if (ret) {
199
+ fprintf(stderr, "test_timeout_overflow failed\n");
200
+ return 1;
201
+ }
202
+
203
+ return 0;
204
+ }