if (cnt < 0) {
printf("read failed: %s\n", strerror(-cnt));
- return 0;
+ goto out;
}
if (Pflag) {
}
if (qflag)
- return 0;
+ goto out;
if (vflag)
dump_buffer(buf, offset, count);
t2 = tsub(t2, t1);
print_report("read", &t2, offset, count, total, cnt, Cflag);
+out:
qemu_io_free(buf);
return 0;
if (cnt < 0) {
printf("readv failed: %s\n", strerror(-cnt));
- return 0;
+ goto out;
}
if (Pflag) {
}
if (qflag)
- return 0;
+ goto out;
if (vflag)
dump_buffer(buf, offset, qiov.size);
t2 = tsub(t2, t1);
print_report("read", &t2, offset, qiov.size, total, cnt, Cflag);
+out:
qemu_io_free(buf);
-
return 0;
}
if (cnt < 0) {
printf("write failed: %s\n", strerror(-cnt));
- return 0;
+ goto out;
}
if (qflag)
- return 0;
+ goto out;
/* Finally, report back -- -C gives a parsable format */
t2 = tsub(t2, t1);
print_report("wrote", &t2, offset, count, total, cnt, Cflag);
+out:
qemu_io_free(buf);
return 0;
if (cnt < 0) {
printf("writev failed: %s\n", strerror(-cnt));
- return 0;
+ goto out;
}
if (qflag)
- return 0;
+ goto out;
/* Finally, report back -- -C gives a parsable format */
t2 = tsub(t2, t1);
print_report("wrote", &t2, offset, qiov.size, total, cnt, Cflag);
-
+out:
qemu_io_free(buf);
-
return 0;
}
if (ret < 0) {
printf("aio_write failed: %s\n", strerror(-ret));
- return;
+ goto out;
}
if (ctx->qflag) {
- return;
+ goto out;
}
/* Finally, report back -- -C gives a parsable format */
t2 = tsub(t2, ctx->t1);
print_report("wrote", &t2, ctx->offset, ctx->qiov.size,
ctx->qiov.size, 1, ctx->Cflag);
-
+out:
qemu_io_free(ctx->buf);
free(ctx);
}
if (ret < 0) {
printf("readv failed: %s\n", strerror(-ret));
- return;
+ goto out;
}
if (ctx->Pflag) {
}
if (ctx->qflag) {
- return;
+ goto out;
}
if (ctx->vflag) {
t2 = tsub(t2, ctx->t1);
print_report("read", &t2, ctx->offset, ctx->qiov.size,
ctx->qiov.size, 1, ctx->Cflag);
-
+out:
qemu_io_free(ctx->buf);
free(ctx);
}
ctx->vflag = 1;
break;
default:
+ free(ctx);
return command_usage(&aio_read_cmd);
}
}
- if (optind > argc - 2)
+ if (optind > argc - 2) {
+ free(ctx);
return command_usage(&aio_read_cmd);
-
+ }
ctx->offset = cvtnum(argv[optind]);
if (ctx->offset < 0) {
printf("non-numeric length argument -- %s\n", argv[optind]);
+ free(ctx);
return 0;
}
optind++;
if (ctx->offset & 0x1ff) {
printf("offset %lld is not sector aligned\n",
(long long)ctx->offset);
+ free(ctx);
return 0;
}
gettimeofday(&ctx->t1, NULL);
acb = bdrv_aio_readv(bs, ctx->offset >> 9, &ctx->qiov,
ctx->qiov.size >> 9, aio_read_done, ctx);
- if (!acb)
+ if (!acb) {
+ free(ctx->buf);
+ free(ctx);
return -EIO;
+ }
return 0;
}
pattern = atoi(optarg);
break;
default:
+ free(ctx);
return command_usage(&aio_write_cmd);
}
}
- if (optind > argc - 2)
+ if (optind > argc - 2) {
+ free(ctx);
return command_usage(&aio_write_cmd);
+ }
ctx->offset = cvtnum(argv[optind]);
if (ctx->offset < 0) {
printf("non-numeric length argument -- %s\n", argv[optind]);
+ free(ctx);
return 0;
}
optind++;
if (ctx->offset & 0x1ff) {
printf("offset %lld is not sector aligned\n",
(long long)ctx->offset);
+ free(ctx);
return 0;
}
gettimeofday(&ctx->t1, NULL);
acb = bdrv_aio_writev(bs, ctx->offset >> 9, &ctx->qiov,
ctx->qiov.size >> 9, aio_write_done, ctx);
- if (!acb)
+ if (!acb) {
+ free(ctx->buf);
+ free(ctx);
return -EIO;
+ }
return 0;
}