lttng-tools.git
11 years agoFix: lttng list command with network path
David Goulet [Fri, 17 Aug 2012 16:47:16 +0000 (12:47 -0400)] 
Fix: lttng list command with network path

With network consumer, the session path was simply NULL or set to the
wrong local filesystem path when a consumer was set to use the network.

This commit adds the support for network path description when a lttng
list command is received.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoDeny register consumer if one exists
David Goulet [Thu, 16 Aug 2012 20:12:12 +0000 (16:12 -0400)] 
Deny register consumer if one exists

Is a LTTNG_REGISTER_CONSUMER command is received and a consumer is
already spawned, the command is denied returning a kernel consumer
error.

CC: Julien Desfossez <julien.desfossez@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Subdirectory handling for lttng and sessiond
David Goulet [Thu, 16 Aug 2012 18:57:13 +0000 (14:57 -0400)] 
Fix: Subdirectory handling for lttng and sessiond

The subdirectory creation was not right for a number of scenarios. With
this commit, if the user defines a path (either local or remote), the
session name will NOT be added to the path.

To handle the timestamp creation of the directory, a hidden function was
added to the lttng-ctl (meaning not visible through lttng.h) which takes
the date and time as a string and append it to the URI subdirectory if
none was provided for a network destination. This function is declared
as extern in the lttng client so it could link to it through the
liblttng-ctl (_lttng_create_session_ext).

It allows the timestamp of a session to be created on the client side
and keep the lttng_create_session() behavior intact meaning if a path is
define by the user when using the API directly, the traces are written
in that path without an extra session name directory.

There is one case where the timestamp is generated on the daemon side.
When creating a session with a local filesystem destination and then
switching to a network consumer, at that time the timestamp is
generated.

The real problematic, and why this has been done this way, is because we
can't transfer the timestamp between the client and the session daemon.
The only possible way that could be achieve right now is by parsing the
subdirectory of the URI containing the session name and timestamp
appended. This could be error prone and bring false negative.

CC: Julien Desfossez <julien.desfossez@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoCleanup: Remove unused get_default_session_name()
Christian Babeux [Wed, 15 Aug 2012 16:39:31 +0000 (12:39 -0400)] 
Cleanup: Remove unused get_default_session_name()

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Invalid free on session_name when destroying session
Christian Babeux [Wed, 15 Aug 2012 16:39:30 +0000 (12:39 -0400)] 
Fix: Invalid free on session_name when destroying session

The session_name should not be free(3) if the user has specified a
session name on the command line. Also, the caller is responsible to
free the allocated string when calling get_session_name().  Handle both
cases gracefully.

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: 32-bit print format type mismatch warnings
Mathieu Desnoyers [Thu, 16 Aug 2012 19:17:11 +0000 (15:17 -0400)] 
Fix: 32-bit print format type mismatch warnings

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoCleanup: symbols in parser protected -> hidden
Mathieu Desnoyers [Thu, 16 Aug 2012 14:51:01 +0000 (10:51 -0400)] 
Cleanup: symbols in parser protected -> hidden

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: set kernel consumer output directory
David Goulet [Thu, 16 Aug 2012 14:46:26 +0000 (10:46 -0400)] 
Fix: set kernel consumer output directory

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd commented debug lines to test
David Goulet [Wed, 15 Aug 2012 20:50:27 +0000 (16:50 -0400)] 
Add commented debug lines to test

Useful when a test fails, just uncomment the lines :)

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: multiple consumer locking problems
David Goulet [Wed, 15 Aug 2012 20:41:37 +0000 (16:41 -0400)] 
Fix: multiple consumer locking problems

First, a lot of rcu_read_unlock() were missing the consumer command
handler which could make a rcu lock and return on error without
unlocking.

Fix goto error path in the consumer.

Fix a missing lock control socket mutex.

Fix memory leaks in a UST session where the consumers output object were
not freed during a destroy command.

Add a relayd sockets sent flag so we don't resend existing sockets to
the consumer during an enable_consumer command.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoBackport HT fixes from urcu upstream
David Goulet [Wed, 15 Aug 2012 15:47:06 +0000 (11:47 -0400)] 
Backport HT fixes from urcu upstream

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoMake the configure check for ustctl_set_filter
David Goulet [Wed, 15 Aug 2012 15:10:36 +0000 (11:10 -0400)] 
Make the configure check for ustctl_set_filter

This function call will be part of the 2.1 release and lttng-tools 2.1
needs lttng-ust-ctl 2.1 for user space tracing to work.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix typos in uri_switch test
David Goulet [Wed, 15 Aug 2012 14:41:46 +0000 (10:41 -0400)] 
Fix typos in uri_switch test

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoNew URI switching tests
Christian Babeux [Tue, 14 Aug 2012 22:02:32 +0000 (18:02 -0400)] 
New URI switching tests

test_uri_switch_localhost_folder:
Random switching of the ouput folder for streaming on localhost.

test_uri_switch_file_network:
Create a session with a file:// URI and enable the consumer with a
net:// URI.

test_uri_switch_network_file:
Create a session with a net:// URI and enable the consumer with a
file:// URI.

All tests support IPv4 and IPv6 streaming targets.

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Possible invalid read on string in set_ip_address()
David Goulet [Tue, 14 Aug 2012 21:14:04 +0000 (17:14 -0400)] 
Fix: Possible invalid read on string in set_ip_address()

Acked-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Use Python 2.x for the run-report script
Christian Babeux [Tue, 14 Aug 2012 20:33:39 +0000 (16:33 -0400)] 
Fix: Use Python 2.x for the run-report script

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoActivate streaming tests in make check
David Goulet [Tue, 14 Aug 2012 21:08:12 +0000 (17:08 -0400)] 
Activate streaming tests in make check

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Memory leaks in uri_parsing unit tests.
Christian Babeux [Tue, 14 Aug 2012 20:33:41 +0000 (16:33 -0400)] 
Fix: Memory leaks in uri_parsing unit tests.

lttng_uri need to be free'd by calling uri_free().

Add: Unit tests for uri comparison (uri_cmp).

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoExtend API and remove lttng_uri from lttng.h
David Goulet [Tue, 7 Aug 2012 19:47:19 +0000 (15:47 -0400)] 
Extend API and remove lttng_uri from lttng.h

This is a big commit but actually not adding much.

First, struct lttng_uri is removed from lttng.h and replaced by calls
using string URL. The lttng_set_consumer_url is changed to "_url" taking
an handle, a control and a data string URL. You can find the definition
in proposal doc/proposals/0004-lttng-address-api.txt.

The lttng_create_session_uri is removed and the path from the original
lttng_create_session is now used to either pass a local filesystem full
path or a string URL.

Multiple fixes in uri_parse() also especially for IPv6 where address
MUST be enclosed in brackets [] in the string representation.

The help of lttng create and enable-consumer is updated and improved.

Also, the enable-consumer command can now be used without a domain
switch (-u/-k) so the destination URL is set to the global tracing
session and on both UST and kernel session if there is an existing
consumer.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: bad file descriptor on close in health check
David Goulet [Tue, 14 Aug 2012 20:13:00 +0000 (16:13 -0400)] 
Fix: bad file descriptor on close in health check

The new socket used to store the accept() socket was not initialized
making the close() failed if NO health check command was previously
done.

Reported-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: remove adjustment on written var for metadata
David Goulet [Tue, 14 Aug 2012 17:12:24 +0000 (13:12 -0400)] 
Fix: remove adjustment on written var for metadata

This was generating the following error each time metadata was streamed
over the network.

    Error: Error writing to tracefile

The return value was off by 8 bytes which is the header stream id size.
However, the "written" variable is not used in the metadata command to
the relayd so there is no use of updating it to fit the expected len of
the mmap() caller.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoUpdate proposal 0004-lttng-address-api
David Goulet [Tue, 14 Aug 2012 14:30:26 +0000 (10:30 -0400)] 
Update proposal 0004-lttng-address-api

Change the lttng_set_consumer_url(...) to use two URL arguments for the
control and data.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Missing libs dependencies in configure check for lttng-ust-ctl
Christian Babeux [Fri, 3 Aug 2012 20:31:28 +0000 (16:31 -0400)] 
Fix: Missing libs dependencies in configure check for lttng-ust-ctl

The lttng-ust-ctl library depends on liburcu-{common,bp,cds}.  The
AC_CHECK_LIBRARY macro can't automatically resolve dependents libraries
(ala libtool), so any additionnals dependencies must be manually
specified.

Also, the AC_CHECK_LIB action-if-found case for the lttng-ust-ctl check
is modified to have a similar behavior as the default action, which is
to define HAVE_LIBxxx and append -lxxx to $LIBS, *except* for the later
step. This is to ensure that any future addition of AC_CHECK_LIB after
the one for lttng-ust-ctl will not need to append the liburcu
dependencies or fail unexpectedly.

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Libtool fails to find dependent libraries when cross-compiling lttng-tools
Christian Babeux [Fri, 3 Aug 2012 20:31:27 +0000 (16:31 -0400)] 
Fix: Libtool fails to find dependent libraries when cross-compiling lttng-tools

This problem arise when cross compiling and linking libraries with
indirect libraries dependencies (such as liblttng-ust). This "bug" is
caused by an upstream modification in the libtool package on Debian
system. The libtool "link_all_deplibs" flag is set to "no" by default
on linux targets (AFAIK, other distros set it to "unknown").

The chosen solution is to detect such cases via the configure script
and automagically patch the libtool.m4 by forcing the "link_all_deplibs"
to "unknown".

This fixup can be disabled with the appropriate configure flag:

./configure --disable-libtool-linkdep-fixup

Sample configure output on affected systems:

checking for occurence(s) of link_all_deplibs = no in
 ./config/libtool.m4... 3
configure: WARNING: the detected libtool will not link all
     dependencies, forcing link_all_deplibs = unknown

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: protect visibility of filter-parser functions
Mathieu Desnoyers [Fri, 10 Aug 2012 21:19:53 +0000 (17:19 -0400)] 
Fix: protect visibility of filter-parser functions

Some functions share the same name between ctf-parser/lexer and
filter-parser/lexer.

This patch protects the visibility of the functions with the same name
to avoid linkage confusions.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
11 years agoFix: Wrong domain used when initializing IPv6 sockets
Christian Babeux [Fri, 10 Aug 2012 17:22:52 +0000 (13:22 -0400)] 
Fix: Wrong domain used when initializing IPv6 sockets

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Off by one in lttcomm_sock_domain enum
Christian Babeux [Fri, 10 Aug 2012 17:22:51 +0000 (13:22 -0400)] 
Fix: Off by one in lttcomm_sock_domain enum

The wrong value is used to lookup the socket creation function in
net_families causing a segfault when using IPv6.

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd lttng URL proposal for the public API
David Goulet [Tue, 7 Aug 2012 16:08:30 +0000 (12:08 -0400)] 
Add lttng URL proposal for the public API

Initial import after three round of review on lttng-dev mailing list.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoRevert "Cleanup: YYPARSE_PARAM and YYLEX_PARAM are deprecated in bison 2.6"
Mathieu Desnoyers [Tue, 7 Aug 2012 17:40:28 +0000 (13:40 -0400)] 
Revert "Cleanup: YYPARSE_PARAM and YYLEX_PARAM are deprecated in bison 2.6"

This reverts commit 9d3e6f62fde8c9ca7335ba12ee4560bc887b41a5.

Still needed for bison 2.5.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoCleanup: YYPARSE_PARAM and YYLEX_PARAM are deprecated in bison 2.6
Mathieu Desnoyers [Tue, 7 Aug 2012 15:23:21 +0000 (11:23 -0400)] 
Cleanup: YYPARSE_PARAM and YYLEX_PARAM are deprecated in bison 2.6

See https://lists.gnu.org/archive/html/info-gnu/2012-07/msg00011.html

Reported-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter fix: support bison 2.6
Mathieu Desnoyers [Tue, 7 Aug 2012 15:19:52 +0000 (11:19 -0400)] 
Filter fix: support bison 2.6

Bison 2.6 generates warnings and errors if filter-ast.h is not included
before filter-parser.h.

Reported-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoCleanup: Remove misplaced config.h include
Mathieu Desnoyers [Tue, 7 Aug 2012 14:43:18 +0000 (10:43 -0400)] 
Cleanup: Remove misplaced config.h include

config.h should _always_ be included first, before system headers, to
ensure coherent size_t across the file.

We force the config.h inclusion by the compiler, so this is not an issue
(configure.ac: DEFAULT_INCLUDES="-I\$(top_srcdir) -I\$(top_builddir)
-I\$(top_builddir)/src -I\$(top_builddir)/include -include config.h"),
but let's remove this misleading line of code.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix socket lock and PID in register_consumer
David Goulet [Mon, 6 Aug 2012 17:57:31 +0000 (13:57 -0400)] 
Fix socket lock and PID in register_consumer

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd lttng address API proposal. Initial import
David Goulet [Tue, 31 Jul 2012 16:40:01 +0000 (12:40 -0400)] 
Add lttng address API proposal. Initial import

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoDivide read subbuffer consumer function
David Goulet [Tue, 31 Jul 2012 16:35:39 +0000 (12:35 -0400)] 
Divide read subbuffer consumer function

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoMerge mmap/splice fct. for both consumers
David Goulet [Mon, 30 Jul 2012 16:41:10 +0000 (12:41 -0400)] 
Merge mmap/splice fct. for both consumers

Between UST and kernel, there was duplicate portion of code for the mmap
and splice read subbuffer functions.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd consumer socket object and relayd commands
David Goulet [Thu, 26 Jul 2012 18:54:20 +0000 (14:54 -0400)] 
Add consumer socket object and relayd commands

This commit adds a consumer_socket object and a lock to access it. This
fixes the possible concurrent access to the consumer(s) socket between
threads in the session daemon.

This also introduce the use of a sequence number during streaming so the
relayd can know when to close the trace file according to the sent
versus the expected sequence number.

Introduce the close_stream command between the consumer and relayd. Upon
a destroy session or a stream that hung up, the consumer now sends the
close stream command indicating the last sequence number. The consumer
never closes the relayd sockets unless a destroy relayd command (new) is
received from the session daemon which occurs on a destroy session
command.

Some fixes here and there but overall the streaming synchronization
issues have been resolved.

Signed-off-by: David Goulet <dgoulet@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: relayd metadata size
Mathieu Desnoyers [Wed, 25 Jul 2012 21:39:12 +0000 (17:39 -0400)] 
Fix: relayd metadata size

Trying to see better how the metadata size was handled, I ended up doing
a couple of modifications to the size value sent by the sender: given
that this header contains a size value that should cover both the
metadata packet header size, and the following payload size (this is how
kernel splice sent behaves), I modified kernel/UST mmap to do the same.

I therefore changed the recently updated recv_metadata payload size
calculation to match the encoded size, which should hopefully work for
all kernel splice/mmap and UST mmap cases.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoMinor fix for the UST streaming test
David Goulet [Wed, 25 Jul 2012 21:03:47 +0000 (17:03 -0400)] 
Minor fix for the UST streaming test

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Off by uint64_t in the metadata transfer
David Goulet [Wed, 25 Jul 2012 20:59:30 +0000 (16:59 -0400)] 
Fix: Off by uint64_t in the metadata transfer

This patch also adds a couple of debug output along with this fix.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: consumer relay sender RCU usage
Mathieu Desnoyers [Wed, 25 Jul 2012 20:31:02 +0000 (16:31 -0400)] 
Fix: consumer relay sender RCU usage

* RCU read-side lock needs to be held across entire usage of the
  returned structure pointer, not just the lookup.
* Moving refcount inc/dec to uatomic ops. Theoretically not 100%
  required for now, but won't hurt when we move to multithread.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoAdd comments for the relayd ctrl socket mutex
David Goulet [Wed, 25 Jul 2012 17:21:14 +0000 (13:21 -0400)] 
Add comments for the relayd ctrl socket mutex

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoDeactivate streaming tests from make check
David Goulet [Wed, 25 Jul 2012 14:57:05 +0000 (10:57 -0400)] 
Deactivate streaming tests from make check

The new streaming tests fail so no need to make them global to the check
process until they are fixed for now or we'll cause problem(s) to our
packagers.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd unit tests for URIs
David Goulet [Wed, 25 Jul 2012 14:21:09 +0000 (10:21 -0400)] 
Add unit tests for URIs

Tests uri_parse() using multiple URI strings where some are bad and some
are well formed.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd UST and kernel streaming tests
David Goulet [Tue, 24 Jul 2012 22:31:58 +0000 (18:31 -0400)] 
Add UST and kernel streaming tests

Add four tests for network streaming. For user space, we have two tests
where tracing is started before and after the applications.

For kernel tests, we enable an event before and after the start command.

At this stage, some tests fails which indicates a bug.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: some error in uri.c were still using printf()
David Goulet [Wed, 25 Jul 2012 14:18:41 +0000 (10:18 -0400)] 
Fix: some error in uri.c were still using printf()

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: don't install the filter grammar test
David Goulet [Tue, 24 Jul 2012 19:55:32 +0000 (15:55 -0400)] 
Fix: don't install the filter grammar test

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd health counter to ust-app.c
David Goulet [Tue, 24 Jul 2012 17:34:37 +0000 (13:34 -0400)] 
Add health counter to ust-app.c

Any UST command can take an unknown amount of time to complete
especially with multiple applications and/or sessions even though it's
the correct behavior, the health check must not flag a bad health so
this patch adds a series of health code update to each ustctl actions in
ust-app.c.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: typo in time_diff() with nsec difference
David Goulet [Tue, 24 Jul 2012 17:37:10 +0000 (13:37 -0400)] 
Fix: typo in time_diff() with nsec difference

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd time validation to health check
Mathieu Desnoyers [Tue, 24 Jul 2012 15:52:36 +0000 (11:52 -0400)] 
Add time validation to health check

The health check code does not have a notion of "time flow": therefore,
two consecutive calls to lttng_health_check() might end up returning a
bad state (0) just because there was too little time between the
invocations.

Add some time information to the "last" snapshot, so we can do a time
delta between the current and last snapshot to figure out if we need to
report the thread as stalled or not.

At this point, a thread is considered stalled with a wait time of over
20 seconds.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: Multiple health monitoring fixes
Mathieu Desnoyers [Mon, 23 Jul 2012 18:00:42 +0000 (14:00 -0400)] 
Fix: Multiple health monitoring fixes

* Fix modulo operation bug on
  #define HEALTH_IS_IN_CODE(x) (x % HEALTH_POLL_VALUE) which is causing
  the check to think it is never within code.  (x % 1 always equals 0).
  Simplify this by using a simple & on the poll value, and remove the
  IS_IN_CODE, using ! on IS_IN_POLL instead (which removes nothing to
  clarity).

* Atomic operations should apply to at most "unsigned long" (32-bit on
  32-bit arch) rather than uint64_t.

* Separate the "error" condition from the counters. We clearly cannot
  use the "0" value as an error on 32-bit counters anymore, because they
  can easily wrap.

* Introduce "exit" condition, will be useful for state tracking in the
  future. Error and exit conditions implemented as flags.

* Add "APP_MANAGE" in addition to "APP_REG" health check, to monitor the
  app registration thread (which was missing, only the app manager
  thread was checked, under the name "APP_REG", which was misleading).

* Remove bogus usage of uatomic_xchg() in health_check_state():
  It is not needed to update the "last" value, since the last value is
  read and written to by a single thread. Moreover, this specific use of
  xchg was not exchanging anything: it was just setting the last value
  to the "current" one, and doing nothing with the return value.
  Whatever was expected to be achieved by using uatomic_xchg() clearly
  wasn't.

* Because the health check thread could still be answering a request
  concurrently sessiond teardown, we need to ensure that all threads
  only set the "error" condition if they reach teardown paths due to an
  actual error, not on "normal" teardown condition (thread quit pipe
  being closed). Flagging threads as being in error condition upon all
  exit paths would lead to false "errors" sent to the client, which we
  want to avoid, since the client could then think it needs to kill a
  sessiond when the sessiond might be in the process of gracefully
  restarting.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: relayd typo: lock -> unlock
Mathieu Desnoyers [Tue, 24 Jul 2012 15:39:19 +0000 (11:39 -0400)] 
Fix: relayd typo: lock -> unlock

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agofix: lttng-relayd: use appropriate RCU locking with hash tables
Mathieu Desnoyers [Tue, 24 Jul 2012 13:08:15 +0000 (09:08 -0400)] 
fix: lttng-relayd: use appropriate RCU locking with hash tables

RCU hash tables used in lttng-relayd use the auto-resize feature, which
is performed by concurrent call rcu worker threads. Therefore, we need
to protect the calls to the hash table with appropriate RCU read-side
locking, and use call_rcu to defer memory reclaim.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agolttng-relayd: memory management fixes, with cleanups
Mathieu Desnoyers [Tue, 24 Jul 2012 03:11:48 +0000 (23:11 -0400)] 
lttng-relayd: memory management fixes, with cleanups

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: relayd and sessiond: dispatch thread exit is shared across threads
Mathieu Desnoyers [Mon, 23 Jul 2012 15:31:34 +0000 (11:31 -0400)] 
Fix: relayd and sessiond: dispatch thread exit is shared across threads

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agofix: write EINTR handling
Mathieu Desnoyers [Mon, 23 Jul 2012 15:13:40 +0000 (11:13 -0400)] 
fix: write EINTR handling

Ensure that we always test for ret < 0 && errno == EINTR for each
write() call.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agorelayd: cleanup
Mathieu Desnoyers [Mon, 23 Jul 2012 15:03:12 +0000 (11:03 -0400)] 
relayd: cleanup

Make structure/array definition easier to extend by already placing
comma at the end of lists (this is much more regexp-friendly).

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoCode cleanup in the ust/kernel consumer file
David Goulet [Mon, 23 Jul 2012 15:03:08 +0000 (11:03 -0400)] 
Code cleanup in the ust/kernel consumer file

Generalize the send relayd socket function call for both UST and kernel.

Refactor code in ust-consumer.c which only moves code around and bring
no changes to the behavior.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agolttng-relayd.h: review update
Mathieu Desnoyers [Mon, 23 Jul 2012 14:48:45 +0000 (10:48 -0400)] 
lttng-relayd.h: review update

- Change field order to minimize padding.
- ifdef should follow lttng coding style. No _ prefix, because it is
  reserved to compiler.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoUpdate README, TODO and CodingStyle
David Goulet [Mon, 23 Jul 2012 14:07:46 +0000 (10:07 -0400)] 
Update README, TODO and CodingStyle

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix and update content of doc/ directory
David Goulet [Mon, 23 Jul 2012 13:42:13 +0000 (09:42 -0400)] 
Fix and update content of doc/ directory

Add lttng-relayd.8 to the Makefile.am

Create the proposals/ directory which contains pas and current proposals
(RFC) for any features/changes in lttng-tools code tree.

Add the streaming-howto.txt to the dist data.

Rename and update old RFCs and move them to proposals/ directory.
Incidently, remove the dev/ directory.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd enable/disable consumer command to bash completion
David Goulet [Mon, 23 Jul 2012 12:45:34 +0000 (08:45 -0400)] 
Add enable/disable consumer command to bash completion

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: relayd pipes should be closed on exit/error
Christian Babeux [Fri, 20 Jul 2012 19:26:47 +0000 (15:26 -0400)] 
Fix: relayd pipes should be closed on exit/error

Use the utils functions found in common/utils.h on pipes operations
(open/close).

Acked-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd missing options in help
Julien Desfossez [Fri, 20 Jul 2012 16:19:18 +0000 (12:19 -0400)] 
Add missing options in help

Patch from Christian to support the --help option and update to the
usage message to show we support -o,--output option.

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoCreate utils.c/.h in libcommon
David Goulet [Fri, 20 Jul 2012 15:37:24 +0000 (11:37 -0400)] 
Create utils.c/.h in libcommon

Move function from lttng/utils.h and lttng-session/utils.h in libcommon
so they can be used at large.

Simply link with libcommon and include common/utils.h.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoman page for lttng-relayd
Julien Desfossez [Fri, 20 Jul 2012 13:43:42 +0000 (09:43 -0400)] 
man page for lttng-relayd

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
11 years agosmall fixes on streaming-howto
Julien Desfossez [Fri, 20 Jul 2012 12:16:07 +0000 (08:16 -0400)] 
small fixes on streaming-howto

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
11 years agoSession daemon health check support
David Goulet [Wed, 18 Jul 2012 16:00:03 +0000 (12:00 -0400)] 
Session daemon health check support

This is the first commit for the health check feature of the session
daemon.

Add a lttng_health_check(...) call to the public API and return 0 if
everything is fine or 1 if some health problem for a component was
detected.

Using this API call, you can either choose to test a specific component
such as the client command thread, the consumer thread(s), kernel
thread, application registration thread or all of them at the same time.

This feature is NOT implemented with the lttng command line UI and it is
intended to be like so until a stable version is accepted by the
community.

NOTE: The API could change so be aware of possible changes up to the
2.1-stable release.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoCleanup: rename session list count to "next_uuid"
Mathieu Desnoyers [Tue, 17 Jul 2012 23:34:37 +0000 (19:34 -0400)] 
Cleanup: rename session list count to "next_uuid"

Clearly explain that this is not a counter, but rather a unique
identifier.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix typo: utils.sh
Mathieu Desnoyers [Tue, 17 Jul 2012 23:29:29 +0000 (19:29 -0400)] 
Fix typo: utils.sh

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: test: session list count cannot use "count" unique id
Mathieu Desnoyers [Tue, 17 Jul 2012 23:27:34 +0000 (19:27 -0400)] 
Fix: test: session list count cannot use "count" unique id

Fixes #305

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: specialize double-s64 binary comparators
Mathieu Desnoyers [Tue, 17 Jul 2012 19:08:04 +0000 (15:08 -0400)] 
Filter: specialize double-s64 binary comparators

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoAdd streaming howto
David Goulet [Tue, 17 Jul 2012 18:03:28 +0000 (14:03 -0400)] 
Add streaming howto

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFilter: add merge point test
Mathieu Desnoyers [Tue, 17 Jul 2012 17:49:08 +0000 (13:49 -0400)] 
Filter: add merge point test

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoUpdate README and add files to gitignore
David Goulet [Tue, 17 Jul 2012 17:20:35 +0000 (13:20 -0400)] 
Update README and add files to gitignore

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoDocument filter (help and manpage)
Mathieu Desnoyers [Tue, 17 Jul 2012 15:26:54 +0000 (11:26 -0400)] 
Document filter (help and manpage)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: filter: remove dependency on UST bug.h
Mathieu Desnoyers [Tue, 17 Jul 2012 05:49:45 +0000 (01:49 -0400)] 
Fix: filter: remove dependency on UST bug.h

Fixes #308

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter bytecode: Implement stack-based interpreter
Mathieu Desnoyers [Mon, 16 Jul 2012 21:56:59 +0000 (17:56 -0400)] 
Filter bytecode: Implement stack-based interpreter

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: cast double directly to s64
Mathieu Desnoyers [Sat, 14 Jul 2012 03:33:09 +0000 (23:33 -0400)] 
Filter: cast double directly to s64

When we know that the child is a double we can cast it directly without
letting the specializer do it.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: ensure logical operator merge is always s64
Mathieu Desnoyers [Sat, 14 Jul 2012 03:24:42 +0000 (23:24 -0400)] 
Filter: ensure logical operator merge is always s64

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: specialize 'and' and 'or' ops
Mathieu Desnoyers [Fri, 13 Jul 2012 23:00:36 +0000 (19:00 -0400)] 
Filter: specialize 'and' and 'or' ops

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: specialize comparators
Mathieu Desnoyers [Fri, 13 Jul 2012 21:15:55 +0000 (17:15 -0400)] 
Filter: specialize comparators

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: Specialize unary ops
Mathieu Desnoyers [Fri, 13 Jul 2012 20:45:46 +0000 (16:45 -0400)] 
Filter: Specialize unary ops

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: opcode for ref load
Mathieu Desnoyers [Fri, 13 Jul 2012 20:05:56 +0000 (16:05 -0400)] 
Filter: opcode for ref load

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoShow that filter is enabled when listing session events
Mathieu Desnoyers [Fri, 13 Jul 2012 18:36:39 +0000 (14:36 -0400)] 
Show that filter is enabled when listing session events

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoDocument filter usage
Mathieu Desnoyers [Fri, 13 Jul 2012 18:27:03 +0000 (14:27 -0400)] 
Document filter usage

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFilter: add floating point support
Mathieu Desnoyers [Fri, 13 Jul 2012 17:05:59 +0000 (13:05 -0400)] 
Filter: add floating point support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoImplement filter bytecode support in lttng-session, and parse filter string
Mathieu Desnoyers [Thu, 12 Jul 2012 17:01:14 +0000 (13:01 -0400)] 
Implement filter bytecode support in lttng-session, and parse filter string

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoImplement filter expression to bytecode compiler in liblttng-ctl
Mathieu Desnoyers [Tue, 10 Jul 2012 19:15:04 +0000 (15:15 -0400)] 
Implement filter expression to bytecode compiler in liblttng-ctl

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: The session list count should provide unique identifiers
Mathieu Desnoyers [Wed, 11 Jul 2012 22:23:12 +0000 (18:23 -0400)] 
Fix: The session list count should provide unique identifiers

Never decrement it.

Reported-by: Amer Alhalabi <amer.alhalabi@ericsson.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoNetwork streaming support
David Goulet [Wed, 11 Jul 2012 17:20:39 +0000 (13:20 -0400)] 
Network streaming support

This is a huge commit integrating a lot of new feature for network
streaming support with the lttng-relayd previously merged.

Please note that this commit is the initial import of the network
streaming feature meaning that this is NOT stable and SHOULD be
considered experimental hence not suited for production deployment.

API Changes:

lttng_create_session_uri(), lttng_enable_consumer(),
lttng_set_consumer_uri() and lttng_disable_consumer() calls are added.
The lttng command line now supports these new calls by introducing two
new commands and one modified. (Please look at the --help option for
more details).

$ lttng enable-consumer
$ lttng disable-consumer

The "lttng create" command can now take new arguments to specify the
destination URI for network streaming. There is also a new flag which
allows the user to disable the consumer for the session.

At this point, the now old deprecated lttng_create_session() call is
still supported but SHOULD be replaced by lttng_create_session_uri().
More calls will be added to the API in order to facilitate the creation
of lttng URI.

Network streaming:

Both kernel and user space tracing are supported for network streaming.
For now, only IPv4 and IPv6 protocol over TCP is supported. Two network
socket are used where one is for control commands and the second one is
for data transmission. The port are respectively 5342 and 5343.

BUGS: Streaming high throughput traces (e.g lttng enable-event -a -k)
with low bandwitdh available to the relayd, the tracer does not behave
well when the metadata are not emptied enough quickly so data are
missing on the remote target and the tracing is simply not stoppable.
This is a known bug and future iterations will try to fix it.

WARNING: At this stage, there is _NO_ security features meaning no
remote authentication on the relayd, no transport layer encryption or
network secure handshake of some sort. So, uses only for in-vitro
experiment or on _trusted_ networks.

Signed-off-by: Julien Desfossez <julien.desfossez@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoInitial import of the new binary lttng-relayd
Julien Desfossez [Tue, 10 Jul 2012 21:40:27 +0000 (17:40 -0400)] 
Initial import of the new binary lttng-relayd

The lttng-relayd listens on the network and receives traces streamed by
the consumer.

At this first commit, the relayd supports IPv4 and IPv6 over TCP.

The following commits will add the support to use it with the lttng
command line interface, control library, consumer and session daemon.

Signed-off-by: Julien Desfossez <julien.desfossez@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoAdd and change lttcomm socket API
David Goulet [Tue, 10 Jul 2012 21:30:37 +0000 (17:30 -0400)] 
Add and change lttcomm socket API

Add lttcomm_alloc_sock_from_uri(), lttcomm_destroy_sock(),
lttcomm_alloc_copy_sock() and lttcomm_copy_sock(). Also add the relayd
command and lttcomm error message.

Change the create and alloc sock call API arguments.

Fix the fd leak in accept() function.

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: mmap write() for large subbuffers and handle EINTR (v2)
Mathieu Desnoyers [Fri, 6 Jul 2012 14:13:05 +0000 (10:13 -0400)] 
Fix: mmap write() for large subbuffers and handle EINTR (v2)

With large subbuffer (packet) size, if write() returns before copying the
entire packet for mmap buffers, the consumerd restarts the write
infinitely, which is not good at all.

This affects both lttng-ust (in default mmap mode) and lttng-kernel (but
only for mmap buffers, which is not the default).

This issue would show up with large subbuffer size.

We need to handle this case, as well as EINTR errors (which need to restart
write).

Also fixing the return value of mmap read functions, which were returning
the amount of data written by the last invocation of write() rather than
the total number of bytes written. splice use had the same issue.

Also now consider a write() that returns more bytes than requested as an
error.

Moreover, assigning error = ret after failed splice and write was a
mistake: error is holding the actual error value. ret just holds -1.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix inet return value in the close() fct
David Goulet [Tue, 3 Jul 2012 20:28:05 +0000 (16:28 -0400)] 
Fix inet return value in the close() fct

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoFix: add missing consumer.h to sessiond Makefile.am
Mathieu Desnoyers [Fri, 29 Jun 2012 10:49:21 +0000 (12:49 +0200)] 
Fix: add missing consumer.h to sessiond Makefile.am

Fix make dist.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: test make dist Makefile.am missing files
Mathieu Desnoyers [Fri, 29 Jun 2012 10:43:14 +0000 (12:43 +0200)] 
Fix: test make dist Makefile.am missing files

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: support large files on 32-bit systems
Mathieu Desnoyers [Fri, 29 Jun 2012 10:40:30 +0000 (12:40 +0200)] 
Fix: support large files on 32-bit systems

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 years agoFix: enable event loglevel match function
David Goulet [Fri, 22 Jun 2012 15:02:51 +0000 (11:02 -0400)] 
Fix: enable event loglevel match function

For the loglevel type ALL, the value set in an event inside the session
daemon is -1 where the value received from the client is 0. For this
loglevel type, the loglevel does not matter.

This fixes the commit c0657016bbb98e1769edbaba8c00221f964c7402 done
before version 2.0.2.

(Closes #283 #287)

Signed-off-by: David Goulet <dgoulet@efficios.com>
11 years agoRemove useless arg from kernel consumer send stream
David Goulet [Tue, 19 Jun 2012 19:13:16 +0000 (15:13 -0400)] 
Remove useless arg from kernel consumer send stream

The consumer_data structure was not used when sending kernel channel
streams to the consumer. Now the function uses the consumer_data
structure to get the consumer socket and the sock argument was removed.

Signed-off-by: David Goulet <dgoulet@efficios.com>
This page took 0.042662 seconds and 4 git commands to generate.