From 4b747a4016573e7f2510b6ab767783a2708d1e55 Mon Sep 17 00:00:00 2001 From: Edward Shishkin Date: Tue, 15 Dec 2009 18:47:47 +0100 Subject: [PATCH] blktrace: avoid device duplication Fixup for bz 501457. Problem: If the device list file contains the same device as supplied on the command line, blktrace stops immediately and further I/O tracing is impossible. Bug: device duplication in the devpaths ends with programm termination (BLKTRACESETUP ioctl returns error) while resources (open files in debugfs) are not released. Solution: Make sure devices are not duplicated in devpaths pool. Signed-off-by: Edward Shishkin Signed-off-by: Jens Axboe --- blktrace.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/blktrace.c b/blktrace.c index b4c919d..a67e1b8 100644 --- a/blktrace.c +++ b/blktrace.c @@ -1200,7 +1200,16 @@ static int add_devpath(char *path) { int fd; struct devpath *dpp; + struct list_head *p; + /* + * Verify device is not duplicated + */ + __list_for_each(p, &devpaths) { + struct devpath *tmp = list_entry(p, struct devpath, head); + if (!strcmp(tmp->path, path)) + return 0; + } /* * Verify device is valid before going too far */ -- 2.25.1