Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Mar 2012 20:53:35 +0100
From:      Luis Garces-Erice <luis.garces@gmail.com>
To:        freebsd-bugs@freebsd.org
Subject:   kern/164445: [zfs][patch] WAS: lseek(2) always returns ENXIO with SEEK_DATA/SEEK_HOLE on 9.0 64bit ZFS
Message-ID:  <CALw-EADgZuQjzL97wBwOB4bmiGQDsc6UjhNxba-PakObZ9Yi-A@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--f46d04426bd6d65b2504baac8337
Content-Type: text/plain; charset=ISO-8859-1

Hi all

after digging a bit more into this
(http://www.freebsd.org/cgi/query-pr.cgi?pr=164445), I've found the
problem to be in ZFS or below. The patch attached addresses the
symptom, but the problem remains.

When invoking SEEK_DATA/SEEK_HOLE on a file on ZFS in FreeBSD 9.0 64
bit, the functions ddi_copyin and ddi_copyout in zfs_ioctl() do not
copy the offset passed from the application to the ioctl. The offset
is passed correctly to zfs_ioctl(), though, but those functions copy
garbage into the offset used by zfs_holey(). The corrupted offset is
often bigger than the file, and thus the ioctl returns ENXIO.

The patch does the copy of the offset passed from the application
correctly, and allows lseek(2) with SEEK_DATA/SEEK_HOLE to be used on
ZFS, but it is not a solution. I couldn't see a problem in the
assembler of the copyin and copyout functions in
sys/amd64/amd64/support.S, but I might be wrong, I'm no assembler
expert.


-- 
Luis
****

--f46d04426bd6d65b2504baac8337
Content-Type: text/plain; charset=US-ASCII; name="zfs_vnops.c.patch.txt"
Content-Disposition: attachment; filename="zfs_vnops.c.patch.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gzis96840

ZGlmZiAtdyAtdSAtciBzeXMub3JpZy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1v
bi9mcy96ZnMvemZzX3Zub3BzLmMgc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29t
bW9uL2ZzL3pmcy96ZnNfdm5vcHMuYwotLS0gc3lzLm9yaWcvY2RkbC9jb250cmliL29wZW5zb2xh
cmlzL3V0cy9jb21tb24vZnMvemZzL3pmc192bm9wcy5jCTIwMTItMDEtMDMgMDQ6Mjc6MDMuMDAw
MDAwMDAwICswMTAwCisrKyBzeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24v
ZnMvemZzL3pmc192bm9wcy5jCTIwMTItMDMtMDYgMTE6MjY6MjcuMDAwMDAwMDAwICswMTAwCkBA
IC0yOTYsNiArMjk2LDggQEAKIAkJaWYgKGRkaV9jb3B5aW4oKHZvaWQgKilkYXRhLCAmb2ZmLCBz
aXplb2YgKG9mZiksIGZsYWcpKQogCQkJcmV0dXJuIChFRkFVTFQpOwogCisJCS8vIGRkaV9jb3B5
aW4gZGlkIG5vdCBjb3B5IHRoZSBvZmZzZXQKKwkJb2ZmID0gKG9mZnNldF90KSooKG9mZnNldF90
ICopZGF0YSk7CiAJCXpwID0gVlRPWih2cCk7CiAJCXpmc3ZmcyA9IHpwLT56X3pmc3ZmczsKIAkJ
WkZTX0VOVEVSKHpmc3Zmcyk7CkBAIC0zMDgsNiArMzEwLDggQEAKIAkJCXJldHVybiAoZXJyb3Ip
OwogCQlpZiAoZGRpX2NvcHlvdXQoJm9mZiwgKHZvaWQgKilkYXRhLCBzaXplb2YgKG9mZiksIGZs
YWcpKQogCQkJcmV0dXJuIChFRkFVTFQpOworCQkvLyBkZGlfY29weW91dCBkaWQgbm90IGNvcHkg
dGhlIG9mZnNldAorCQkqKChvZmZzZXRfdCAqKWRhdGEpPW9mZjsKIAkJcmV0dXJuICgwKTsKIAl9
CiAJcmV0dXJuIChFTk9UVFkpOwo=
--f46d04426bd6d65b2504baac8337--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALw-EADgZuQjzL97wBwOB4bmiGQDsc6UjhNxba-PakObZ9Yi-A>