* Passing argument to both write_bw_log & write_lat_log leads to segfault
@ 2008-11-19 11:23 Erwan Velu
2008-11-19 11:28 ` Jens Axboe
0 siblings, 1 reply; 5+ messages in thread
From: Erwan Velu @ 2008-11-19 11:23 UTC (permalink / raw)
To: fio
Using fio 1.23:
[root@max13 tmp]# fio myconfigfile
Segmentation fault (core dumped)
Where myconfigfile is the following:
[global]
bsrange=64k-128k,64k-128k
direct=1
ioengine=libaio
iodepth=2
zonesize=256m
zoneskip=2g
[/dev/exa/g1/v1]
rw=read
write_bw_log read-bw
write_lat_log read-lat
[/dev/exa/g1/v1]
stonewall
rw=write
write_bw_log write-bw
write_lat_log write-lat
Note: removing one or the other parameter to write_*_log reports an error like "Bad option write_lat_log read-lat" but letting both of them segfault.
I did this syntaxe as the man page says :
write_bw_log
If given, write bandwidth logs of the jobs in this file.
I thought that "this file" meant a parameter.
Cheers,
--
Erwan Velu
Pre-Sales Engineer
Seanodes
http://www.seanodes.com
+33 (0)1 41 22 13 83
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: Passing argument to both write_bw_log & write_lat_log leads to segfault 2008-11-19 11:23 Passing argument to both write_bw_log & write_lat_log leads to segfault Erwan Velu @ 2008-11-19 11:28 ` Jens Axboe 2008-11-19 15:10 ` Erwan Velu 0 siblings, 1 reply; 5+ messages in thread From: Jens Axboe @ 2008-11-19 11:28 UTC (permalink / raw) To: Erwan Velu; +Cc: fio On Wed, Nov 19 2008, Erwan Velu wrote: > Using fio 1.23: > [root@max13 tmp]# fio myconfigfile > Segmentation fault (core dumped) > > > Where myconfigfile is the following: > [global] > bsrange=64k-128k,64k-128k > direct=1 > ioengine=libaio > iodepth=2 > zonesize=256m > zoneskip=2g > > [/dev/exa/g1/v1] > rw=read > write_bw_log read-bw > write_lat_log read-lat > > [/dev/exa/g1/v1] > stonewall > rw=write > write_bw_log write-bw > write_lat_log write-lat > > Note: removing one or the other parameter to write_*_log reports an error > like "Bad option write_lat_log read-lat" but letting both of them segfault. > > I did this syntaxe as the man page says : > write_bw_log > If given, write bandwidth logs of the jobs in this file. > > I thought that "this file" meant a parameter. Wow, you are handy at finding old bugs that nobody has hit :-). The below should fix it. Generally, fio always wants a '=' to assign a value to a parameter. But of course the parser should not crash... diff --git a/parse.c b/parse.c index 456e3ba..5f7d033 100644 --- a/parse.c +++ b/parse.c @@ -487,7 +487,7 @@ static int opt_cmp(const void *p1, const void *p2) { struct fio_option *o1, *o2; char *s1, *s2, *foo; - int ret; + int prio1, prio2; s1 = strdup(*((char **) p1)); s2 = strdup(*((char **) p2)); @@ -495,14 +495,15 @@ static int opt_cmp(const void *p1, const void *p2) o1 = get_option(s1, fio_options, &foo); o2 = get_option(s2, fio_options, &foo); - if ((!o1 && o2) || (o1 && !o2)) - ret = 0; - else - ret = o2->prio - o1->prio; + prio1 = prio2 = 0; + if (o1) + prio1 = o1->prio; + if (o2) + prio2 = o2->prio; free(s1); free(s2); - return ret; + return prio2 - prio1; } void sort_options(char **opts, struct fio_option *options, int num_opts) -- Jens Axboe ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Passing argument to both write_bw_log & write_lat_log leads to segfault 2008-11-19 11:28 ` Jens Axboe @ 2008-11-19 15:10 ` Erwan Velu 2008-11-19 15:15 ` Jens Axboe 0 siblings, 1 reply; 5+ messages in thread From: Erwan Velu @ 2008-11-19 15:10 UTC (permalink / raw) To: Jens Axboe; +Cc: fio Jens Axboe wrote: [....] > Wow, you are handy at finding old bugs that nobody has hit :-). The > below should fix it. > Hehe :p > Generally, fio always wants a '=' to assign a value to a parameter. But > of course the parser should not crash... > Ok. It that configuration correct ? [global] bsrange=64k-128k,64k-128k direct=1 ioengine=libaio iodepth=64 zonesize=256m zoneskip=2g [/dev/sdb] rw=read write_bw_log=read-bw write_lat_log=read-lat [/dev/sdb] stonewall rw=write write_bw_log=write-bw write_lat_log=write-lat If yes, I have a problem because I only have files called : sdb_clat.log & sdb_slat.log -- Erwan Velu Pre-Sales Engineer Seanodes http://www.seanodes.com +33 (0)1 41 22 13 83 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Passing argument to both write_bw_log & write_lat_log leads to segfault 2008-11-19 15:10 ` Erwan Velu @ 2008-11-19 15:15 ` Jens Axboe 2008-11-19 15:20 ` Jens Axboe 0 siblings, 1 reply; 5+ messages in thread From: Jens Axboe @ 2008-11-19 15:15 UTC (permalink / raw) To: Erwan Velu; +Cc: fio On Wed, Nov 19 2008, Erwan Velu wrote: > Jens Axboe wrote: > > [....] > >Wow, you are handy at finding old bugs that nobody has hit :-). The > >below should fix it. > > > Hehe :p > >Generally, fio always wants a '=' to assign a value to a parameter. But > >of course the parser should not crash... > > > Ok. It that configuration correct ? > > [global] > bsrange=64k-128k,64k-128k > direct=1 > ioengine=libaio > iodepth=64 > zonesize=256m > zoneskip=2g > > [/dev/sdb] > rw=read > write_bw_log=read-bw > write_lat_log=read-lat > > [/dev/sdb] > stonewall > rw=write > write_bw_log=write-bw > write_lat_log=write-lat > > If yes, I have a problem because I only have files called : sdb_clat.log > & sdb_slat.log They don't accept a parameter. I can rectify that, I guess sometimes you'd like that (especially for big jobs). The log should contain entries from both, with a direction field. Let me double check tonight and make sure it doesn't truncate the log or anything like that, I don't think I've ever used the log like this. It should just append. -- Jens Axboe ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Passing argument to both write_bw_log & write_lat_log leads to segfault 2008-11-19 15:15 ` Jens Axboe @ 2008-11-19 15:20 ` Jens Axboe 0 siblings, 0 replies; 5+ messages in thread From: Jens Axboe @ 2008-11-19 15:20 UTC (permalink / raw) To: Erwan Velu; +Cc: fio On Wed, Nov 19 2008, Jens Axboe wrote: > On Wed, Nov 19 2008, Erwan Velu wrote: > > Jens Axboe wrote: > > > > [....] > > >Wow, you are handy at finding old bugs that nobody has hit :-). The > > >below should fix it. > > > > > Hehe :p > > >Generally, fio always wants a '=' to assign a value to a parameter. But > > >of course the parser should not crash... > > > > > Ok. It that configuration correct ? > > > > [global] > > bsrange=64k-128k,64k-128k > > direct=1 > > ioengine=libaio > > iodepth=64 > > zonesize=256m > > zoneskip=2g > > > > [/dev/sdb] > > rw=read > > write_bw_log=read-bw > > write_lat_log=read-lat > > > > [/dev/sdb] > > stonewall > > rw=write > > write_bw_log=write-bw > > write_lat_log=write-lat > > > > If yes, I have a problem because I only have files called : sdb_clat.log > > & sdb_slat.log > > They don't accept a parameter. I can rectify that, I guess sometimes > you'd like that (especially for big jobs). The log should contain > entries from both, with a direction field. > > Let me double check tonight and make sure it doesn't truncate the log or > anything like that, I don't think I've ever used the log like this. It > should just append. OK, it truncates. This will help. I'll have it accept file names as well later today. diff --git a/log.c b/log.c index 5c468ad..ab457c7 100644 --- a/log.c +++ b/log.c @@ -388,7 +388,7 @@ static int init_iolog_write(struct thread_data *td) FILE *f; unsigned int i; - f = fopen(td->o.write_iolog_file, "w+"); + f = fopen(td->o.write_iolog_file, "a"); if (!f) { perror("fopen write iolog"); return 1; @@ -455,7 +455,7 @@ void __finish_log(struct io_log *log, const char *name) unsigned int i; FILE *f; - f = fopen(name, "w"); + f = fopen(name, "a"); if (!f) { perror("fopen log"); return; -- Jens Axboe ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-11-19 15:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-11-19 11:23 Passing argument to both write_bw_log & write_lat_log leads to segfault Erwan Velu 2008-11-19 11:28 ` Jens Axboe 2008-11-19 15:10 ` Erwan Velu 2008-11-19 15:15 ` Jens Axboe 2008-11-19 15:20 ` Jens Axboe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox