Revision 7d8abfcb qemu-io.c

b/qemu-io.c
358 358

  
359 359
	if (cnt < 0) {
360 360
		printf("read failed: %s\n", strerror(-cnt));
361
		return 0;
361
		goto out;
362 362
	}
363 363

  
364 364
	if (Pflag) {
......
373 373
	}
374 374

  
375 375
	if (qflag)
376
		return 0;
376
		goto out;
377 377

  
378 378
        if (vflag)
379 379
		dump_buffer(buf, offset, count);
......
382 382
	t2 = tsub(t2, t1);
383 383
	print_report("read", &t2, offset, count, total, cnt, Cflag);
384 384

  
385
out:
385 386
	qemu_io_free(buf);
386 387

  
387 388
	return 0;
......
480 481

  
481 482
	if (cnt < 0) {
482 483
		printf("readv failed: %s\n", strerror(-cnt));
483
		return 0;
484
		goto out;
484 485
	}
485 486

  
486 487
	if (Pflag) {
......
495 496
	}
496 497

  
497 498
	if (qflag)
498
		return 0;
499
		goto out;
499 500

  
500 501
        if (vflag)
501 502
		dump_buffer(buf, offset, qiov.size);
......
504 505
	t2 = tsub(t2, t1);
505 506
	print_report("read", &t2, offset, qiov.size, total, cnt, Cflag);
506 507

  
508
out:
507 509
	qemu_io_free(buf);
508

  
509 510
	return 0;
510 511
}
511 512

  
......
613 614

  
614 615
	if (cnt < 0) {
615 616
		printf("write failed: %s\n", strerror(-cnt));
616
		return 0;
617
		goto out;
617 618
	}
618 619

  
619 620
	if (qflag)
620
		return 0;
621
		goto out;
621 622

  
622 623
	/* Finally, report back -- -C gives a parsable format */
623 624
	t2 = tsub(t2, t1);
624 625
	print_report("wrote", &t2, offset, count, total, cnt, Cflag);
625 626

  
627
out:
626 628
	qemu_io_free(buf);
627 629

  
628 630
	return 0;
......
713 715

  
714 716
	if (cnt < 0) {
715 717
		printf("writev failed: %s\n", strerror(-cnt));
716
		return 0;
718
		goto out;
717 719
	}
718 720

  
719 721
	if (qflag)
720
		return 0;
722
		goto out;
721 723

  
722 724
	/* Finally, report back -- -C gives a parsable format */
723 725
	t2 = tsub(t2, t1);
724 726
	print_report("wrote", &t2, offset, qiov.size, total, cnt, Cflag);
725

  
727
out:
726 728
	qemu_io_free(buf);
727

  
728 729
	return 0;
729 730
}
730 731

  
......
761 762

  
762 763
	if (ret < 0) {
763 764
		printf("aio_write failed: %s\n", strerror(-ret));
764
		return;
765
		goto out;
765 766
	}
766 767

  
767 768
	if (ctx->qflag) {
768
		return;
769
		goto out;
769 770
	}
770 771

  
771 772
	/* Finally, report back -- -C gives a parsable format */
772 773
	t2 = tsub(t2, ctx->t1);
773 774
	print_report("wrote", &t2, ctx->offset, ctx->qiov.size,
774 775
		     ctx->qiov.size, 1, ctx->Cflag);
775

  
776
out:
776 777
	qemu_io_free(ctx->buf);
777 778
	free(ctx);
778 779
}
......
789 790

  
790 791
	if (ret < 0) {
791 792
		printf("readv failed: %s\n", strerror(-ret));
792
		return;
793
		goto out;
793 794
	}
794 795

  
795 796
	if (ctx->Pflag) {
......
805 806
	}
806 807

  
807 808
	if (ctx->qflag) {
808
		return;
809
		goto out;
809 810
	}
810 811

  
811 812
	if (ctx->vflag) {
......
816 817
	t2 = tsub(t2, ctx->t1);
817 818
	print_report("read", &t2, ctx->offset, ctx->qiov.size,
818 819
		     ctx->qiov.size, 1, ctx->Cflag);
819

  
820
out:
820 821
	qemu_io_free(ctx->buf);
821 822
	free(ctx);
822 823
}
......
865 866
			ctx->vflag = 1;
866 867
			break;
867 868
		default:
869
			free(ctx);
868 870
			return command_usage(&aio_read_cmd);
869 871
		}
870 872
	}
871 873

  
872
	if (optind > argc - 2)
874
	if (optind > argc - 2) {
875
		free(ctx);
873 876
		return command_usage(&aio_read_cmd);
874

  
877
	}
875 878

  
876 879
	ctx->offset = cvtnum(argv[optind]);
877 880
	if (ctx->offset < 0) {
878 881
		printf("non-numeric length argument -- %s\n", argv[optind]);
882
		free(ctx);
879 883
		return 0;
880 884
	}
881 885
	optind++;
......
883 887
	if (ctx->offset & 0x1ff) {
884 888
		printf("offset %lld is not sector aligned\n",
885 889
			(long long)ctx->offset);
890
		free(ctx);
886 891
		return 0;
887 892
	}
888 893

  
......
892 897
	gettimeofday(&ctx->t1, NULL);
893 898
	acb = bdrv_aio_readv(bs, ctx->offset >> 9, &ctx->qiov,
894 899
			      ctx->qiov.size >> 9, aio_read_done, ctx);
895
	if (!acb)
900
	if (!acb) {
901
		free(ctx->buf);
902
		free(ctx);
896 903
		return -EIO;
904
	}
897 905

  
898 906
	return 0;
899 907
}
......
952 960
			pattern = atoi(optarg);
953 961
			break;
954 962
		default:
963
			free(ctx);
955 964
			return command_usage(&aio_write_cmd);
956 965
		}
957 966
	}
958 967

  
959
	if (optind > argc - 2)
968
	if (optind > argc - 2) {
969
		free(ctx);
960 970
		return command_usage(&aio_write_cmd);
971
	}
961 972

  
962 973
	ctx->offset = cvtnum(argv[optind]);
963 974
	if (ctx->offset < 0) {
964 975
		printf("non-numeric length argument -- %s\n", argv[optind]);
976
		free(ctx);
965 977
		return 0;
966 978
	}
967 979
	optind++;
......
969 981
	if (ctx->offset & 0x1ff) {
970 982
		printf("offset %lld is not sector aligned\n",
971 983
			(long long)ctx->offset);
984
		free(ctx);
972 985
		return 0;
973 986
	}
974 987

  
......
978 991
	gettimeofday(&ctx->t1, NULL);
979 992
	acb = bdrv_aio_writev(bs, ctx->offset >> 9, &ctx->qiov,
980 993
			      ctx->qiov.size >> 9, aio_write_done, ctx);
981
	if (!acb)
994
	if (!acb) {
995
		free(ctx->buf);
996
		free(ctx);
982 997
		return -EIO;
998
	}
983 999

  
984 1000
	return 0;
985 1001
}

Also available in: Unified diff