Commit eda578e559879b1a6a85f924adf2942070ae7ec3
1 parent
04eeb8b6
Drop internal bdrv_pread()/bdrv_pwrite() APIs (Avi Kivity)
Now that scsi generic no longer uses bdrv_pread() and bdrv_pwrite(), we can drop the corresponding internal APIs, which overlap bdrv_read()/bdrv_write() and, being byte oriented, are unnatural for a block device. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6824 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
34 additions
and
89 deletions
block-raw-posix.c
... | ... | @@ -358,6 +358,12 @@ static int raw_pread(BlockDriverState *bs, int64_t offset, |
358 | 358 | return raw_pread_aligned(bs, offset, buf, count) + sum; |
359 | 359 | } |
360 | 360 | |
361 | +static int raw_read(BlockDriverState *bs, int64_t sector_num, | |
362 | + uint8_t *buf, int nb_sectors) | |
363 | +{ | |
364 | + return raw_pread(bs, sector_num * 512, buf, (uint64_t)nb_sectors * 512); | |
365 | +} | |
366 | + | |
361 | 367 | /* |
362 | 368 | * offset and count are in bytes and possibly not aligned. For files opened |
363 | 369 | * with O_DIRECT, necessary alignments are ensured before calling |
... | ... | @@ -436,6 +442,12 @@ static int raw_pwrite(BlockDriverState *bs, int64_t offset, |
436 | 442 | return raw_pwrite_aligned(bs, offset, buf, count) + sum; |
437 | 443 | } |
438 | 444 | |
445 | +static int raw_write(BlockDriverState *bs, int64_t sector_num, | |
446 | + const uint8_t *buf, int nb_sectors) | |
447 | +{ | |
448 | + return raw_pwrite(bs, sector_num * 512, buf, (uint64_t)nb_sectors * 512); | |
449 | +} | |
450 | + | |
439 | 451 | #ifdef CONFIG_AIO |
440 | 452 | /***********************************************************/ |
441 | 453 | /* Unix AIO using POSIX AIO */ |
... | ... | @@ -843,8 +855,8 @@ BlockDriver bdrv_raw = { |
843 | 855 | .aiocb_size = sizeof(RawAIOCB), |
844 | 856 | #endif |
845 | 857 | |
846 | - .bdrv_pread = raw_pread, | |
847 | - .bdrv_pwrite = raw_pwrite, | |
858 | + .bdrv_read = raw_read, | |
859 | + .bdrv_write = raw_write, | |
848 | 860 | .bdrv_truncate = raw_truncate, |
849 | 861 | .bdrv_getlength = raw_getlength, |
850 | 862 | }; |
... | ... | @@ -1219,8 +1231,8 @@ BlockDriver bdrv_host_device = { |
1219 | 1231 | .aiocb_size = sizeof(RawAIOCB), |
1220 | 1232 | #endif |
1221 | 1233 | |
1222 | - .bdrv_pread = raw_pread, | |
1223 | - .bdrv_pwrite = raw_pwrite, | |
1234 | + .bdrv_read = raw_read, | |
1235 | + .bdrv_write = raw_write, | |
1224 | 1236 | .bdrv_getlength = raw_getlength, |
1225 | 1237 | |
1226 | 1238 | /* removable device support */ | ... | ... |
block-raw-win32.c
... | ... | @@ -122,13 +122,15 @@ static int raw_open(BlockDriverState *bs, const char *filename, int flags) |
122 | 122 | return 0; |
123 | 123 | } |
124 | 124 | |
125 | -static int raw_pread(BlockDriverState *bs, int64_t offset, | |
126 | - uint8_t *buf, int count) | |
125 | +static int raw_read(BlockDriverState *bs, int64_t sector_num, | |
126 | + uint8_t *buf, int nb_sectors) | |
127 | 127 | { |
128 | 128 | BDRVRawState *s = bs->opaque; |
129 | 129 | OVERLAPPED ov; |
130 | 130 | DWORD ret_count; |
131 | 131 | int ret; |
132 | + int64_t offset = sector_num * 512; | |
133 | + int count = nb_sectors * 512; | |
132 | 134 | |
133 | 135 | memset(&ov, 0, sizeof(ov)); |
134 | 136 | ov.Offset = offset; |
... | ... | @@ -146,13 +148,15 @@ static int raw_pread(BlockDriverState *bs, int64_t offset, |
146 | 148 | return ret_count; |
147 | 149 | } |
148 | 150 | |
149 | -static int raw_pwrite(BlockDriverState *bs, int64_t offset, | |
150 | - const uint8_t *buf, int count) | |
151 | +static int raw_write(BlockDriverState *bs, int64_t sector_num, | |
152 | + const uint8_t *buf, int nb_sectors) | |
151 | 153 | { |
152 | 154 | BDRVRawState *s = bs->opaque; |
153 | 155 | OVERLAPPED ov; |
154 | 156 | DWORD ret_count; |
155 | 157 | int ret; |
158 | + int64_t offset = sector_num * 512; | |
159 | + int count = nb_sectors * 512; | |
156 | 160 | |
157 | 161 | memset(&ov, 0, sizeof(ov)); |
158 | 162 | ov.Offset = offset; |
... | ... | @@ -359,8 +363,8 @@ BlockDriver bdrv_raw = { |
359 | 363 | .bdrv_aio_cancel = raw_aio_cancel, |
360 | 364 | .aiocb_size = sizeof(RawAIOCB); |
361 | 365 | #endif |
362 | - .bdrv_pread = raw_pread, | |
363 | - .bdrv_pwrite = raw_pwrite, | |
366 | + .bdrv_read = raw_read, | |
367 | + .bdrv_write = raw_write, | |
364 | 368 | .bdrv_truncate = raw_truncate, |
365 | 369 | .bdrv_getlength = raw_getlength, |
366 | 370 | }; |
... | ... | @@ -508,7 +512,7 @@ BlockDriver bdrv_host_device = { |
508 | 512 | .bdrv_aio_cancel = raw_aio_cancel, |
509 | 513 | .aiocb_size = sizeof(RawAIOCB); |
510 | 514 | #endif |
511 | - .bdrv_pread = raw_pread, | |
512 | - .bdrv_pwrite = raw_pwrite, | |
515 | + .bdrv_read = raw_read, | |
516 | + .bdrv_write = raw_write, | |
513 | 517 | .bdrv_getlength = raw_getlength, |
514 | 518 | }; | ... | ... |
block.c
... | ... | @@ -142,7 +142,7 @@ static void bdrv_register(BlockDriver *bdrv) |
142 | 142 | bdrv->bdrv_aio_write = bdrv_aio_write_em; |
143 | 143 | bdrv->bdrv_aio_cancel = bdrv_aio_cancel_em; |
144 | 144 | bdrv->aiocb_size = sizeof(BlockDriverAIOCBSync); |
145 | - } else if (!bdrv->bdrv_read && !bdrv->bdrv_pread) { | |
145 | + } else if (!bdrv->bdrv_read) { | |
146 | 146 | /* add synchronous IO emulation layer */ |
147 | 147 | bdrv->bdrv_read = bdrv_read_em; |
148 | 148 | bdrv->bdrv_write = bdrv_write_em; |
... | ... | @@ -568,22 +568,7 @@ int bdrv_read(BlockDriverState *bs, int64_t sector_num, |
568 | 568 | if (bdrv_check_request(bs, sector_num, nb_sectors)) |
569 | 569 | return -EIO; |
570 | 570 | |
571 | - if (drv->bdrv_pread) { | |
572 | - int ret, len; | |
573 | - len = nb_sectors * 512; | |
574 | - ret = drv->bdrv_pread(bs, sector_num * 512, buf, len); | |
575 | - if (ret < 0) | |
576 | - return ret; | |
577 | - else if (ret != len) | |
578 | - return -EINVAL; | |
579 | - else { | |
580 | - bs->rd_bytes += (unsigned) len; | |
581 | - bs->rd_ops ++; | |
582 | - return 0; | |
583 | - } | |
584 | - } else { | |
585 | - return drv->bdrv_read(bs, sector_num, buf, nb_sectors); | |
586 | - } | |
571 | + return drv->bdrv_read(bs, sector_num, buf, nb_sectors); | |
587 | 572 | } |
588 | 573 | |
589 | 574 | /* Return < 0 if error. Important errors are: |
... | ... | @@ -603,27 +588,11 @@ int bdrv_write(BlockDriverState *bs, int64_t sector_num, |
603 | 588 | if (bdrv_check_request(bs, sector_num, nb_sectors)) |
604 | 589 | return -EIO; |
605 | 590 | |
606 | - if (drv->bdrv_pwrite) { | |
607 | - int ret, len, count = 0; | |
608 | - len = nb_sectors * 512; | |
609 | - do { | |
610 | - ret = drv->bdrv_pwrite(bs, sector_num * 512, buf, len - count); | |
611 | - if (ret < 0) { | |
612 | - printf("bdrv_write ret=%d\n", ret); | |
613 | - return ret; | |
614 | - } | |
615 | - count += ret; | |
616 | - buf += ret; | |
617 | - } while (count != len); | |
618 | - bs->wr_bytes += (unsigned) len; | |
619 | - bs->wr_ops ++; | |
620 | - return 0; | |
621 | - } | |
622 | 591 | return drv->bdrv_write(bs, sector_num, buf, nb_sectors); |
623 | 592 | } |
624 | 593 | |
625 | -static int bdrv_pread_em(BlockDriverState *bs, int64_t offset, | |
626 | - uint8_t *buf, int count1) | |
594 | +int bdrv_pread(BlockDriverState *bs, int64_t offset, | |
595 | + void *buf, int count1) | |
627 | 596 | { |
628 | 597 | uint8_t tmp_buf[SECTOR_SIZE]; |
629 | 598 | int len, nb_sectors, count; |
... | ... | @@ -666,8 +635,8 @@ static int bdrv_pread_em(BlockDriverState *bs, int64_t offset, |
666 | 635 | return count1; |
667 | 636 | } |
668 | 637 | |
669 | -static int bdrv_pwrite_em(BlockDriverState *bs, int64_t offset, | |
670 | - const uint8_t *buf, int count1) | |
638 | +int bdrv_pwrite(BlockDriverState *bs, int64_t offset, | |
639 | + const void *buf, int count1) | |
671 | 640 | { |
672 | 641 | uint8_t tmp_buf[SECTOR_SIZE]; |
673 | 642 | int len, nb_sectors, count; |
... | ... | @@ -715,42 +684,6 @@ static int bdrv_pwrite_em(BlockDriverState *bs, int64_t offset, |
715 | 684 | } |
716 | 685 | |
717 | 686 | /** |
718 | - * Read with byte offsets (needed only for file protocols) | |
719 | - */ | |
720 | -int bdrv_pread(BlockDriverState *bs, int64_t offset, | |
721 | - void *buf1, int count1) | |
722 | -{ | |
723 | - BlockDriver *drv = bs->drv; | |
724 | - | |
725 | - if (!drv) | |
726 | - return -ENOMEDIUM; | |
727 | - if (bdrv_check_byte_request(bs, offset, count1)) | |
728 | - return -EIO; | |
729 | - | |
730 | - if (!drv->bdrv_pread) | |
731 | - return bdrv_pread_em(bs, offset, buf1, count1); | |
732 | - return drv->bdrv_pread(bs, offset, buf1, count1); | |
733 | -} | |
734 | - | |
735 | -/** | |
736 | - * Write with byte offsets (needed only for file protocols) | |
737 | - */ | |
738 | -int bdrv_pwrite(BlockDriverState *bs, int64_t offset, | |
739 | - const void *buf1, int count1) | |
740 | -{ | |
741 | - BlockDriver *drv = bs->drv; | |
742 | - | |
743 | - if (!drv) | |
744 | - return -ENOMEDIUM; | |
745 | - if (bdrv_check_byte_request(bs, offset, count1)) | |
746 | - return -EIO; | |
747 | - | |
748 | - if (!drv->bdrv_pwrite) | |
749 | - return bdrv_pwrite_em(bs, offset, buf1, count1); | |
750 | - return drv->bdrv_pwrite(bs, offset, buf1, count1); | |
751 | -} | |
752 | - | |
753 | -/** | |
754 | 687 | * Truncate file to 'offset' bytes (needed only for file protocols) |
755 | 688 | */ |
756 | 689 | int bdrv_truncate(BlockDriverState *bs, int64_t offset) | ... | ... |
block_int.h
... | ... | @@ -58,10 +58,6 @@ struct BlockDriver { |
58 | 58 | int aiocb_size; |
59 | 59 | |
60 | 60 | const char *protocol_name; |
61 | - int (*bdrv_pread)(BlockDriverState *bs, int64_t offset, | |
62 | - uint8_t *buf, int count); | |
63 | - int (*bdrv_pwrite)(BlockDriverState *bs, int64_t offset, | |
64 | - const uint8_t *buf, int count); | |
65 | 61 | int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset); |
66 | 62 | int64_t (*bdrv_getlength)(BlockDriverState *bs); |
67 | 63 | int (*bdrv_write_compressed)(BlockDriverState *bs, int64_t sector_num, | ... | ... |