Changeset View
Changeset View
Standalone View
Standalone View
libsa/zfs/zfs.c
Show First 20 Lines • Show All 429 Lines • ▼ Show 20 Lines | vdev_read(vdev_t *vdev, void *priv, off_t offset, void *buf, size_t bytes) | ||||
/* Partial data return from first sector */ | /* Partial data return from first sector */ | ||||
if (head > 0) { | if (head > 0) { | ||||
res = read(fd, bouncebuf, secsz); | res = read(fd, bouncebuf, secsz); | ||||
if (res != secsz) { | if (res != secsz) { | ||||
ret = EIO; | ret = EIO; | ||||
goto error; | goto error; | ||||
} | } | ||||
memcpy(outbuf, bouncebuf + head, secsz - head); | memcpy(outbuf, bouncebuf + head, min(secsz - head, bytes)); | ||||
outbuf += secsz - head; | outbuf += min(secsz - head, bytes); | ||||
} | } | ||||
/* Full data return from read sectors */ | /* Full data return from read sectors */ | ||||
if (full_sec_size > 0) { | if (full_sec_size > 0) { | ||||
res = read(fd, outbuf, full_sec_size); | res = read(fd, outbuf, full_sec_size); | ||||
if (res != full_sec_size) { | if (res != full_sec_size) { | ||||
ret = EIO; | ret = EIO; | ||||
goto error; | goto error; | ||||
▲ Show 20 Lines • Show All 619 Lines • Show Last 20 Lines |