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>
