Hi Jens, Will you consider this patch ? Thanks 2018-01-15 23:53 GMT+08:00 weiping zhang <zhangweiping@xxxxxxxxxxxxxxx>: > if we run blktrace on same device twice, the second time will failed > to ioctl(BLKTRACESETUP), then it will call __stop_tracer, which lead > the first blktrace failed to access debugfs entries. So this patch add > a check to handle this case, to avoid stop tracer uncondionally. > > Signed-off-by: weiping zhang <zhangweiping@xxxxxxxxxxxxxxx> > --- > blktrace.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/blktrace.c b/blktrace.c > index e048f68..d0d271f 100644 > --- a/blktrace.c > +++ b/blktrace.c > @@ -112,6 +112,7 @@ struct devpath { > struct cl_host *ch; > u32 cl_id; > time_t cl_connect_time; > + int setup_done; /* ioctl BLKTRACESETUP done */ > struct io_info *ios; > }; > > @@ -1083,6 +1084,7 @@ static int setup_buts(void) > if (ioctl(dpp->fd, BLKTRACESETUP, &buts) >= 0) { > dpp->ncpus = max_cpus; > dpp->buts_name = strdup(buts.name); > + dpp->setup_done = 1; > if (dpp->stats) > free(dpp->stats); > dpp->stats = calloc(dpp->ncpus, sizeof(*dpp->stats)); > @@ -1285,7 +1287,8 @@ static void rel_devpaths(void) > struct devpath *dpp = list_entry(p, struct devpath, head); > > list_del(&dpp->head); > - __stop_trace(dpp->fd); > + if (dpp->setup_done) > + __stop_trace(dpp->fd); > close(dpp->fd); > > if (dpp->heads) > -- > 1.8.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrace" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-btrace" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html