Re: [Qemu-devel] [PATCH 05/10] block: Return original error codes in bdrv_pread/write

2010-01-19 Thread Christoph Hellwig
On Mon, Jan 18, 2010 at 01:11:31PM +0100, Kevin Wolf wrote:
 Don't assume -EIO but return the real error.

While I'm not very found of assignment inside of if statements the patch
looks correct,


Reviewed-by: Christoph Hellwig h...@lst.de





[Qemu-devel] [PATCH 05/10] block: Return original error codes in bdrv_pread/write

2010-01-18 Thread Kevin Wolf
Don't assume -EIO but return the real error.

Signed-off-by: Kevin Wolf kw...@redhat.com
---
 block.c |   34 ++
 1 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/block.c b/block.c
index 115e591..a4c4953 100644
--- a/block.c
+++ b/block.c
@@ -717,6 +717,7 @@ int bdrv_pread(BlockDriverState *bs, int64_t offset,
 uint8_t tmp_buf[BDRV_SECTOR_SIZE];
 int len, nb_sectors, count;
 int64_t sector_num;
+int ret;
 
 count = count1;
 /* first read to align to sector start */
@@ -725,8 +726,8 @@ int bdrv_pread(BlockDriverState *bs, int64_t offset,
 len = count;
 sector_num = offset  BDRV_SECTOR_BITS;
 if (len  0) {
-if (bdrv_read(bs, sector_num, tmp_buf, 1)  0)
-return -EIO;
+if ((ret = bdrv_read(bs, sector_num, tmp_buf, 1))  0)
+return ret;
 memcpy(buf, tmp_buf + (offset  (BDRV_SECTOR_SIZE - 1)), len);
 count -= len;
 if (count == 0)
@@ -738,8 +739,8 @@ int bdrv_pread(BlockDriverState *bs, int64_t offset,
 /* read the sectors in place */
 nb_sectors = count  BDRV_SECTOR_BITS;
 if (nb_sectors  0) {
-if (bdrv_read(bs, sector_num, buf, nb_sectors)  0)
-return -EIO;
+if ((ret = bdrv_read(bs, sector_num, buf, nb_sectors))  0)
+return ret;
 sector_num += nb_sectors;
 len = nb_sectors  BDRV_SECTOR_BITS;
 buf += len;
@@ -748,8 +749,8 @@ int bdrv_pread(BlockDriverState *bs, int64_t offset,
 
 /* add data from the last sector */
 if (count  0) {
-if (bdrv_read(bs, sector_num, tmp_buf, 1)  0)
-return -EIO;
+if ((ret = bdrv_read(bs, sector_num, tmp_buf, 1))  0)
+return ret;
 memcpy(buf, tmp_buf, count);
 }
 return count1;
@@ -761,6 +762,7 @@ int bdrv_pwrite(BlockDriverState *bs, int64_t offset,
 uint8_t tmp_buf[BDRV_SECTOR_SIZE];
 int len, nb_sectors, count;
 int64_t sector_num;
+int ret;
 
 count = count1;
 /* first write to align to sector start */
@@ -769,11 +771,11 @@ int bdrv_pwrite(BlockDriverState *bs, int64_t offset,
 len = count;
 sector_num = offset  BDRV_SECTOR_BITS;
 if (len  0) {
-if (bdrv_read(bs, sector_num, tmp_buf, 1)  0)
-return -EIO;
+if ((ret = bdrv_read(bs, sector_num, tmp_buf, 1))  0)
+return ret;
 memcpy(tmp_buf + (offset  (BDRV_SECTOR_SIZE - 1)), buf, len);
-if (bdrv_write(bs, sector_num, tmp_buf, 1)  0)
-return -EIO;
+if ((ret = bdrv_write(bs, sector_num, tmp_buf, 1))  0)
+return ret;
 count -= len;
 if (count == 0)
 return count1;
@@ -784,8 +786,8 @@ int bdrv_pwrite(BlockDriverState *bs, int64_t offset,
 /* write the sectors in place */
 nb_sectors = count  BDRV_SECTOR_BITS;
 if (nb_sectors  0) {
-if (bdrv_write(bs, sector_num, buf, nb_sectors)  0)
-return -EIO;
+if ((ret = bdrv_write(bs, sector_num, buf, nb_sectors))  0)
+return ret;
 sector_num += nb_sectors;
 len = nb_sectors  BDRV_SECTOR_BITS;
 buf += len;
@@ -794,11 +796,11 @@ int bdrv_pwrite(BlockDriverState *bs, int64_t offset,
 
 /* add data from the last sector */
 if (count  0) {
-if (bdrv_read(bs, sector_num, tmp_buf, 1)  0)
-return -EIO;
+if ((ret = bdrv_read(bs, sector_num, tmp_buf, 1))  0)
+return ret;
 memcpy(tmp_buf, buf, count);
-if (bdrv_write(bs, sector_num, tmp_buf, 1)  0)
-return -EIO;
+if ((ret = bdrv_write(bs, sector_num, tmp_buf, 1))  0)
+return ret;
 }
 return count1;
 }
-- 
1.6.2.5