td->stonewall = parent->stonewall;
td->numjobs = parent->numjobs;
td->use_thread = parent->use_thread;
+ td->do_disk_util = parent->do_disk_util;
memcpy(&td->cpumask, &parent->cpumask, sizeof(td->cpumask));
strcpy(td->io_engine_name, parent->io_engine_name);
return 1;
}
-static char *find_block_dir(dev_t dev, char *path)
+static int find_block_dir(dev_t dev, char *path)
{
struct dirent *dir;
- char *found = NULL;
struct stat st;
+ int found = 0;
DIR *D;
D = opendir(path);
if (!D)
- return NULL;
+ return 0;
while ((dir = readdir(D)) != NULL) {
char full_path[256];
if (!strcmp(dir->d_name, "dev")) {
if (!check_dev_match(dev, full_path)) {
- found = path;
+ found = 1;
break;
}
}
if (!S_ISDIR(st.st_mode) || S_ISLNK(st.st_mode))
continue;
- if ((found = find_block_dir(dev, full_path)) != NULL)
+ found = find_block_dir(dev, full_path);
+ if (found) {
+ strcpy(path, full_path);
break;
+ }
}
closedir(D);
struct stat st;
char foo[256], tmp[256];
dev_t dev;
- char *p, *dir;
+ char *p;
if (!td->do_disk_util)
return;
return;
sprintf(foo, "/sys/block");
- dir = find_block_dir(dev, foo);
- if (!dir)
+ if (!find_block_dir(dev, foo))
return;
/*
* if this is inside a partition dir, jump back to parent
*/
- sprintf(tmp, "%s/queue", dir);
+ sprintf(tmp, "%s/queue", foo);
if (stat(tmp, &st)) {
- p = dirname(dir);
+ p = dirname(foo);
sprintf(tmp, "%s/queue", p);
if (stat(tmp, &st)) {
fprintf(stderr, "unknown sysfs layout\n");