From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Lhr1r-0002ni-Gy for qemu-devel@nongnu.org; Thu, 12 Mar 2009 15:57:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Lhr1q-0002mT-A7 for qemu-devel@nongnu.org; Thu, 12 Mar 2009 15:57:18 -0400 Received: from [199.232.76.173] (port=59024 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lhr1q-0002mF-1O for qemu-devel@nongnu.org; Thu, 12 Mar 2009 15:57:18 -0400 Received: from savannah.gnu.org ([199.232.41.3]:49573 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Lhr1p-00038M-M7 for qemu-devel@nongnu.org; Thu, 12 Mar 2009 15:57:17 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Lhr1p-00030u-5Q for qemu-devel@nongnu.org; Thu, 12 Mar 2009 19:57:17 +0000 Received: from aliguori by cvs.savannah.gnu.org with local (Exim 4.69) (envelope-from ) id 1Lhr1o-00030q-U4 for qemu-devel@nongnu.org; Thu, 12 Mar 2009 19:57:17 +0000 MIME-Version: 1.0 Errors-To: aliguori Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Anthony Liguori Message-Id: Date: Thu, 12 Mar 2009 19:57:16 +0000 Subject: [Qemu-devel] [6824] Drop internal bdrv_pread()/bdrv_pwrite() APIs (Avi Kivity) Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 6824 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6824 Author: aliguori Date: 2009-03-12 19:57:16 +0000 (Thu, 12 Mar 2009) Log Message: ----------- 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 Signed-off-by: Anthony Liguori Modified Paths: -------------- trunk/block-raw-posix.c trunk/block-raw-win32.c trunk/block.c trunk/block_int.h Modified: trunk/block-raw-posix.c =================================================================== --- trunk/block-raw-posix.c 2009-03-12 19:57:12 UTC (rev 6823) +++ trunk/block-raw-posix.c 2009-03-12 19:57:16 UTC (rev 6824) @@ -358,6 +358,12 @@ return raw_pread_aligned(bs, offset, buf, count) + sum; } +static int raw_read(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors) +{ + return raw_pread(bs, sector_num * 512, buf, (uint64_t)nb_sectors * 512); +} + /* * offset and count are in bytes and possibly not aligned. For files opened * with O_DIRECT, necessary alignments are ensured before calling @@ -436,6 +442,12 @@ return raw_pwrite_aligned(bs, offset, buf, count) + sum; } +static int raw_write(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors) +{ + return raw_pwrite(bs, sector_num * 512, buf, (uint64_t)nb_sectors * 512); +} + #ifdef CONFIG_AIO /***********************************************************/ /* Unix AIO using POSIX AIO */ @@ -843,8 +855,8 @@ .aiocb_size = sizeof(RawAIOCB), #endif - .bdrv_pread = raw_pread, - .bdrv_pwrite = raw_pwrite, + .bdrv_read = raw_read, + .bdrv_write = raw_write, .bdrv_truncate = raw_truncate, .bdrv_getlength = raw_getlength, }; @@ -1219,8 +1231,8 @@ .aiocb_size = sizeof(RawAIOCB), #endif - .bdrv_pread = raw_pread, - .bdrv_pwrite = raw_pwrite, + .bdrv_read = raw_read, + .bdrv_write = raw_write, .bdrv_getlength = raw_getlength, /* removable device support */ Modified: trunk/block-raw-win32.c =================================================================== --- trunk/block-raw-win32.c 2009-03-12 19:57:12 UTC (rev 6823) +++ trunk/block-raw-win32.c 2009-03-12 19:57:16 UTC (rev 6824) @@ -122,13 +122,15 @@ return 0; } -static int raw_pread(BlockDriverState *bs, int64_t offset, - uint8_t *buf, int count) +static int raw_read(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors) { BDRVRawState *s = bs->opaque; OVERLAPPED ov; DWORD ret_count; int ret; + int64_t offset = sector_num * 512; + int count = nb_sectors * 512; memset(&ov, 0, sizeof(ov)); ov.Offset = offset; @@ -146,13 +148,15 @@ return ret_count; } -static int raw_pwrite(BlockDriverState *bs, int64_t offset, - const uint8_t *buf, int count) +static int raw_write(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors) { BDRVRawState *s = bs->opaque; OVERLAPPED ov; DWORD ret_count; int ret; + int64_t offset = sector_num * 512; + int count = nb_sectors * 512; memset(&ov, 0, sizeof(ov)); ov.Offset = offset; @@ -359,8 +363,8 @@ .bdrv_aio_cancel = raw_aio_cancel, .aiocb_size = sizeof(RawAIOCB); #endif - .bdrv_pread = raw_pread, - .bdrv_pwrite = raw_pwrite, + .bdrv_read = raw_read, + .bdrv_write = raw_write, .bdrv_truncate = raw_truncate, .bdrv_getlength = raw_getlength, }; @@ -508,7 +512,7 @@ .bdrv_aio_cancel = raw_aio_cancel, .aiocb_size = sizeof(RawAIOCB); #endif - .bdrv_pread = raw_pread, - .bdrv_pwrite = raw_pwrite, + .bdrv_read = raw_read, + .bdrv_write = raw_write, .bdrv_getlength = raw_getlength, }; Modified: trunk/block.c =================================================================== --- trunk/block.c 2009-03-12 19:57:12 UTC (rev 6823) +++ trunk/block.c 2009-03-12 19:57:16 UTC (rev 6824) @@ -142,7 +142,7 @@ bdrv->bdrv_aio_write = bdrv_aio_write_em; bdrv->bdrv_aio_cancel = bdrv_aio_cancel_em; bdrv->aiocb_size = sizeof(BlockDriverAIOCBSync); - } else if (!bdrv->bdrv_read && !bdrv->bdrv_pread) { + } else if (!bdrv->bdrv_read) { /* add synchronous IO emulation layer */ bdrv->bdrv_read = bdrv_read_em; bdrv->bdrv_write = bdrv_write_em; @@ -568,22 +568,7 @@ if (bdrv_check_request(bs, sector_num, nb_sectors)) return -EIO; - if (drv->bdrv_pread) { - int ret, len; - len = nb_sectors * 512; - ret = drv->bdrv_pread(bs, sector_num * 512, buf, len); - if (ret < 0) - return ret; - else if (ret != len) - return -EINVAL; - else { - bs->rd_bytes += (unsigned) len; - bs->rd_ops ++; - return 0; - } - } else { - return drv->bdrv_read(bs, sector_num, buf, nb_sectors); - } + return drv->bdrv_read(bs, sector_num, buf, nb_sectors); } /* Return < 0 if error. Important errors are: @@ -603,27 +588,11 @@ if (bdrv_check_request(bs, sector_num, nb_sectors)) return -EIO; - if (drv->bdrv_pwrite) { - int ret, len, count = 0; - len = nb_sectors * 512; - do { - ret = drv->bdrv_pwrite(bs, sector_num * 512, buf, len - count); - if (ret < 0) { - printf("bdrv_write ret=%d\n", ret); - return ret; - } - count += ret; - buf += ret; - } while (count != len); - bs->wr_bytes += (unsigned) len; - bs->wr_ops ++; - return 0; - } return drv->bdrv_write(bs, sector_num, buf, nb_sectors); } -static int bdrv_pread_em(BlockDriverState *bs, int64_t offset, - uint8_t *buf, int count1) +int bdrv_pread(BlockDriverState *bs, int64_t offset, + void *buf, int count1) { uint8_t tmp_buf[SECTOR_SIZE]; int len, nb_sectors, count; @@ -666,8 +635,8 @@ return count1; } -static int bdrv_pwrite_em(BlockDriverState *bs, int64_t offset, - const uint8_t *buf, int count1) +int bdrv_pwrite(BlockDriverState *bs, int64_t offset, + const void *buf, int count1) { uint8_t tmp_buf[SECTOR_SIZE]; int len, nb_sectors, count; @@ -715,42 +684,6 @@ } /** - * Read with byte offsets (needed only for file protocols) - */ -int bdrv_pread(BlockDriverState *bs, int64_t offset, - void *buf1, int count1) -{ - BlockDriver *drv = bs->drv; - - if (!drv) - return -ENOMEDIUM; - if (bdrv_check_byte_request(bs, offset, count1)) - return -EIO; - - if (!drv->bdrv_pread) - return bdrv_pread_em(bs, offset, buf1, count1); - return drv->bdrv_pread(bs, offset, buf1, count1); -} - -/** - * Write with byte offsets (needed only for file protocols) - */ -int bdrv_pwrite(BlockDriverState *bs, int64_t offset, - const void *buf1, int count1) -{ - BlockDriver *drv = bs->drv; - - if (!drv) - return -ENOMEDIUM; - if (bdrv_check_byte_request(bs, offset, count1)) - return -EIO; - - if (!drv->bdrv_pwrite) - return bdrv_pwrite_em(bs, offset, buf1, count1); - return drv->bdrv_pwrite(bs, offset, buf1, count1); -} - -/** * Truncate file to 'offset' bytes (needed only for file protocols) */ int bdrv_truncate(BlockDriverState *bs, int64_t offset) Modified: trunk/block_int.h =================================================================== --- trunk/block_int.h 2009-03-12 19:57:12 UTC (rev 6823) +++ trunk/block_int.h 2009-03-12 19:57:16 UTC (rev 6824) @@ -58,10 +58,6 @@ int aiocb_size; const char *protocol_name; - int (*bdrv_pread)(BlockDriverState *bs, int64_t offset, - uint8_t *buf, int count); - int (*bdrv_pwrite)(BlockDriverState *bs, int64_t offset, - const uint8_t *buf, int count); int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset); int64_t (*bdrv_getlength)(BlockDriverState *bs); int (*bdrv_write_compressed)(BlockDriverState *bs, int64_t sector_num,