vitastor/src
Vitaliy Filippov 5464821fa5 Final fix for the lack of zeroing out of old metadata entries
If a crash occurs during flushing a redirect-write it may happen so that
the disk contains both old and new metadata entries. This is OK, but prior
to 0.8.0 after this situation OSDs started without problem, but then they
crashed after some more overwrites with a "tried to overwrite non-zero
metadata entry" error. 0.8.0 introduced a change that was intended to fix
this situation, but rather than fixing it it prevented OSDs from starting,
now because of a "big_write journal_entry was allocated over another object"
error... :-)

This change finally fixes the original issue.

Followup to 54ef2c389f
2022-12-17 14:50:31 +03:00
..
mock Fix minor bugs in snapshot removal, check it in tests 2021-09-25 19:30:29 +03:00
nfs Simplified NFS proxy based on own NFS/XDR implementation 2022-05-07 01:01:20 +03:00
CMakeLists.txt Release 0.8.1 2022-11-20 11:44:09 +03:00
addr_util.cpp Use the larger sockaddr_storage structure 2022-02-12 11:22:56 +03:00
addr_util.h Use the larger sockaddr_storage structure 2022-02-12 11:22:56 +03:00
allocator.cpp Use (uint64_t)1 instead of 1l / 1ul 2022-04-16 01:48:14 +03:00
allocator.h Add "external" bitmap support to osd_rmw 2021-04-10 17:44:12 +03:00
blockstore.cpp Autosync based on number of unstable ops to prevent journal stalls 2021-10-30 14:26:48 +03:00
blockstore.h Use simple std::map for the config 2022-07-15 01:38:30 +03:00
blockstore_disk.cpp Fix vitastor-disk prepare bugs 2022-08-19 02:22:54 +03:00
blockstore_disk.h vitastor-disk prepare: implement first form of the command 2022-08-09 01:29:29 +03:00
blockstore_flush.cpp Wait for data writes before fsyncing data if data fsync is enabled 2022-12-16 20:46:55 +03:00
blockstore_flush.h Shard clean_db by PGs to speedup listings 2022-02-20 00:21:24 +03:00
blockstore_impl.cpp Never try to wait for free space inside blockstore 2022-12-12 00:27:05 +03:00
blockstore_impl.h Never try to wait for free space inside blockstore 2022-12-12 00:27:05 +03:00
blockstore_init.cpp Final fix for the lack of zeroing out of old metadata entries 2022-12-17 14:50:31 +03:00
blockstore_init.h Final fix for the lack of zeroing out of old metadata entries 2022-12-17 14:50:31 +03:00
blockstore_journal.cpp Extract disk opening functions to separate module 2022-07-15 01:38:30 +03:00
blockstore_journal.h Fix resizer 2022-07-15 01:38:30 +03:00
blockstore_open.cpp Set journal/meta devices to data device explicitly instead of "" 2022-07-15 01:38:30 +03:00
blockstore_read.cpp Make journal trimmer wait until reads are completed when inmemory_journal is false 2022-11-20 01:49:21 +03:00
blockstore_rollback.cpp Make journal trimmer wait until reads are completed when inmemory_journal is false 2022-11-20 01:49:21 +03:00
blockstore_stable.cpp Extract disk opening functions to separate module 2022-07-15 01:38:30 +03:00
blockstore_sync.cpp Extract disk opening functions to separate module 2022-07-15 01:38:30 +03:00
blockstore_write.cpp Never try to wait for free space inside blockstore 2022-12-12 00:27:05 +03:00
cli.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli.h Move simple-offsets into vitastor-disk, too 2022-07-15 02:19:35 +03:00
cli_alloc_osd.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli_common.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli_create.cpp Add documentation for the new "vitastor-disk" tool 2022-08-22 00:31:30 +03:00
cli_df.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli_flatten.cpp Make CLI functions usable in library form 2022-05-06 02:18:32 +03:00
cli_ls.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli_merge.cpp Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
cli_modify.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli_rm.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
cli_rm_data.cpp Fix listings sending too many parallel requests to OSDs, fix rm-data crashing with --wait-list 2022-06-03 23:36:37 +03:00
cli_status.cpp Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
cluster_client.cpp Fix possible duplication of ping & op message IDs 2022-12-04 00:16:47 +03:00
cluster_client.h Fix possible duplication of ping & op message IDs 2022-12-04 00:16:47 +03:00
cluster_client_list.cpp Fix possible duplication of ping & op message IDs 2022-12-04 00:16:47 +03:00
crc32c.c Move C/C++ sources to src subdirectory 2021-02-25 23:59:03 +03:00
crc32c.h Move C/C++ sources to src subdirectory 2021-02-25 23:59:03 +03:00
disk_simple_offsets.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
disk_tool.cpp Add --force to vitastor-disk read-sb 2022-12-17 02:47:15 +03:00
disk_tool.h Add --force to vitastor-disk read-sb 2022-12-17 02:47:15 +03:00
disk_tool_journal.cpp Add forgotten commas to vitastor-disk dump-journal 2022-12-17 01:22:58 +03:00
disk_tool_meta.cpp Dump meta in hex 2022-12-17 01:50:38 +03:00
disk_tool_prepare.cpp Fix fsync autodetection for the single-device mode 2022-09-05 13:51:20 +03:00
disk_tool_resize.cpp Add documentation for the new "vitastor-disk" tool 2022-08-22 00:31:30 +03:00
disk_tool_udev.cpp Add --force to vitastor-disk read-sb 2022-12-17 02:47:15 +03:00
disk_tool_upgrade.cpp Add documentation for the new "vitastor-disk" tool 2022-08-22 00:31:30 +03:00
disk_tool_utils.cpp Hotfixes for vitastor-disk prepare: max_other, get device size, older sfdisk 2022-09-05 12:48:27 +03:00
epoll_manager.cpp Handle get_sqe failures, don't die with "will fall out of sync" in epoll_manager 2022-01-31 02:52:20 +03:00
epoll_manager.h Handle get_sqe failures, don't die with "will fall out of sync" in epoll_manager 2022-01-31 02:52:20 +03:00
etcd_state_client.cpp Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
etcd_state_client.h Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
fio_cluster.cpp Fix void* arithmetic again 2022-07-15 01:38:30 +03:00
fio_engine.cpp Fix leaks detected by clang scan-build (only 1 of 4 may be important though) 2022-01-16 00:11:59 +03:00
fio_headers.h Fix compatibility with fio 3.28+ 2022-01-31 23:39:14 +03:00
fio_sec_osd.cpp Use the larger sockaddr_storage structure 2022-02-12 11:22:56 +03:00
http_client.cpp vitastor-disk prepare: implement first form of the command 2022-08-09 01:29:29 +03:00
http_client.h Move simple-offsets into vitastor-disk, too 2022-07-15 02:19:35 +03:00
malloc_or_die.h Move C/C++ sources to src subdirectory 2021-02-25 23:59:03 +03:00
messenger.cpp Fix possible use-after-free during pings 2022-12-04 00:16:47 +03:00
messenger.h Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
msgr_op.cpp Extract some definitions to msgr_op.{cpp,h} 2021-04-03 14:36:04 +03:00
msgr_op.h Fix build under clang and some warnings 2022-01-16 00:02:54 +03:00
msgr_rdma.cpp Fix rand initialization, add etcd connection/disconnection logging 2022-01-20 00:45:49 +03:00
msgr_rdma.h Remove naggy RDMA messages when log level is zero 2021-11-06 14:36:23 +03:00
msgr_receive.cpp Handle EINTR 2022-01-22 23:59:37 +03:00
msgr_send.cpp Handle EINTR 2022-01-22 23:59:37 +03:00
msgr_stop.cpp Add missing cancel_op(currently being read op) when stopping a client 2022-01-28 01:53:52 +03:00
nbd_proxy.cpp Use (uint64_t)1 instead of 1l / 1ul 2022-04-16 01:48:14 +03:00
nfs_conn.cpp Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
nfs_portmap.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
nfs_portmap.h Simplified NFS proxy based on own NFS/XDR implementation 2022-05-07 01:01:20 +03:00
nfs_proxy.cpp Rename base64.{cpp.h} to str_util 2022-07-31 01:12:37 +03:00
nfs_proxy.h Simplified NFS proxy based on own NFS/XDR implementation 2022-05-07 01:01:20 +03:00
object_id.h Actual snapshot support (untested) 2021-04-10 17:44:12 +03:00
osd.cpp Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
osd.h Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 2022-08-11 01:56:33 +03:00
osd_cluster.cpp Fix vitastor-disk prepare bugs 2022-08-19 02:22:54 +03:00
osd_flush.cpp Fix OSDs possibly dying with "map::at" errors when other OSDs are stopped 2022-02-09 10:35:29 +03:00
osd_id.h Rename "jerasure" to "ec" in pool configuration, function names, fix documentation and Debian build scripts 2022-06-03 15:40:00 +03:00
osd_main.cpp Use json11 instead of blockstore_config_t 2021-04-30 00:52:46 +03:00
osd_ops.cpp Add "read bitmaps" operation to secondary OSD protocol 2021-04-10 17:44:12 +03:00
osd_ops.h Implement metadata dump tool 2022-06-10 18:50:09 +03:00
osd_peering.cpp Fix rare crash in osd_peering due to callback ordering 2022-12-12 00:27:05 +03:00
osd_peering_pg.cpp Use (uint64_t)1 instead of 1l / 1ul 2022-04-16 01:48:14 +03:00
osd_peering_pg.h Delete objects only after a SYNC during rebalance in the non-immediate_commit mode 2021-03-16 12:48:26 +03:00
osd_peering_pg_test.cpp Move C/C++ sources to src subdirectory 2021-02-25 23:59:03 +03:00
osd_primary.cpp Rename "jerasure" to "ec" in pool configuration, function names, fix documentation and Debian build scripts 2022-06-03 15:40:00 +03:00
osd_primary.h Implement chained (optimized) read in the primary OSD code 2021-04-10 17:44:12 +03:00
osd_primary_chain.cpp Rename "jerasure" to "ec" in pool configuration, function names, fix documentation and Debian build scripts 2022-06-03 15:40:00 +03:00
osd_primary_subops.cpp Fix unknown OSD numbers on error 2022-05-28 00:51:14 +03:00
osd_primary_sync.cpp Fix build under clang and some warnings 2022-01-16 00:02:54 +03:00
osd_primary_write.cpp Rename "jerasure" to "ec" in pool configuration, function names, fix documentation and Debian build scripts 2022-06-03 15:40:00 +03:00
osd_rmw.cpp Fix degraded parity writes for EC N+K when K>1 2022-11-20 00:50:13 +03:00
osd_rmw.h Implement metadata dump tool 2022-06-10 18:50:09 +03:00
osd_rmw_test.cpp Fix degraded parity writes for EC N+K when K>1 2022-11-20 00:50:13 +03:00
osd_secondary.cpp Remove etcd timeout and keepalive interval hardcode 2022-01-23 00:00:00 +03:00
osd_test.cpp Use the larger sockaddr_storage structure 2022-02-12 11:22:56 +03:00
pg_states.cpp Report pg/history from OSD on every degraded activation 2021-11-13 22:39:17 +03:00
pg_states.h Report pg/history from OSD on every degraded activation 2021-11-13 22:39:17 +03:00
qemu_driver.c Fix compatibility with QEMU aio_set_fd_handler signatures in 7.0 and < 2.9 2022-12-15 19:17:17 +03:00
ringloop.cpp And one more sqe starvation fix 2022-02-01 02:50:16 +03:00
ringloop.h Fix compatibility with liburing >= 2.1 where it only has __pad2[2] 2022-01-31 22:49:40 +03:00
rw_blocking.cpp Handle EINTR 2022-01-22 23:59:37 +03:00
rw_blocking.h Support zero-copy send in fio_sec_osd to allow testing it 2021-12-27 02:12:44 +03:00
sha256.c Simplified NFS proxy based on own NFS/XDR implementation 2022-05-07 01:01:20 +03:00
sha256.h Simplified NFS proxy based on own NFS/XDR implementation 2022-05-07 01:01:20 +03:00
str_util.cpp Fix parse_size 2022-09-04 14:20:56 +03:00
str_util.h Add documentation for the new "vitastor-disk" tool 2022-08-22 00:31:30 +03:00
stub_bench.cpp Use the larger sockaddr_storage structure 2022-02-12 11:22:56 +03:00
stub_osd.cpp Use the larger sockaddr_storage structure 2022-02-12 11:22:56 +03:00
stub_uring_osd.cpp Extract bind socket code into a utility function 2022-02-06 00:39:52 +03:00
test_allocator.cpp Skip double allocs when reading journal 2021-04-03 00:53:28 +03:00
test_blockstore.cpp Implement journaled write throttling for the SSD+HDD case 2021-04-10 17:44:12 +03:00
test_cas.cpp Add a test for CAS write operation 2021-06-15 00:12:35 +03:00
test_cluster_client.cpp Watch inode metadata revisions 2021-04-10 17:44:12 +03:00
test_crc32.cpp Add crc32c test utility 2022-11-20 00:50:13 +03:00
test_pattern.h Fix build under clang and some warnings 2022-01-16 00:02:54 +03:00
test_shit.cpp Use (uint64_t)1 instead of 1l / 1ul 2022-04-16 01:48:14 +03:00
timerfd_manager.cpp Fix build under clang and some warnings 2022-01-16 00:02:54 +03:00
timerfd_manager.h Add microsecond accuracy to set_timer 2021-04-10 17:44:12 +03:00
vitastor.pc.in Release 0.8.1 2022-11-20 11:44:09 +03:00
vitastor_c.cpp Remove "bool" from the C header 2021-10-18 01:49:07 +03:00
vitastor_c.h Fix compatibility with QEMU aio_set_fd_handler signatures in 7.0 and < 2.9 2022-12-15 19:17:17 +03:00
xor.h Move C/C++ sources to src subdirectory 2021-02-25 23:59:03 +03:00