Date: Fri, 4 May 2007 10:19:56 -0500 From: "Scot Hetzel" <swhetzel@gmail.com> To: "Bruce Evans" <bde@zeta.org.au> Cc: emulation@freebsd.org Subject: Re: linuxolator: LTP lseek03 failure Message-ID: <790a9fff0705040819u24e4c2f0s5c9fc34b93770e13@mail.gmail.com> In-Reply-To: <20070504190007.Y37951@besplex.bde.org> References: <790a9fff0705021345j2ad9ae98o56aaf357d556fe27@mail.gmail.com> <790a9fff0705040004oab16ed8q1a1c476386379ea9@mail.gmail.com> <20070504190007.Y37951@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 5/4/07, Bruce Evans <bde@zeta.org.au> wrote: > On Fri, 4 May 2007, Scot Hetzel wrote: > > > On 5/2/07, Scot Hetzel <swhetzel@gmail.com> wrote: > >> I have investigated the new LTP test failure for lseek03, and the > >> first test sets whence to 4 (SEEK_HOLE): > >> > >> test 1 lseek(tfile_1554, 1, 4) Failed, errno=25 Inappropriate ioctl > >> for device, expected 22(EINVAL) > >> > > Looking thru -CURRENT, I found that SEEK_HOLE and SEEK_DATA were added > > to lseek (sys/kern/vfs_syscalls.c 1.437) on April 5th, 2007 by pjd as > > a requirement for the ZFS implementation. > > The main bug is in the implementation of SEEK_HOLE and SEEK_DATA. This > uses fo_ioctl() and fo_ioctl() returns ENOTTY if the file system doesn't > support these seeks, but ENOTTY (Inappropriate ioctl for device) is a > very inappropriate errno for a syscall that is not ioctl(), especially > on a file that is not a device. POSIX requires EINVAL if the `whence' > arg is not a standard POSIX one, and I think ENOTTY should be translated > to this. > I see three places where this could be fixed: kern/vfs_vnops.c:vn_ioctl(...) kern/vfs_syscalls.c:lseek(...) compat/linux/linux_file.c:(linux_lseek and linux_llseek) Would the best fix be to change the native lseek to return EINVAL when fo_ioctl returns ENOTTY? Scot -- DISCLAIMER: No electrons were mamed while sending this message. Only slightly bruised.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?790a9fff0705040819u24e4c2f0s5c9fc34b93770e13>