Commit eda578e559879b1a6a85f924adf2942070ae7ec3

Authored by aliguori
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
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 };
... ...
... ... @@ -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,
... ...