<font size=2 face="sans-serif">Hello all,</font><font size=3> </font>
<br>
<br><font size=2 face="sans-serif">Patch functionality - If LTTNG_HOME
environment variable exists, it is used instead of HOME.</font><font size=3>
</font><font size=2 face="sans-serif"><br>
Reason for patch - We are trying to deploy LTTng on a system where $HOME
is on a filesystem mounted read-only, but cannot afford to run lttng as
a different user and cannot move the home directories of users to writeable
locations.</font><font size=3> </font><font size=2 face="sans-serif"><br>
Patch baseline: 2.2.0 rc2 </font><font size=3><br>
</font><font size=2 face="sans-serif"><br>
This patch handles only lttng-tools.</font>
<br>
<br><font size=2 face="sans-serif">I can provide the same patches against
git, if asked.</font>
<br>
<br><tt><font size=2>diff -ur lttng-tools-2.2.0-rc2-orig/src/bin/lttng/conf.c
lttng-tools-2.2.0-rc2/src/bin/lttng/conf.c</font></tt>
<br><tt><font size=2>--- lttng-tools-2.2.0-rc2-orig/src/bin/lttng/conf.c
       2013-05-06 21:50:59.000000000 +0300</font></tt>
<br><tt><font size=2>+++ lttng-tools-2.2.0-rc2/src/bin/lttng/conf.c  
     2013-06-11 14:17:34.681673309 +0300</font></tt>
<br><tt><font size=2>@@ -127,6 +127,11 @@</font></tt>
<br><tt><font size=2>  */</font></tt>
<br><tt><font size=2> char *config_get_default_path(void)</font></tt>
<br><tt><font size=2> {</font></tt>
<br><tt><font size=2>+        char *val = NULL;</font></tt>
<br><tt><font size=2>+        val = getenv("LTTNG_HOME");</font></tt>
<br><tt><font size=2>+        if (val != NULL)
{</font></tt>
<br><tt><font size=2>+            
   return val;</font></tt>
<br><tt><font size=2>+        }</font></tt>
<br><tt><font size=2>         return getenv("HOME");</font></tt>
<br><tt><font size=2> }</font></tt>
<br><tt><font size=2> </font></tt>
<br><tt><font size=2>diff -ur lttng-tools-2.2.0-rc2-orig/src/bin/lttng-relayd/utils.c
lttng-tools-2.2.0-rc2/src/bin/lttng-relayd/utils.c</font></tt>
<br><tt><font size=2>--- lttng-tools-2.2.0-rc2-orig/src/bin/lttng-relayd/utils.c
       2013-05-06 21:50:59.000000000 +0300</font></tt>
<br><tt><font size=2>+++ lttng-tools-2.2.0-rc2/src/bin/lttng-relayd/utils.c
       2013-06-11 14:15:52.553673444 +0300</font></tt>
<br><tt><font size=2>@@ -34,7 +34,11 @@</font></tt>
<br><tt><font size=2>  */</font></tt>
<br><tt><font size=2> static char *get_default_path(void)</font></tt>
<br><tt><font size=2> {</font></tt>
<br><tt><font size=2>-        return getenv("HOME");</font></tt>
<br><tt><font size=2>+        char *val = NULL;</font></tt>
<br><tt><font size=2>+        val = getenv("LTTNG_HOME");</font></tt>
<br><tt><font size=2>+        if (val != NULL)
{</font></tt>
<br><tt><font size=2>+            
   return val;</font></tt>
<br><tt><font size=2>+        }</font></tt>
<br><tt><font size=2> }</font></tt>
<br><tt><font size=2> </font></tt>
<br><tt><font size=2> static char *create_output_path_auto(char *path_name)</font></tt>
<br><tt><font size=2>diff -ur lttng-tools-2.2.0-rc2-orig/src/bin/lttng-sessiond/utils.c
lttng-tools-2.2.0-rc2/src/bin/lttng-sessiond/utils.c</font></tt>
<br><tt><font size=2>--- lttng-tools-2.2.0-rc2-orig/src/bin/lttng-sessiond/utils.c
       2013-01-07 22:05:16.000000000 +0200</font></tt>
<br><tt><font size=2>+++ lttng-tools-2.2.0-rc2/src/bin/lttng-sessiond/utils.c
       2013-06-11 14:16:16.697673412 +0300</font></tt>
<br><tt><font size=2>@@ -53,5 +53,10 @@</font></tt>
<br><tt><font size=2>  */</font></tt>
<br><tt><font size=2> const char *get_home_dir(void)</font></tt>
<br><tt><font size=2> {</font></tt>
<br><tt><font size=2>+        const char *val
= NULL;</font></tt>
<br><tt><font size=2>+        val = ((const
char *) getenv("LTTNG_HOME"));</font></tt>
<br><tt><font size=2>+        if (val != NULL)
{</font></tt>
<br><tt><font size=2>+            
   return val;</font></tt>
<br><tt><font size=2>+        }</font></tt>
<br><tt><font size=2>         return ((const
char *) getenv("HOME"));</font></tt>
<br><tt><font size=2> }</font></tt>
<br><tt><font size=2>diff -ur lttng-tools-2.2.0-rc2-orig/src/lib/lttng-ctl/lttng-ctl.c
lttng-tools-2.2.0-rc2/src/lib/lttng-ctl/lttng-ctl.c</font></tt>
<br><tt><font size=2>--- lttng-tools-2.2.0-rc2-orig/src/lib/lttng-ctl/lttng-ctl.c
       2013-05-07 22:42:07.000000000 +0300</font></tt>
<br><tt><font size=2>+++ lttng-tools-2.2.0-rc2/src/lib/lttng-ctl/lttng-ctl.c
       2013-06-11 14:19:15.177673176 +0300</font></tt>
<br><tt><font size=2>@@ -74,6 +74,22 @@</font></tt>
<br><tt><font size=2> int lttng_opt_verbose;</font></tt>
<br><tt><font size=2> </font></tt>
<br><tt><font size=2> /*</font></tt>
<br><tt><font size=2>+ * Get the value of LTTNG_HOME if present, or HOME
if not.</font></tt>
<br><tt><font size=2>+ * Caller must not free the returned pointer.</font></tt>
<br><tt><font size=2>+ * Used </font></tt>
<br><tt><font size=2>+ */</font></tt>
<br><tt><font size=2>+static const char *get_lttng_home_dir(void)</font></tt>
<br><tt><font size=2>+{</font></tt>
<br><tt><font size=2>+        const char *val
= NULL;</font></tt>
<br><tt><font size=2>+        val = ((const
char *) getenv("LTTNG_HOME"));</font></tt>
<br><tt><font size=2>+        if (val != NULL)
{</font></tt>
<br><tt><font size=2>+            
   return val;</font></tt>
<br><tt><font size=2>+        }</font></tt>
<br><tt><font size=2>+        return ((const
char *) getenv("HOME"));</font></tt>
<br><tt><font size=2>+}</font></tt>
<br><tt><font size=2>+</font></tt>
<br><tt><font size=2>+</font></tt>
<br><tt><font size=2>+/*</font></tt>
<br><tt><font size=2>  * Compare two URL destination.</font></tt>
<br><tt><font size=2>  *</font></tt>
<br><tt><font size=2>  * Return 0 is equal else is not equal.</font></tt>
<br><tt><font size=2>@@ -485,7 +501,7 @@</font></tt>
<br><tt><font size=2>           
      * With GNU C >= 2.1, snprintf returns the
required size (excluding closing null)</font></tt>
<br><tt><font size=2>           
      */</font></tt>
<br><tt><font size=2>           
     ret = snprintf(sessiond_sock_path, sizeof(sessiond_sock_path),</font></tt>
<br><tt><font size=2>-            
               
   DEFAULT_HOME_CLIENT_UNIX_SOCK, getenv("HOME"));</font></tt>
<br><tt><font size=2>+            
               
   DEFAULT_HOME_CLIENT_UNIX_SOCK, get_lttng_home_dir());</font></tt>
<br><tt><font size=2>           
     if ((ret < 0) || (ret >= sizeof(sessiond_sock_path)))
{</font></tt>
<br><tt><font size=2>           
             goto error;</font></tt>
<br><tt><font size=2>           
     }</font></tt>
<br><tt><font size=2>@@ -1543,7 +1559,7 @@</font></tt>
<br><tt><font size=2>           
      * With GNU C <  2.1, snprintf returns
-1 if the target buffer is too small;</font></tt>
<br><tt><font size=2>           
      * With GNU C >= 2.1, snprintf returns the
required size (excluding closing null)</font></tt>
<br><tt><font size=2>           
      */</font></tt>
<br><tt><font size=2>-            
   home = getenv("HOME");</font></tt>
<br><tt><font size=2>+            
   home = get_lttng_home_dir();</font></tt>
<br><tt><font size=2>           
     if (home == NULL) {</font></tt>
<br><tt><font size=2>           
             /* Fallback
in /tmp .. */</font></tt>
<br><tt><font size=2>           
             home =
"/tmp";</font></tt>
<br>
<br><font size=2 face="sans-serif">Thanks,</font>
<br>
<br><font size=2 color=#000080 face="sans-serif">Amit Margalit</font>
<br><font size=2 color=#808000 face="sans-serif">IBM XIV </font><font size=2 face="sans-serif">-
<i>Storage Reinvented</i></font>
<br><font size=2 face="sans-serif">XIV-NAS Development Team</font>
<br><font size=2 face="sans-serif">Tel. 03</font><font size=2 face="Arial">-689-7774</font>
<br><font size=2 face="Arial">Fax. 03-689-7230</font>