X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-ust.cpp;h=6f423c9c6485d459afb5e452d5c0be476dd862a2;hb=b0f2e8db59fcadc8f4b06a94175792be3c431004;hp=de368a3baa054a25616f342017b0d1fdc3ecf1f4;hpb=64803277bbdbe0a943360d918298a48157d9da55;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-ust.cpp b/src/bin/lttng-sessiond/trace-ust.cpp index de368a3ba..6f423c9c6 100644 --- a/src/bin/lttng-sessiond/trace-ust.cpp +++ b/src/bin/lttng-sessiond/trace-ust.cpp @@ -24,6 +24,8 @@ #include "ust-app.hpp" #include "agent.hpp" +namespace lsu = lttng::sessiond::ust; + /* * Match function for the events hash table lookup. * @@ -1353,6 +1355,33 @@ void trace_ust_delete_channel(struct lttng_ht *ht, LTTNG_ASSERT(!ret); } +int trace_ust_regenerate_metadata(struct ltt_ust_session *usess) +{ + int ret = 0; + struct buffer_reg_uid *uid_reg = NULL; + struct buffer_reg_session *session_reg = NULL; + + rcu_read_lock(); + cds_list_for_each_entry(uid_reg, &usess->buffer_reg_uid_list, lnode) { + lsu::registry_session *registry; + + session_reg = uid_reg->registry; + registry = session_reg->reg.ust; + + try { + registry->regenerate_metadata(); + } catch (const std::exception& ex) { + ERR("Failed to regenerate user space session metadata: %s", ex.what()); + ret = -1; + goto end; + } + } + +end: + rcu_read_unlock(); + return ret; +} + /* * Iterate over a hash table containing channels and cleanup safely. */