Date: Mon, 22 Feb 2010 20:47:57 -0800 From: Tim Kientzle <kientzle@freebsd.org> To: Juergen Lock <nox@jelal.kn-bremen.de> Cc: freebsd-hackers@freebsd.org Subject: Re: "tar tfv /dev/cd0" speedup patch; Linux compatibility patches Message-ID: <4B835DFD.5060507@freebsd.org> In-Reply-To: <20100222230311.GA19535@triton8.kn-bremen.de> 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>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B835DFD.5060507>