Fix: only create UST metadata on start trace
[lttng-tools.git] / src / bin / lttng-sessiond / channel.c
index d826125c9b8c7acaf5a57f294aeb7d29f78803ea..fc343f5910a8babab0737a90955284209438061f 100644 (file)
@@ -65,6 +65,7 @@ struct lttng_channel *channel_new_default_attr(int dom,
                chan->attr.output = DEFAULT_KERNEL_CHANNEL_OUTPUT;
                chan->attr.switch_timer_interval = DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER;
                chan->attr.read_timer_interval = DEFAULT_KERNEL_CHANNEL_READ_TIMER;
+               chan->attr.live_timer_interval = DEFAULT_KERNEL_CHANNEL_LIVE_TIMER;
                break;
        case LTTNG_DOMAIN_UST:
                switch (type) {
@@ -76,6 +77,8 @@ struct lttng_channel *channel_new_default_attr(int dom,
                                DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER;
                        chan->attr.read_timer_interval =
                                DEFAULT_UST_UID_CHANNEL_READ_TIMER;
+                       chan->attr.live_timer_interval =
+                               DEFAULT_UST_UID_CHANNEL_LIVE_TIMER;
                        break;
                case LTTNG_BUFFER_PER_PID:
                default:
@@ -86,6 +89,8 @@ struct lttng_channel *channel_new_default_attr(int dom,
                                DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER;
                        chan->attr.read_timer_interval =
                                DEFAULT_UST_PID_CHANNEL_READ_TIMER;
+                       chan->attr.live_timer_interval =
+                               DEFAULT_UST_UID_CHANNEL_LIVE_TIMER;
                        break;
                }
                break;
@@ -184,6 +189,12 @@ int channel_kernel_create(struct ltt_kernel_session *ksession,
                attr = defattr;
        }
 
+       if (ksession->snapshot_mode) {
+               /* Force channel attribute for snapshot mode. */
+               attr->attr.overwrite = 1;
+               attr->attr.output = LTTNG_EVENT_MMAP;
+       }
+
        /* Channel not found, creating it */
        ret = kernel_create_channel(ksession, attr);
        if (ret < 0) {
@@ -263,6 +274,12 @@ int channel_ust_create(struct ltt_ust_session *usess,
                attr = defattr;
        }
 
+       if (usess->snapshot_mode) {
+               /* Force channel attribute for snapshot mode. */
+               attr->attr.overwrite = 1;
+               attr->attr.output = LTTNG_EVENT_MMAP;
+       }
+
        /*
         * Validate UST buffer size and number of buffers: must both be power of 2
         * and nonzero. We validate right here for UST, because applications will
@@ -349,7 +366,10 @@ int channel_ust_create(struct ltt_ust_session *usess,
 
        /* Adding the channel to the channel hash table. */
        rcu_read_lock();
-       lttng_ht_add_unique_str(usess->domain_global.channels, &uchan->node);
+       if (strncmp(uchan->name, DEFAULT_METADATA_NAME,
+                               sizeof(uchan->name))) {
+               lttng_ht_add_unique_str(usess->domain_global.channels, &uchan->node);
+       }
        rcu_read_unlock();
 
        DBG2("Channel %s created successfully", uchan->name);
This page took 0.024289 seconds and 4 git commands to generate.