diff mbox

[v2,07/14] fsx: add optional logid prefix to log messages

Message ID 1504104706-11965-8-git-send-email-amir73il@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Amir Goldstein Aug. 30, 2017, 2:51 p.m. UTC
When writing the intermixed output of several fsx processes
to a single log file, it is usefull to prefix logs with a log id.
Use fsx -j <logid> to define the log messages prefix.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
 ltp/fsx.c | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

Comments

Eryu Guan Sept. 5, 2017, 10:46 a.m. UTC | #1
On Wed, Aug 30, 2017 at 05:51:39PM +0300, Amir Goldstein wrote:
> When writing the intermixed output of several fsx processes
> to a single log file, it is usefull to prefix logs with a log id.
> Use fsx -j <logid> to define the log messages prefix.

Would it be better to allow any string as prefix, not limit to id
number?

Thanks,
Eryu
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Amir Goldstein Sept. 5, 2017, 11:24 a.m. UTC | #2
On Tue, Sep 5, 2017 at 1:46 PM, Eryu Guan <eguan@redhat.com> wrote:
> On Wed, Aug 30, 2017 at 05:51:39PM +0300, Amir Goldstein wrote:
>> When writing the intermixed output of several fsx processes
>> to a single log file, it is usefull to prefix logs with a log id.
>> Use fsx -j <logid> to define the log messages prefix.
>
> Would it be better to allow any string as prefix, not limit to id
> number?
>

Maybe, but I didn't see an immediate need for that beyond
the concurrent test runs, for with numeric id is sufficient.

Besides, the function that prepends the prefix, prt()
is sometimes uses for continued line, which results with
weird looking lines like this one:

1: 60( 60 mod 256): 1: FALLOC   0x30140 thru 0x30f3c    (0xdfc bytes)
1: EXTENDING1:

So it's not really worth fixing properly, but anything more then a single
numeric prefix is going to look quite bad.
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eryu Guan Sept. 5, 2017, 11:31 a.m. UTC | #3
On Tue, Sep 05, 2017 at 02:24:20PM +0300, Amir Goldstein wrote:
> On Tue, Sep 5, 2017 at 1:46 PM, Eryu Guan <eguan@redhat.com> wrote:
> > On Wed, Aug 30, 2017 at 05:51:39PM +0300, Amir Goldstein wrote:
> >> When writing the intermixed output of several fsx processes
> >> to a single log file, it is usefull to prefix logs with a log id.
> >> Use fsx -j <logid> to define the log messages prefix.
> >
> > Would it be better to allow any string as prefix, not limit to id
> > number?
> >
> 
> Maybe, but I didn't see an immediate need for that beyond
> the concurrent test runs, for with numeric id is sufficient.

I agreed, I don't have strong preference on this.

Thanks,
Eryu
> 
> Besides, the function that prepends the prefix, prt()
> is sometimes uses for continued line, which results with
> weird looking lines like this one:
> 
> 1: 60( 60 mod 256): 1: FALLOC   0x30140 thru 0x30f3c    (0xdfc bytes)
> 1: EXTENDING1:
> 
> So it's not really worth fixing properly, but anything more then a single
> numeric prefix is going to look quite bad.
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Amir Goldstein Sept. 7, 2017, 7:10 a.m. UTC | #4
On Tue, Sep 5, 2017 at 2:31 PM, Eryu Guan <eguan@redhat.com> wrote:
> On Tue, Sep 05, 2017 at 02:24:20PM +0300, Amir Goldstein wrote:
>> On Tue, Sep 5, 2017 at 1:46 PM, Eryu Guan <eguan@redhat.com> wrote:
>> > On Wed, Aug 30, 2017 at 05:51:39PM +0300, Amir Goldstein wrote:
>> >> When writing the intermixed output of several fsx processes
>> >> to a single log file, it is usefull to prefix logs with a log id.
>> >> Use fsx -j <logid> to define the log messages prefix.
>> >
>> > Would it be better to allow any string as prefix, not limit to id
>> > number?
>> >
>>
>> Maybe, but I didn't see an immediate need for that beyond
>> the concurrent test runs, for with numeric id is sufficient.
>
> I agreed, I don't have strong preference on this.
>

Nah, you were right the first time. Using numeric id was just me
being lazy and then I had a bug where -j 0 (not surprising) does
not prefix logs with 0:
I'll fix this and re-post the fsx patches.

Amir.
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/ltp/fsx.c b/ltp/fsx.c
index d206a3a..a6420f6 100644
--- a/ltp/fsx.c
+++ b/ltp/fsx.c
@@ -132,6 +132,7 @@  unsigned long	simulatedopcount = 0;	/* -b flag */
 int	closeprob = 0;			/* -c flag */
 int	debug = 0;			/* -d flag */
 unsigned long	debugstart = 0;		/* -D flag */
+int	logid = 0;			/* -j flag */
 int	flush = 0;			/* -f flag */
 int	do_fsync = 0;			/* -y flag */
 unsigned long	maxfilelen = 256 * 1024;	/* -l flag */
@@ -195,13 +196,16 @@  static void *round_ptr_up(void *ptr, unsigned long align, unsigned long offset)
 }
 
 void
-vwarnc(int code, const char *fmt, va_list ap) {
-  fprintf(stderr, "fsx: ");
-  if (fmt != NULL) {
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, ": ");
-  }
-  fprintf(stderr, "%s\n", strerror(code));
+vwarnc(int code, const char *fmt, va_list ap)
+{
+	if (logid)
+		fprintf(stderr, "%d: ", logid);
+	fprintf(stderr, "fsx: ");
+	if (fmt != NULL) {
+		vfprintf(stderr, fmt, ap);
+		fprintf(stderr, ": ");
+	}
+	fprintf(stderr, "%s\n", strerror(code));
 }
 
 void
@@ -223,6 +227,8 @@  prt(const char *fmt, ...)
 	va_start(args, fmt);
 	vsnprintf(buffer, BUF_SIZE, fmt, args);
 	va_end(args);
+	if (logid)
+		fprintf(stdout, "%d: ", logid);
 	fputs(buffer, stdout);
 	if (fsxlogf)
 		fputs(buffer, fsxlogf);
@@ -1624,12 +1630,13 @@  void
 usage(void)
 {
 	fprintf(stdout, "usage: %s",
-		"fsx [-dnqxAFLOWZ] [-b opnum] [-c Prob] [-i logdev] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\n\
+		"fsx [-dnqxAFLOWZ] [-b opnum] [-c Prob] [-i logdev] [-j logid] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\n\
 	-b opnum: beginning operation number (default 1)\n\
 	-c P: 1 in P chance of file close+open at each op (default infinity)\n\
 	-d: debug output for all operations\n\
 	-f flush and invalidate cache after I/O\n\
 	-i logdev: do integrity testing, logdev is the dm log writes device\n\
+	-j logid: prefix logs with this id\n\
 	-l flen: the upper bound on file size (default 262144)\n\
 	-m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\
 	-n: no verifications of file size\n\
@@ -1862,7 +1869,7 @@  main(int argc, char **argv)
 	setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */
 
 	while ((ch = getopt_long(argc, argv,
-				 "b:c:dfi:l:m:no:p:qr:s:t:w:xyAD:FKHzCILN:OP:RS:WZ",
+				 "b:c:dfi:j:l:m:no:p:qr:s:t:w:xyAD:FKHzCILN:OP:RS:WZ",
 				 longopts, NULL)) != EOF)
 		switch (ch) {
 		case 'b':
@@ -1897,6 +1904,9 @@  main(int argc, char **argv)
 				exit(101);
 			}
 			break;
+		case 'j':
+			logid = getnum(optarg, &endp);
+			break;
 		case 'l':
 			maxfilelen = getnum(optarg, &endp);
 			if (maxfilelen <= 0)