@@ -2128,37 +2128,36 @@ zfs_read(zfs_file_t file, char *buf, uint64_t len)
* now, this only reads in one data block at a time.
*/
length = len;
red = 0;
while (length) {
void *t;
/*
* Find requested blkid and the offset within that block.
*/
uint64_t blkid = file->offset + red;
- blkid = do_div(blkid, blksz);
+ uint64_t blkoff = do_div(blkid, blksz);
free(data->file_buf);
data->file_buf = 0;
err = dmu_read(&(data->dnode), blkid, &t,
0, data);
data->file_buf = t;
if (err)
return -1;
data->file_start = blkid * blksz;
data->file_end = data->file_start + blksz;
movesize = min(length, data->file_end - (int)file->offset - red);
- memmove(buf, data->file_buf + file->offset + red
- - data->file_start, movesize);
+ memmove(buf, data->file_buf + blkoff, movesize);
buf += movesize;
length -= movesize;
red += movesize;
}
return len;
}
int
zfs_close(zfs_file_t file)