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>