Skip to contentSkip to conversation

blktrace: add back conversion

PATCH In review Edward Shishkin 1 participant 1 message Dec 15, 2009

lore
Share & tools
lore
#0 lore raw

PATCH 3/5 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.

---
 btreplay/btreplay.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
btreplay/btreplay.c +11 -2
@@ -1314,6 +1314,8 @@ static void reset_input_file(struct thr_
  */
 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