From e41bf0ffcf5a2ec016493c25737896a03bfbafba Mon Sep 17 00:00:00 2001 From: Edward Shishkin Date: Tue, 15 Dec 2009 18:47:59 +0100 Subject: [PATCH] blktrace: add back conversion Fixup for bz 502889. Problem: when executing with /dev/cciss/foo (long path names) btreplay complains (No such file or directory). Bug: Missed back conversion of erscores to slashes. Solution: Convert underscores to slashes to restore device names that have larger paths. Signed-off-by: Edward Shishkin Signed-off-by: Jens Axboe --- btreplay/btreplay.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/btreplay/btreplay.c b/btreplay/btreplay.c index 2d122ca..cba099a 100644 --- a/btreplay/btreplay.c +++ b/btreplay/btreplay.c @@ -1314,6 +1314,8 @@ static void reset_input_file(struct thr_info *tip) */ static void *replay_sub(void *arg) { + int i; + char *mdev; char path[MAXPATHLEN]; struct io_bunch bunch; struct thr_info *tip = arg; @@ -1321,8 +1323,15 @@ static void *replay_sub(void *arg) pin_to_cpu(tip); - sprintf(path, "/dev/%s", map_dev(tip->devnm)); - + mdev = map_dev(tip->devnm); + sprintf(path, "/dev/%s", mdev); + /* + * convert underscores to slashes to + * restore device names that have larger paths + */ + for (i = 0; i < strlen(mdev); i++) + if (path[strlen("/dev/") + i] == '_') + path[strlen("/dev/") + i] = '/'; #ifdef O_NOATIME oflags = O_NOATIME; #else -- 2.25.1