Date: Sat, 11 Nov 2006 04:25:31 +0100 From: Pawel Worach <pawel.worach@gmail.com> To: Joe Marcus Clarke <marcus@FreeBSD.org> Cc: Andre Oppermann <andre@FreeBSD.org>, current@FreeBSD.org Subject: Re: sendfile data corruption Message-ID: <455542AB.5050203@gmail.com> In-Reply-To: <1163215249.2826.9.camel@shumai.marcuscom.com> References: <200611021653.kA2GrRWx008044@repoman.freebsd.org> <455530E0.5090000@gmail.com> <1163215249.2826.9.camel@shumai.marcuscom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Joe Marcus Clarke wrote: > On Sat, 2006-11-11 at 03:09 +0100, Pawel Worach wrote: >> Andre Oppermann wrote: >>> andre 2006-11-02 16:53:26 UTC >>> >>> FreeBSD src repository >>> >> ... >>> Rewrite kern_sendfile() to work in two loops, the inner which turns as many >> ... >>> >>> Revision Changes Path >>> 1.240 +280 -242 src/sys/kern/uipc_syscalls.c >>> 1.55 +2 -0 src/sys/sys/libkern.h >>> 1.91 +2 -1 src/sys/sys/socket.h >> Hi Andre, >> >> I'm seeing some strange data corruption with this change. >> Using apache 2.0.59 from ports, hardware is SMP i386. >> >> 0>root@cookie /usr/local/www/data# md5 sh >> MD5 (sh) = e090ae9fc697b6ec84165af920034dc4 >> 0>root@cookie /usr/local/www/data# unsetenv http_proxy >> 0>root@cookie /usr/local/www/data# fetch -o /tmp/sh http://127.0.0.1/sh >> /tmp/sh 100% of 109 kB 6516 kBps >> 0>root@cookie /usr/local/www/data# md5 /tmp/sh >> MD5 (/tmp/sh) = 1b6b9786ce7aa74b7ecbc7ee82c230dd >> >> It seems to be consistent... >> 0>root@zero /usr/local/www/data# fetch -o /tmp/sh2 http://127.0.0.1/sh >> /tmp/sh2 100% of 109 kB 41 MBps >> 0>root@zero /usr/local/www/data# md5 /tmp/sh2 >> MD5 (/tmp/sh2) = 1b6b9786ce7aa74b7ecbc7ee82c230dd >> >> Checking with hd(1) the changed data always seems to start at offset >> 0x0000e000. >> >> cvs up -D '2006/11/02 17:00:00' OK >> Repository revision: 1.239 >> /export/ctm/cvs/src/sys/kern/uipc_syscalls.c,v >> >> cvs up -D '2006/11/02 18:00:00' BROKEN >> Repository revision: 1.240 >> /export/ctm/cvs/src/sys/kern/uipc_syscalls.c,v >> >> Files changed with update: >> P geom/journal/g_journal.c >> P kern/uipc_syscalls.c >> P sys/libkern.h >> P sys/socket.h >> >> Any other information I can provide? > > Looks to me like there's some unnecessary calculations happening to get > the xfsize. Does the following patch help? > > http://www.marcuscom.com/downloads/uipc_syscalls.c.diff > Yep, this fixes the problem. Thanks! -- Pawel
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?455542AB.5050203>