Date: Mon, 12 Aug 2002 12:02:25 +0400 (MSD) From: Maxim Konovalov <maxim@FreeBSD.org> To: "Semen A. Ustimenko" <semenu@FreeBSD.org> Cc: Robert Watson <rwatson@FreeBSD.org>, Maxim Konovalov <maxim@FreeBSD.org>, Gavin Atkinson <gavin@ury.york.ac.uk>, <current@FreeBSD.org> Subject: Re: sendfile(2) is broken (Was: ftpd problem: Input/output error) Message-ID: <20020812114358.E56725-100000@news1.macomnet.ru> In-Reply-To: <20020812033540.F1596-100000@main.the.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 03:37+0700, Aug 12, 2002, Semen A. Ustimenko wrote: > Hi! > > On Sun, 11 Aug 2002, Robert Watson wrote: > > > On Sun, 11 Aug 2002, Maxim Konovalov wrote: > > > > > This is sendfile(2) mis-behaviour arised after rev.1.109 > > > sys/kern/uipc_syscalls.c but I think the real problem in vn_rdwr(), > > > sys/kern/vfs_vnops.c. Here is my patch but I really need somebody with > > > vfs clue. I CC'ed Robert Watson as an author of sendfile(2) > > > modification and our vfs expert. > > > > Semen Ustimenko <semenu@FreeBSD.org> ran into a similar problem, but his > > fix was to teach sendfile() to pass in a non-NULL resid and handle the > > failure mode better. I suspect this fix is more correct since it will > > both handle the failure mode and the data delivered, and probably is > > required for other consumers of vn_rdwr(). He was going to run the patch > > past dg, and then commit it assuming dg approved it, so hopefully it will > > go into the tree in the next day or so. > > > > David reviewed the patch and I have committed it few minutes ago. Looks like a hack BDE is speaking about: passing a storage for residue but never check it. Anyway I don't understand why VOP_READ in vn_rdwr() returns a residue in uio.uio_resid when all data trasferred actually? -- Maxim Konovalov, maxim@FreeBSD.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020812114358.E56725-100000>