forb_orb orb;
FILE* fd;
int readers = 4;
- char disk_name[40];
+ char disk_dev[40], *disk_name = disk_dev;
char path[128], scheduler[128];
- int opt, ret;
+ int i, opt, ret;
if (argc < 3) {
err_usage:
- fprintf(stderr, "Usage:\n %s -i disk_id -d disk_dev_name [-n readers]\n",
+ fprintf(stderr, "Usage:\n %s "
+ "-i disk_id -d disk_device [-n readers]\n",
argv[0]);
error(1, EINVAL, "frm_diskbfq");
}
- while ((opt = getopt(argc, argv, "i:d:")) != -1) {
+ while ((opt = getopt(argc, argv, "i:d:n:")) != -1) {
switch (opt) {
case 'i':
frm.res_id = atoi(optarg);
break;
case 'd':
- strncpy(disk_name,
- optarg, sizeof(disk_name));
+ strncpy(disk_dev,
+ optarg, sizeof(disk_dev));
+
+ for (i = strlen(disk_dev) - 1; i >= 0; i--) {
+ if (disk_dev[i] == '/') {
+ disk_name = disk_dev + i + 1;
+ break;
+ }
+ }
break;
case 'n':
readers = atoi(optarg);
* Estimate the disk throughput in order to achieve
* effective weight assignement during runtime.
**/
- disk.throughput = estimate_throughput(disk_name, readers);
+ disk.throughput = estimate_throughput(disk_dev, readers);
+ if (disk.throughput < 0.0)
+ error(1, errno, "frm_generic_run");
fprintf(stdout, "disk name: %s\n"
"scheduler: %s\n"
{
struct dprof_data *ddata;
struct reader_data *rdata;
- int i, error;
+ int i, error = 0;
off_t step;
ddata = calloc(1, sizeof(struct reader_data) * streamers +
struct timeval begin, end;
struct dprof_data *ddata;
double throughput = -1;
- char device_path[128];
int64_t devsize;
- int devfd, error;
-
- strncpy(device_path, "/dev/", 4);
- strncat(device_path, device, 128-1);
+ int devfd, error = 0;
/* get device size */
- devsize = read_size(device_path);
+ devsize = read_size(device);
if (devsize < 0)
return -1;
/* open the device */
- devfd = open(device_path, O_RDONLY | O_DIRECT);
+ devfd = open(device, O_RDONLY | O_DIRECT);
if (devfd < 0)
return -1;