Date: Thu, 23 Sep 2010 01:24:33 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r213044 - head/usr.bin/gzip Message-ID: <201009230124.o8N1OXQT050003@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: delphij Date: Thu Sep 23 01:24:33 2010 New Revision: 213044 URL: http://svn.freebsd.org/changeset/base/213044 Log: In the past gunzip(1) write()'s after each inflate return. This is not optimal from a performance standpoint since the write buffer is not necessarily be filled up when the inflate rountine reached the end of input buffer and it's not the end of file. This problem gets uncovered by trying to pipe gunzip -c output to a GEOM device directly, which enforces the writes be multiple of sector size. Sponsored by: iXsystems, Inc. Reported by: jpaetzel MFC after: 2 weeks Modified: head/usr.bin/gzip/gzip.c Modified: head/usr.bin/gzip/gzip.c ============================================================================== --- head/usr.bin/gzip/gzip.c Thu Sep 23 01:19:31 2010 (r213043) +++ head/usr.bin/gzip/gzip.c Thu Sep 23 01:24:33 2010 (r213044) @@ -916,6 +916,8 @@ gz_uncompress(int in, int out, char *pre switch (error) { /* Z_BUF_ERROR goes with Z_FINISH... */ case Z_BUF_ERROR: + if (z.avail_out > 0 && !done_reading) + continue; case Z_STREAM_END: case Z_OK: break;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009230124.o8N1OXQT050003>