On Sat, May 27, 2017 at 07:24:30PM -0400, Ted Unangst wrote:
> using pread and pwrite is a little shorter and half the syscalls.
>
ok mlarkin. thanks!
> Index: virtio.c
> ===
> RCS file: /cvs/src/usr.sbin/vmd/virtio.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 virtio.c
> --- virtio.c 11 May 2017 07:31:20 - 1.46
> +++ virtio.c 27 May 2017 23:20:23 -
> @@ -335,14 +335,7 @@ vioblk_do_read(struct vioblk_dev *dev, o
> return (NULL);
> }
>
> - if (lseek(dev->fd, sector * VIRTIO_BLK_SECTOR_SIZE,
> - SEEK_SET) == -1) {
> - log_warn("seek error in vioblk read");
> - free(buf);
> - return (NULL);
> - }
> -
> - if (read(dev->fd, buf, sz) != sz) {
> + if (pread(dev->fd, buf, sz, sector * VIRTIO_BLK_SECTOR_SIZE) != sz) {
> log_warn("vioblk read error");
> free(buf);
> return (NULL);
> @@ -354,13 +347,7 @@ vioblk_do_read(struct vioblk_dev *dev, o
> static int
> vioblk_do_write(struct vioblk_dev *dev, off_t sector, char *buf, ssize_t sz)
> {
> - if (lseek(dev->fd, sector * VIRTIO_BLK_SECTOR_SIZE,
> - SEEK_SET) == -1) {
> - log_warn("seek error in vioblk write");
> - return (1);
> - }
> -
> - if (write(dev->fd, buf, sz) != sz) {
> + if (pwrite(dev->fd, buf, sz, sector * VIRTIO_BLK_SECTOR_SIZE) != sz) {
> log_warn("vioblk write error");
> return (1);
> }
>