// Copyright (c) Vitaliy Filippov, 2019+ // License: VNPL-1.1 (see README.md for details) #pragma once #include "osd.h" #include "osd_rmw.h" #define SUBMIT_READ 0 #define SUBMIT_RMW_READ 1 #define SUBMIT_WRITE 2 struct unstable_osd_num_t { osd_num_t osd_num; int start, len; }; struct osd_primary_op_data_t { int st = 0; pg_num_t pg_num; object_id oid; uint64_t target_ver; uint64_t fact_ver = 0; uint64_t scheme = 0; int n_subops = 0, done = 0, errors = 0, epipe = 0; int degraded = 0, pg_size, pg_data_size; osd_rmw_stripe_t *stripes; osd_op_t *subops = NULL; uint64_t *prev_set = NULL; pg_osd_set_state_t *object_state = NULL; // for sync. oops, requires freeing std::vector *unstable_write_osds = NULL; pool_pg_num_t *dirty_pgs = NULL; int dirty_pg_count = 0; osd_num_t *dirty_osds = NULL; int dirty_osd_count = 0; obj_ver_id *unstable_writes = NULL; obj_ver_osd_t *copies_to_delete = NULL; int copies_to_delete_count = 0; }; bool contains_osd(osd_num_t *osd_set, uint64_t size, osd_num_t osd_num);