summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@redhat.com>2009-09-09 12:53:25 -0400
committerMasami Hiramatsu <mhiramat@redhat.com>2009-09-09 12:53:25 -0400
commitddc0ddd0bc88d370addadcd3a9381e410e7b73cc (patch)
tree8c046fb2af3e233e58fae23986346bd8250220bd /runtime
parent6db2f61f39669ad1f0fa23595b94ff22c8fc50d6 (diff)
downloadsystemtap-steved-ddc0ddd0bc88d370addadcd3a9381e410e7b73cc.tar.gz
systemtap-steved-ddc0ddd0bc88d370addadcd3a9381e410e7b73cc.tar.xz
systemtap-steved-ddc0ddd0bc88d370addadcd3a9381e410e7b73cc.zip
Fix relay_old implementation of fsize_max and fnum_max.
With old relayfs, out_fd is used only when non-bulk mode. However, open_oldoutfile and open_relayfs_files open files with fopen and set only percpu_tmpfile. This will cause a problem with -S option, that out_fd will be closed when the file size reaches fsize_max and new fd will be opened only on percpu_tmpfile. So, out_fd should be synchronized with percpu_tmpfile. * runtime/staprun/relay_old.c (open_oldoutfile): Set fd of output file to out_fd[cpu]. (open_relayfs_files): Ditto.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/staprun/relay_old.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/runtime/staprun/relay_old.c b/runtime/staprun/relay_old.c
index 71d8acee..0254173f 100644
--- a/runtime/staprun/relay_old.c
+++ b/runtime/staprun/relay_old.c
@@ -110,7 +110,8 @@ static int open_oldoutfile(int fnum, int cpu, int remove_file)
perr("Couldn't open output file %s", buf);
return -1;
}
- if (set_clexec(fileno(percpu_tmpfile[cpu])) < 0) {
+ out_fd[cpu] = fileno(percpu_tmpfile[cpu]);
+ if (set_clexec(out_fd[cpu]) < 0) {
perr("Couldn't clear exec bit of open output file %s", buf);
return -1;
}
@@ -181,7 +182,8 @@ static int open_relayfs_files(int cpu, const char *relay_filebase, const char *p
perr("Couldn't open output file %s", tmp);
goto err2;
}
- if (set_clexec(fileno(percpu_tmpfile[cpu])) < 0) {
+ out_fd[cpu] = fileno(percpu_tmpfile[cpu]);
+ if (set_clexec(out_fd[cpu]) < 0) {
perr("Couldn't open output file %s", tmp);
goto err2;
}