Simplified distributed block and file storage with strong consistency, like in Ceph
 
 
 
 
 
 
Go to file
Vitaliy Filippov 571be0f380 Make deletions instantly stable
"2-phase" (write->stabilize) process is pointless for deletions because it
doesn't protect us from incomplete objects. This happens because it removes
the version information from metadata after stabilization. Deletions require
"3-phase" process with a potentially very long 3rd phase.

So, deletions will be allowed to generate degraded and incomplete objects,
and for it to not affect users' ability to delete something, the cluster
will allow to delete whole inodes while storing a list of them in etcd.
Proper TRIM will be impossible until the implementation of the aforementioned
"3-phase" process, though.

By the way, this change also fixes a possible write stall after rebalancing
which was caused by the lack of "stabilize delete" operations.
2020-06-02 23:45:22 +03:00
lp Handle reweights in mon 2020-05-22 12:52:27 +03:00
Make-gen.pl Auto-generate C++ header dependencies 2020-06-01 00:25:25 +03:00
Makefile Auto-generate C++ header dependencies 2020-06-01 00:25:25 +03:00
allocator.cpp Fix linear overwrite, make metadata writes ordered, ignore older entries when recovering journal 2019-11-28 22:36:38 +03:00
allocator.h Fix metadata area size calculation, print free space, wait for free space 2019-11-28 20:23:27 +03:00
base64.cpp Fix PG loading - now it works, at least once 2020-04-17 02:33:44 +03:00
base64.h Add base64 implementation 2020-04-11 12:06:18 +03:00
blockstore.cpp Implement basic OSD status reporting to Consul 2020-04-14 14:52:06 +03:00
blockstore.h Use 4K blockstore block by default, use MEM_ALIGNMENT in osd code 2020-04-14 19:19:56 +03:00
blockstore_flush.cpp Fix BS_OP_DELETE (the implementation was untested up to this point) 2020-06-02 14:26:01 +03:00
blockstore_flush.h Fix BS_OP_DELETE (the implementation was untested up to this point) 2020-06-02 14:26:01 +03:00
blockstore_impl.cpp Fix BS_OP_DELETE (the implementation was untested up to this point) 2020-06-02 14:26:01 +03:00
blockstore_impl.h Remove duplicate code between blockstore_{rollback,stable} and blockstore_init 2020-06-02 20:37:00 +03:00
blockstore_init.cpp Make deletions instantly stable 2020-06-02 23:45:22 +03:00
blockstore_init.h Extract alignments to options 2020-01-16 00:54:25 +03:00
blockstore_journal.cpp Fix possible write stall 2020-06-01 16:18:23 +03:00
blockstore_journal.h Die when journal_sector_buffer_count is too small 2020-05-24 17:26:47 +03:00
blockstore_open.cpp Several bug fixes 2020-05-24 01:51:35 +03:00
blockstore_read.cpp Fix crashes, print some stats 2020-03-31 17:55:31 +03:00
blockstore_rollback.cpp Remove duplicate code between blockstore_{rollback,stable} and blockstore_init 2020-06-02 20:37:00 +03:00
blockstore_stable.cpp Remove duplicate code between blockstore_{rollback,stable} and blockstore_init 2020-06-02 20:37:00 +03:00
blockstore_sync.cpp Make deletions instantly stable 2020-06-02 23:45:22 +03:00
blockstore_write.cpp Make deletions instantly stable 2020-06-02 23:45:22 +03:00
cluster_client.cpp Fix canceling of write operations on PG re-peer (which led to use-after-free, too...) 2020-06-01 16:18:14 +03:00
cluster_client.h Fix canceling of write operations on PG re-peer (which led to use-after-free, too...) 2020-06-01 16:18:14 +03:00
crc32c.c Continue fio engine 2019-11-26 00:03:09 +03:00
crc32c.h Add optimized crc32c 2019-11-25 02:30:06 +03:00
dump_journal.cpp Fix some logging 2020-03-07 16:41:53 +03:00
etcd_state_client.cpp Extract peer connect and read-write loop into a separate file (to be shared with the client library) 2020-05-26 22:11:30 +03:00
etcd_state_client.h Extract peer connect and read-write loop into a separate file (to be shared with the client library) 2020-05-26 22:11:30 +03:00
fio_engine.cpp CONFIG_HAVE_GETTID 2020-03-25 01:20:20 +03:00
fio_sec_osd.cpp CONFIG_HAVE_GETTID 2020-03-25 01:20:20 +03:00
http_client.cpp Oh crap, got SIGPIPE. Add MSG_NOSIGNAL 2020-06-02 11:41:08 +03:00
http_client.h Extract HTTP client functions from osd_t 2020-05-21 11:39:01 +03:00
lambda_size.cpp c++ lambda size test 2019-11-13 22:36:12 +03:00
object_id.h Implement read-modify-write calculation and extract it into a separate file 2020-02-23 02:11:43 +03:00
osd.cpp Slightly cleanup socket send/receive code 2020-05-31 15:03:27 +03:00
osd.h Make deletions instantly stable 2020-06-02 23:45:22 +03:00
osd_client.cpp Rename osd_op_t.op to req 2020-02-23 23:21:17 +03:00
osd_cluster.cpp Fix bind_address reporting 2020-05-27 10:58:40 +03:00
osd_flush.cpp Do not die if a peer is already stopped on flush error 2020-06-01 23:07:08 +03:00
osd_id.h Implement read-modify-write calculation and extract it into a separate file 2020-02-23 02:11:43 +03:00
osd_main.cpp Implement PG state locking and PG moving in response to etcd events 2020-04-29 22:23:38 +03:00
osd_ops.h Allow to specify multiple etcd addresses 2020-05-25 16:30:05 +03:00
osd_peering.cpp Fix canceling of write operations on PG re-peer (which led to use-after-free, too...) 2020-06-01 16:18:14 +03:00
osd_peering_pg.cpp Simplify handle_primary_subop() arguments 2020-06-02 18:44:23 +03:00
osd_peering_pg.h Extract "state-watching" etcd client into a separate file 2020-05-22 12:38:40 +03:00
osd_peering_pg_test.cpp Implement PG state locking and PG moving in response to etcd events 2020-04-29 22:23:38 +03:00
osd_primary.cpp Make deletions instantly stable 2020-06-02 23:45:22 +03:00
osd_primary.h Split osd_primary.cpp 2020-05-03 11:04:20 +03:00
osd_primary_subops.cpp Simplify handle_primary_subop() arguments 2020-06-02 18:44:23 +03:00
osd_receive.cpp Fix canceling of write operations on PG re-peer (which led to use-after-free, too...) 2020-06-01 16:18:14 +03:00
osd_rmw.cpp Several bug fixes 2020-05-24 01:51:35 +03:00
osd_rmw.h (Almost) Implement misplaced recovery, integrating it into calc_rmw() 2020-04-05 15:50:53 +03:00
osd_rmw_test.cpp Fix osd_rmw object recovery case (len==0) 2020-05-23 15:43:37 +03:00
osd_secondary.cpp Free op->bs_op manually 2020-05-25 15:31:22 +03:00
osd_send.cpp Fix canceling of write operations on PG re-peer (which led to use-after-free, too...) 2020-06-01 16:18:14 +03:00
osd_test.cpp Simplify handle_primary_subop() arguments 2020-06-02 18:44:23 +03:00
pg_states.cpp Extract "state-watching" etcd client into a separate file 2020-05-22 12:38:40 +03:00
pg_states.h Extract "state-watching" etcd client into a separate file 2020-05-22 12:38:40 +03:00
ringloop.cpp Implement simple websocket client 2020-04-25 23:11:50 +03:00
ringloop.h Implement simple websocket client 2020-04-25 23:11:50 +03:00
rw_blocking.cpp Use writev in libfio_sec_osd 2020-03-02 21:17:21 +03:00
rw_blocking.h Use writev in libfio_sec_osd 2020-03-02 21:17:21 +03:00
stub_bench.cpp Add simple "stub bench" using sync I/O 2020-03-01 23:00:46 +03:00
stub_osd.cpp Move uint8_t[] buffers into any_op_t/any_reply_t 2020-02-23 23:21:17 +03:00
test.cpp Hash-based PG distribution experiments 2020-03-17 18:52:39 +03:00
test_allocator.cpp Fix allocator bug 2019-11-27 01:12:25 +03:00
test_blockstore.cpp Make [un]register_consumer operate on pointers, rename get_loop_again() to has_work() 2020-03-04 21:00:20 +03:00
test_pattern.h Make basic primary-write work 2020-02-25 02:55:58 +03:00
timerfd_interval.cpp Make [un]register_consumer operate on pointers, rename get_loop_again() to has_work() 2020-03-04 21:00:20 +03:00
timerfd_interval.h Add simple timer manager 2020-04-15 13:41:44 +03:00
timerfd_manager.cpp Fix timerfd_manager triggering of multiple times at the same time 2020-05-23 15:43:37 +03:00
timerfd_manager.h Fix timerfd_manager triggering of multiple times at the same time 2020-05-23 15:43:37 +03:00
xor.h Stripe read reconstruction 2020-01-31 13:46:23 +03:00