All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH][BLKPARSE/BLKTRACE] too small arrays for file names
@ 2011-09-09 23:02 Vasily Tarasov
  0 siblings, 0 replies; only message in thread
From: Vasily Tarasov @ 2011-09-09 23:02 UTC (permalink / raw)
  To: linux-btrace

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]

In our experiments blktrace/blkparse file names encode a lot of infomation about
the particular experiment.  We noticed that for long enough file names blkparse
does not work.

The reason is that per_cpu_info->fname[] is of 128 bytes. As a result, in
setup_file() function only part of the file name gets to ->fname[]. Then stat()
fails and we exit the function. Notice, that no error is printed in this case.

In the following patch ->fname[] size is increased to POSXI defined PATH_MAX.

Signed-off-by: Vasily Tarasov <tarasov@vasily.name>

[-- Attachment #2: blkparse-to-short-file-name.diff --]
[-- Type: text/x-diff, Size: 735 bytes --]

diff --git a/blkparse.c b/blkparse.c
index 169d491..6db7307 100644
--- a/blkparse.c
+++ b/blkparse.c
@@ -2836,7 +2836,7 @@ int main(int argc, char *argv[])
 			ofp = fdopen(STDOUT_FILENO, "w");
 			mode = _IOLBF;
 		} else {
-			char ofname[128];
+			char ofname[PATH_MAX];
 
 			snprintf(ofname, sizeof(ofname) - 1, "%s", output_name);
 			ofp = fopen(ofname, "w");
diff --git a/blktrace.h b/blktrace.h
index 8b3e031..5da6dbc 100644
--- a/blktrace.h
+++ b/blktrace.h
@@ -2,6 +2,7 @@
 #define BLKTRACE_H
 
 #include <stdio.h>
+#include <limits.h>
 #include <byteswap.h>
 #include <endian.h>
 
@@ -44,7 +45,7 @@ struct per_cpu_info {
 
 	int fd;
 	int fdblock;
-	char fname[128];
+	char fname[PATH_MAX];
 
 	struct io_stats io_stats;
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-09-09 23:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-09 23:02 [PATCH][BLKPARSE/BLKTRACE] too small arrays for file names Vasily Tarasov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.