Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jul 2002 16:20:17 -0700 (PDT)
From:      Scott Hess <scott@avantgo.com>
To:        Keith Pitcher <kpitcher@locallink.net>
Cc:        David Gilbert <dgilbert@velocet.ca>, <freebsd-hackers@freebsd.org>
Subject:   Re: [hackers] Multi CDR burn
Message-ID:  <Pine.LNX.4.44.0207091609270.28799-100000@river.avantgo.com>
In-Reply-To: <20020709191404.GA97352@stone.locallink.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 9 Jul 2002, Keith Pitcher wrote:
> On Tue, Jul 09, 2002 at 07:07:54AM -0400, David Gilbert wrote:
> > Remember: unix is a system whereby you assemble piplelines and scripts
> > of _simple_ programs to create complex behavior.  It's not necessary
> > to have a multi-cd tool when you can roll your own with your own
> > behavior.
> > 
> > Dave.
> 
> This is a simplistic and inadequate solution. UNIX was intended to be
> efficient, not to do eight Times the amount of work of any other system.  
> This uses 8 times the memory, 8 times the processor, and 8 times the bus
> (only 4 times if two channels, but you get the idea). A properly written
> CD burning tool would use the SCSI commands to send the data only once
> to all of the devices.

In thinking about this, what I would really want (if I needed this) would
be a modification to cdrecord which could send the write information to
multiple drives, using a single buffer.  In the straightforward
implementation, you would push the buffer forward after all drives were
done with a particular block.  But if one was slow, that would result in 7
coasters.  Instead, if a particular drive falls behind by more than, oh,
half the buffer, it should be cut off, creating a single coaster, rather
than 8.

Bah.  If you're worried about the memory footprint of what Terry
suggested, you could, perhaps, cdrecord with a smaller buffer from stdin,
and use a seperate command to provide a larger buffer, and also tee up
multiple output streams.  I know there are buffering commands out there,
and tee commands, but I suspect you'll need a bit of custom work to
generate a decent combo tool.  [OTOH, that would be straightforward C
coding, might take you all of a day to implement.  Perhaps you could also
work something up using an available tool and a capable shell.] You'd end
up with a nifty ASCII diagram:

                      /- cdrecord dev=0 -- <little buffer> -- cd0
                     /-- cdrecord dev=1 -- <little buffer> -- cd1
file -> <big buffer> --- cdrecord dev=2 -- <little buffer> -- cd2
                     \-- cdrecord dev=3 -- <little buffer> -- cd3
                      \- cdrecord dev=4 -- <little buffer> -- cd4

The main problem I can think of is whether cdrecord does anything
interesting to lock itself from trying to write multiple CDs at a time.

Later,
scott


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.44.0207091609270.28799-100000>