From owner-freebsd-hackers@FreeBSD.ORG Tue Feb 23 04:46:53 2010 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 394D51065672 for ; Tue, 23 Feb 2010 04:46:53 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from monday.kientzle.com (kientzle.com [66.166.149.50]) by mx1.freebsd.org (Postfix) with ESMTP id E000F8FC13 for ; Tue, 23 Feb 2010 04:46:52 +0000 (UTC) Received: (from root@localhost) by monday.kientzle.com (8.14.3/8.14.3) id o1N4l09J034635; Tue, 23 Feb 2010 04:47:00 GMT (envelope-from kientzle@freebsd.org) Received: from dark.x.kientzle.com (fw2.kientzle.com [10.123.1.2]) by kientzle.com with SMTP id gsxwrzan89ie9evedkbkapzdca; Tue, 23 Feb 2010 04:47:00 +0000 (UTC) (envelope-from kientzle@freebsd.org) Message-ID: <4B835DFD.5060507@freebsd.org> Date: Mon, 22 Feb 2010 20:47:57 -0800 From: Tim Kientzle User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.21) Gecko/20090601 SeaMonkey/1.1.16 MIME-Version: 1.0 To: Juergen Lock References: <20100217215940.GA19713@triton8.kn-bremen.de> <20100219181247.GA35702@triton8.kn-bremen.de> <4B7F711E.6040402@freebsd.org> <201002200100.48161.jkim@FreeBSD.org> <20100220103329.GA35467@triton8.kn-bremen.de> <4B81DB31.70201@freebsd.org> <20100222230311.GA19535@triton8.kn-bremen.de> In-Reply-To: <20100222230311.GA19535@triton8.kn-bremen.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-hackers@freebsd.org Subject: Re: "tar tfv /dev/cd0" speedup patch; Linux compatibility patches X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Feb 2010 04:46:53 -0000 Juergen Lock wrote: > On Sun, Feb 21, 2010 at 05:17:37PM -0800, Tim Kientzle wrote: >> >> Could you try the current version of read_open_filename from: >> >> http://libarchive.googlecode.com/svn/trunk/libarchive/archive_read_open_filename.c > > Small but important bug: > > Index: archive_read_open_filename.c > @@ -94,7 +94,7 @@ archive_read_open_filename(struct archiv > struct read_file_data *mine; > void *buffer; > int fd; > - int is_disk_like; > + int is_disk_like = 0; Ah. Good catch! > Btw... the lseek + read combinations could also be replaced with > pread(2), for the least amount of syscalls. :) Unfortunately, pread() isn't as portable. It's an interesting idea, though; maybe I'll play with that. > (Especially since I > noticed this version at least when ran on an optical disc with iso9660 > ends up doing lots of lseek()s towards the end without ever reading > anything from the disc anymore...) Fortunately, because there are no reads, those lseek() requests are pretty cheap. But you're right, it wouldn't be hard to eliminate the unnecessary system calls. > Patches are here: (made on stable/8, if they don't apply on head > I'll have to make extra versions for that...) > http://people.freebsd.org/~nox/linuxdisk-blk.patch [1] > http://people.freebsd.org/~nox/lseek-seek_end.patch [2] I'll let someone more familiar with the linuxolator code comment on those. > And yes, with these patches the Linux bsdtar now also runs fast > on FreeBSD. :) Excellent! Thanks so much for your help. If you have any further ideas (or patches ;-) for improving that libarchive code, please let me know. Cheers, Tim