"tar tfv /dev/cd0" speedup patch

Juergen Lock nox at jelal.kn-bremen.de
Thu Feb 18 20:43:18 UTC 2010


On Thu, Feb 18, 2010 at 07:34:59PM +0100, Juergen Lock wrote:
> On Wed, Feb 17, 2010 at 10:38:30PM -0800, Tim Kientzle wrote:
> > Juergen Lock wrote:
> > > 
> > >  ...  since bsdtar/libarchive know iso9660 I just did the command in the
> > > Subject.  It worked, but it was sloow... :(  Apparently it read all of
> > > the disc without seeking.  The following patch fixes this, is something
> > > like this desired?  If yes I could look how to do the same for Linux,
> > 
> > Juergen,
> > 
> > This is great!  If you can figure out how to get this
> > right, I would really appreciate it.  If you have a
> > tape drive handy, definitely test with that.  My first
> > attempts here actually broke reading from tape drives,
> > which is why the current code is so conservative.
> > 
> Hmm I can't test on a tape atm but if I look at the kernel,
> 	http://fxr.watson.org/fxr/ident?i=DIOCGMEDIASIZE
> DIOCGMEDIASIZE is only handled for geom, xen block devices, old CD drives
> and pc98 floppies, and I'm pretty sure tapes don't use geom. :)
> 
> > Minor style comments:
> > >  else if (S_ISCHR(st.st_mode) &&
> > >     !ioctl(fd, DIOCGMEDIASIZE, &mediasize) && mediasize) {
> > 
> > Please be explicit:  S_ISCHR() && ioctl() == 0  && mediasize > 0
> > 
> > > 	archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino);
> > 
> > extract_skip_file isn't needed here; we don't read the
> > contents of device nodes.
> > 
> > Let me know as soon as you have something you're confident of.
> 
>  Ok here is a new version of the patch with these things fixed and the
> Linux case added:  (Linux case not tested yet, and yes I did this on
> stable/8.)

Ok just tested the patch on libarchive-2.8.0.tar.gz on debian sid
on /dev/sr0 (optical drive) and it worked.  (Had to use the tarball
from code.google.com since sid's own libarchive version still was at
2.6.something where the patch didn't apply...)

 Cheers,
	Juergen


More information about the freebsd-hackers mailing list