Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DAOS-16111 rebuild: uniform identifier in logs #14726

Draft
wants to merge 3 commits into
base: release/2.6
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,9 @@ def scons():

deps_env = Environment()

# Silence deprecation warning so it doesn't fail the build
SetOption('warn', ['no-python-version'])

add_command_line_options()

# Scons strips out the environment, however that is not always desirable so add back in
Expand Down
27 changes: 0 additions & 27 deletions src/include/daos_srv/daos_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -676,33 +676,6 @@ obj_tree_insert(daos_handle_t toh, uuid_t co_uuid, uint64_t tgt_id,
int
obj_tree_destroy(daos_handle_t btr_hdl);

/* Per xstream migrate status */
struct ds_migrate_status {
uint64_t dm_rec_count; /* migrated record size */
uint64_t dm_obj_count; /* migrated object count */
uint64_t dm_total_size; /* migrated total size */
int dm_status; /* migrate status */
uint32_t dm_migrating:1; /* if it is migrating */
};

int
ds_migrate_query_status(uuid_t pool_uuid, uint32_t ver, uint32_t generation,
struct ds_migrate_status *dms);
int
ds_object_migrate_send(struct ds_pool *pool, uuid_t pool_hdl_uuid, uuid_t cont_uuid,
uuid_t cont_hdl_uuid, int tgt_id, uint32_t version, unsigned int generation,
uint64_t max_eph, daos_unit_oid_t *oids, daos_epoch_t *ephs,
daos_epoch_t *punched_ephs, unsigned int *shards, int cnt,
uint32_t new_gl_ver, unsigned int migrate_opc, uint64_t *enqueue_id,
uint32_t *max_delay);
int
ds_migrate_object(struct ds_pool *pool, uuid_t po_hdl, uuid_t co_hdl, uuid_t co_uuid,
uint32_t version, uint32_t generation, uint64_t max_eph, uint32_t opc,
daos_unit_oid_t *oids, daos_epoch_t *epochs, daos_epoch_t *punched_epochs,
unsigned int *shards, uint32_t count, unsigned int tgt_idx, uint32_t new_gl_ver);
void
ds_migrate_stop(struct ds_pool *pool, uint32_t ver, unsigned int generation);

int
obj_layout_diff(struct pl_map *map, daos_unit_oid_t oid, uint32_t new_ver, uint32_t old_ver,
struct daos_obj_md *md, uint32_t *tgts, uint32_t *shards, int array_size);
Expand Down
28 changes: 28 additions & 0 deletions src/include/daos_srv/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,32 @@ int ds_obj_enum_pack(vos_iter_param_t *param, vos_iter_type_t type, bool recursi
struct vos_iter_anchors *anchors, struct ds_obj_enum_arg *arg,
enum_iterate_cb_t iter_cb, struct dtx_handle *dth);

/* Per xstream migrate status */
struct ds_migrate_status {
uint64_t dm_rec_count; /* migrated record size */
uint64_t dm_obj_count; /* migrated object count */
uint64_t dm_total_size; /* migrated total size */
int dm_status; /* migrate status */
uint32_t dm_migrating : 1; /* if it is migrating */
};

int
ds_migrate_query_status(uuid_t pool_uuid, uint32_t ver, unsigned int generation, int op,
struct ds_migrate_status *dms);

int
ds_object_migrate_send(struct ds_pool *pool, uuid_t pool_hdl_uuid, uuid_t cont_uuid,
uuid_t cont_hdl_uuid, int tgt_id, uint32_t version, unsigned int generation,
uint64_t max_eph, daos_unit_oid_t *oids, daos_epoch_t *ephs,
daos_epoch_t *punched_ephs, unsigned int *shards, int cnt,
uint32_t new_gl_ver, unsigned int migrate_opc, uint64_t *enqueue_id,
uint32_t *max_delay);
int
ds_migrate_object(struct ds_pool *pool, uuid_t po_hdl, uuid_t co_hdl, uuid_t co_uuid,
uint32_t version, uint32_t generation, uint64_t max_eph, uint32_t opc,
daos_unit_oid_t *oids, daos_epoch_t *epochs, daos_epoch_t *punched_epochs,
unsigned int *shards, uint32_t count, unsigned int tgt_idx, uint32_t new_gl_ver);
void
ds_migrate_stop(struct ds_pool *pool, uint32_t ver, unsigned int generation);

#endif /* __DAOS_SRV_OBJ_H__ */
47 changes: 47 additions & 0 deletions src/include/daos_srv/rebuild.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,53 @@ typedef enum {
(rb_op) == RB_OP_NONE ? "None" : \
"Unknown")

/* Common rebuild identifying information for INFO/DEBUG logging:
* rb=<pool_uuid>/<rebuild_ver>/<rebuild_gen>/<opstring>
*/
#define DF_RB "rb=" DF_UUID "/%u/%u/%s"

/* Full rebuild identifying information includes <leader_rank>/<term>
* Instead of this, use DF_RB most of the time (use this for leader change scenarios, etc.)
*/
#define DF_RBF DF_RB " ld=%u/" DF_U64

/* arguments for log rebuild identifier given a struct rebuild_global_pool_tracker * */
#define DP_RB_RGT(rgt) \
DP_UUID((rgt)->rgt_pool_uuid), (rgt)->rgt_rebuild_ver, (rgt)->rgt_rebuild_gen, \
RB_OP_STR((rgt)->rgt_opc)

/* arguments for log rebuild identifier given a struct rebuild_tgt_pool_tracker *rpt */
#define DP_RB_RPT(rpt) \
DP_UUID((rpt)->rt_pool_uuid), (rpt)->rt_rebuild_ver, (rpt)->rt_rebuild_gen, \
RB_OP_STR((rpt)->rt_rebuild_op)
#define DP_RBF_RPT(rpt) DP_RB_RPT(rpt), (rpt)->rt_leader_rank, (rpt)->rt_leader_term

/* arguments for log rebuild identifier given a struct rebuild_scan_in *rsin */
#define DP_RB_RSI(rsi) \
DP_UUID((rsi)->rsi_pool_uuid), (rsi)->rsi_rebuild_ver, (rsi)->rsi_rebuild_gen, \
RB_OP_STR((rsi)->rsi_rebuild_op)
#define DP_RBF_RSI(rsi) DP_RB_RSI(rsi), (rsi)->rsi_master_rank, (rsi)->rsi_leader_term

/* arguments for log rebuild identifier given a struct migrate_query_arg * */
#define DP_RB_MQA(mqa) \
DP_UUID((mqa)->pool_uuid), (mqa)->version, (mqa)->generation, RB_OP_STR((mqa)->rebuild_op)
#define DP_RBF_MQA(mqa) DP_RB_MQA(mqa), (mqa)->leader_rank, (mqa)->leader_term

/* arguments for log rebuild identifier given a struct obj_migrate_in *omi */
#define DP_RB_OMI(omi) \
DP_UUID((omi)->om_pool_uuid), (omi)->om_version, (omi)->om_generation, \
RB_OP_STR((omi)->om_opc)

/* arguments for log rebuild identifier given a struct migrate_pool_tls *mpt */
#define DP_RB_MPT(mpt) \
DP_UUID((mpt)->mpt_pool_uuid), (mpt)->mpt_version, (mpt)->mpt_generation, \
RB_OP_STR((mpt)->mpt_opc)

/* arguments for log rebuild identifier given a struct migrate_one *mro */
#define DP_RB_MRO(mro) \
DP_UUID((mro)->mo_pool_uuid), (mro)->mo_pool_tls_version, (mro)->mo_generation, \
RB_OP_STR((mro)->mo_opc)

int ds_rebuild_schedule(struct ds_pool *pool, uint32_t map_ver,
daos_epoch_t stable_eph, uint32_t layout_version,
struct pool_target_id_list *tgts,
Expand Down
Loading
Loading