diff -r c682ae7a1722 tools/blktap/drivers/block-sync.c --- a/tools/blktap/drivers/block-sync.c Fri Sep 01 12:16:21 2006 +0100 +++ b/tools/blktap/drivers/block-sync.c Sat Sep 02 02:28:12 2006 +0900 @@ -119,24 +119,24 @@ int tdsync_open (struct td_state *s, con return (0 - errno); /* Open the file */ - fd = open(name, O_RDWR | O_DIRECT | O_LARGEFILE); - - if ( (fd == -1) && (errno == EINVAL) ) { - - /* Maybe O_DIRECT isn't supported. */ - fd = open(name, O_RDWR | O_LARGEFILE); - if (fd != -1) DPRINTF("WARNING: Accessing image without" - "O_DIRECT! (%s)\n", name); - - } else if (fd != -1) DPRINTF("open(%s) with O_DIRECT\n", name); - - if (fd == -1) { + fd = open(name, O_RDWR | O_DIRECT | O_LARGEFILE); + + if ( (fd == -1) && (errno == EINVAL) ) { + + /* Maybe O_DIRECT isn't supported. */ + fd = open(name, O_RDWR | O_LARGEFILE); + if (fd != -1) DPRINTF("WARNING: Accessing image without" + "O_DIRECT! (%s)\n", name); + + } else if (fd != -1) DPRINTF("open(%s) with O_DIRECT\n", name); + + if (fd == -1) { DPRINTF("Unable to open [%s]!\n",name); - ret = 0 - errno; - goto done; - } - - prv->fd = fd; + ret = 0 - errno; + goto done; + } + + prv->fd = fd; ret = get_image_info(s, fd); done: @@ -156,15 +156,15 @@ done: if (ret != (off_t)-1) { ret = read(prv->fd, buf, size); if (ret != size) { - ret = 0 - errno; + ret = -errno; } else { ret = 1; } - } else ret = 0 - errno; + } else ret = -errno; cb(s, (ret < 0) ? ret: 0, id, private); - return 1; + return ret; } int tdsync_queue_write(struct td_state *s, uint64_t sector, @@ -174,21 +174,21 @@ done: struct tdsync_state *prv = (struct tdsync_state *)s->private; int size = nb_sectors * s->sector_size; uint64_t offset = sector * (uint64_t)s->sector_size; - int ret = 0; + int ret; ret = lseek(prv->fd, offset, SEEK_SET); if (ret != (off_t)-1) { ret = write(prv->fd, buf, size); if (ret != size) { - ret = 0 - errno; + ret = -errno; } else { ret = 1; } - } else ret = 0 - errno; + } else ret = -errno; cb(s, (ret < 0) ? ret : 0, id, private); - return 1; + return ret; } int tdsync_submit(struct td_state *s)