+/*
+ * Return the biggest subbuffer size of all channels in the given session.
+ */
+static uint64_t get_session_max_subbuf_size(struct ltt_session *session)
+{
+ uint64_t max_size = 0;
+
+ assert(session);
+
+ if (session->kernel_session) {
+ struct ltt_kernel_channel *chan;
+ struct ltt_kernel_session *ksess = session->kernel_session;
+
+ /*
+ * For each channel, add to the max size the size of each subbuffer
+ * multiplied by their sized.
+ */
+ cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
+ if (chan->channel->attr.subbuf_size > max_size) {
+ max_size = chan->channel->attr.subbuf_size;
+ }
+ }
+ }
+
+ if (session->ust_session) {
+ struct lttng_ht_iter iter;
+ struct ltt_ust_channel *uchan;
+ struct ltt_ust_session *usess = session->ust_session;
+
+ cds_lfht_for_each_entry(usess->domain_global.channels->ht, &iter.iter,
+ uchan, node.node) {
+ if (uchan->attr.subbuf_size > max_size) {
+ max_size = uchan->attr.subbuf_size;
+ }
+ }
+ }
+
+ return max_size;
+}
+