Date: Tue, 24 Jan 2006 16:30:18 GMT From: David Kelly <dkelly@hiwaay.net> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/92243: sendfile(2) returns early on files > 4GB Message-ID: <200601241630.k0OGUIIQ082487@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/92243; it has been noted by GNATS.
From: David Kelly <dkelly@hiwaay.net>
To: "David G. Lawrence" <dg@dglawrence.com>
Cc: freebsd-gnats-submit@FreeBSD.org
Subject: Re: kern/92243: sendfile(2) returns early on files > 4GB
Date: Tue, 24 Jan 2006 10:29:13 -0600
On Mon, Jan 23, 2006 at 11:09:08PM -0800, David G. Lawrence wrote:
> > >How-To-Repeat:
> > Get a file which is larger than 4G via ftpd, apache, or anything else which uses sendfile(2).
>
> Do you know if sendfile(2) is returning an error in the failure case?
I don't know the method for attaching gdb to a running daemon, have
never had need of it before. Have sprinkled printf's in ftpd and edited
the return message trying to understand what is happening. I think
sendfile is returning once and ftpd is calling it again then the 2nd
time the count is zero so ftp returns "premature end." This is untouched
stock RELENG6:
230 User dkelly logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get test/bigfile /dev/null
local: /dev/null remote: test/bigfile
229 Entering Extended Passive Mode (|||50786|)
150 Opening BINARY mode data connection for 'test/bigfile' (4556820480 bytes).
226 Transfer finished due to premature end of file.
261853184 bytes received in 00:05 (48.76 MB/s)
ftp>
It always leaves exactly 4GB behind:
dkelly@Grumpy {1009} dc
16 o
4556820480 261853184 - p
100000000
If I copy bigfile:
dkelly@Grumpy {1010} cp -p test/bigfile test/big2
Then the ftpd/sendfile works for the next few hours or days or until
reboot. Doesn't matter if the file is hosted on my simple one-disk
filesystem or my 2-disk gvinum striped filesystem.
dkelly@Grumpy {1011} ftp localhost
Trying ::1...
Connected to localhost.home.
220 Grumpy.DynDNS.org FTP server (Version 6.00LS) ready.
Name (localhost:dkelly):
331 Password required for dkelly.
Password:
230 User dkelly logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get test/big2 /dev/null
local: /dev/null remote: test/big2
229 Entering Extended Passive Mode (|||50787|)
150 Opening BINARY mode data connection for 'test/big2' (4556820480 bytes).
226 Transfer complete.
4556820480 bytes received in 02:11 (32.94 MB/s)
ftp>
--
David Kelly N4HHE, dkelly@HiWAAY.net
========================================================================
Whom computers would destroy, they must first drive mad.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601241630.k0OGUIIQ082487>
