From: <ef...@ma...> - 2007-07-07 21:09:55
|
Guten Tag. (English version below) Hier haben sich einige Erweiterungen von cdrdao angesammelt, die ich =20 eigentlich mal der Allgemeinheit zug=E4nglich machen k=F6nnte. Ich = hoffe, =20 damit bin ich hier richtig. Vermutlich am interessantesten sind native (also Schily-freie) SCSI-=20 Treiber f=FCr NetBSD, Irix und Mac OS X. Die f=FCr NetBSD und Irix sind =20= ziemlich alt und schon jahrelang im Einsatz (auf cdrdao 1.1.7), =20 insbesondere der f=FCr NetBSD hat schon tausende von CD-Rs auf dem =20 Buckel. Der f=FCr Mac OS X ist neu, also noch wenig getestet. Alle =20 erlauben die Angabe des Devices im ,,nativen`` Format des =20 Betriebssystems, also unter NetBSD ,,cd2``, unter Irix ,,sc1d3l0`` =20 und unter Mac OS X den IO-Registry-Pfad. Ich h=E4nge die Treiber hier =20= erstmal noch nicht dran, weil die m=E4=DFig gro=DF (je grob 10KB) sind. Der Patch first_track erlaubt im toc-File die Angabe einer von 1 =20 abweichenden Nummer des ersten Tracks. Ja, das ist erlaubt (IEC 908, =20 17.5.1). Ja, ich wei=DF, da=DF es CD-Spieler (auch namhafter Hersteller) = =20 gibt, die sich daran verschlucken. Ich finde es aber praktisch, wenn =20 bei einem auf zwei CDs verteilten Werk die Nummer n auch Tracknummer =20 n hat. Implementiert ist das nur f=FCr GenericMMC. Der Patch power_cal erh=F6ht den Timeout f=FCr die power calibration und = =20 macht die Routine (meiner Meinung nach) etwas =FCbersichtlicher. Der Patch stop erlaubt, mehrere cdrdao-Prozesse zu synchronisieren, =20 indem man die Kommandos mit einem Parameter --stop aufruft, und sie =20 dann, nachdem sie sich nach der power calibration gestoppt haben, mit =20= kill -CONT a b c d alle gleichzeitig weiterlaufen l=E4=DFt. Ich benutze =20= das, um auf einer SparcStation 20 vier oder mehr Brenner gleichzeitig =20= bedienen zu k=F6nnen. Durch die unterschiedlich langen Zeiten, die die =20= power calibration braucht, laufen die Prozesse sonst nicht synchron =20 genug, da=DF sie gleichzeitig aus dem buffer cache mit Daten versorgt =20= werden k=F6nnen. Wenn man das nicht schafft, rei=DFt der Datenstrom ab, =20= weil die Platten rumseeken m=FCssen. Der Patch start_init verschiebt einige Aktionen (insbesondere die =20 power calibraion) von startDao() nach initDao(). Ich mu=DF zugeben, da=DF = =20 mir die genaue Motivation dazu nach drei bis f=FCnf Jahren entfallen =20 ist. Ich meine mich an eine Treiberdokumentation zu erinnern, die =20 besagt, da=DF startDao() noch keine Ver=E4nderungen am Medium vornehmen =20= darf, finde die aber weder im Source-Archiv noch im Netz wieder. Bis auf den Mac-OS-X-SCSI-Treiber waren alle Patches bei mir gegen =20 1.1.7. Ich habe sie dann gearde auf 1.2.2 =FCbertragen -- es ist nicht =20= ausgeschlossen, da=DF mir dabei irgendwelche d=E4mlichen Fehler =20 unterlaufen sind. Kommentare? Over the years, I've accumulated several extensions to cdrdao that =20 maybe others can benefit from, too. I hope this is the right place to =20= make them available. I guess the most interesting of those may be native (i.e. non-Schily) =20= SCSI drivers for NetBSD, Irix and Mac OS X. Those for NetBSD and Irix =20= are rather old and been in productive use for years (the NetBSD one =20 must have burnt literally thousands of CD-R's by now). The Mac OS X =20 one is very recent and thus has not been extensively tested. All =20 three allow for the respective OS's ''native=B4=B4 device names like = ''cd2=20 =B4=B4 on NetBSD, ''sc1d3l0=B4=B4 on Irix and the IO Registry Path on = Mac OS =20 X. As the driver are moderately large (some 10KB each), I don't =20 attach them right now. The first_track patch allows starting a CD with a track number other =20 than 1. Yes, IEC 908 allows this in section 17.5.1. Yes, I'm aware of =20= the fact that several CD players (even some by well-known =20 manufacturers) get horribly confused if you use this feature. =20 However, I like a programme spanning two disks to be numbered =20 continuously. The power_cal patch rises the timeout for the power calibration =20 command. Additionally, it makes that function somewhat more =20 readable---at least in my opinion. The stop patch allows you to synchronise several cdrdao processes =20 serving a number of writers. You start each with a --stop option, and =20= they stop themselves after having executed the power calibration. You =20= then restart all of them by a kill -CONT command. I use this to =20 operate four or more writers on a SparcStation 20. It's not =20 sufficient to start all of the commands simultaneously because the =20 slight difference the respective power calibrations take suffice to =20 make them run out of sync. If you can't serve the data reads from the =20= buffer cache, the disc starts to seek like mad an you can't deliver =20 data fast enough. At least not on a SparcStation 20. The start_init patch moves some actions (power calibration being one =20 of them) from startDao() to initDao(). I must admit not remembering =20 precisely why having done so three or five years ago. I remember some =20= cdrdao driver documentation (which I can't find right now) stating =20 you're not supposed to do anything that actually changes the medium =20 in startDao(). Save the Mac OS X driver, all my changes were to 1.1.7 originally. =20 I've extracted them to patches and converted those to apply to 1.2.2. =20= I'm sorry should I have made any silly mistakes in that process. Any comments? |