packet-cd produces a Linux kernel module that provides packet writing support for CD-R/W drives, enabling ordinary read-write mount of CD-ROM drives capable of supporting packet/incremental recording.
What is packet writing?
There are three methods for writing data (or audio) to a CD using a CD recorder: Track-at-Once (TAO), Disc-at-Once (DAO) and Packet Writing. Track-at-Once is, by far, the most popular method today. Both Track-at-Once and Disc-at-Once use a table of contents mechanism to look up each chunk of data written to the disc. Use of a Table of Contents (TOC) requires that each session (or disc) must be closed at the end of a write, updating the table of contents which allows that session to be readable. Use of TAO and DAO methods also requires the creation of an ISO image before the disc may be written; converting the data from its form on your filesystem to a form that can be cleanly written to CD.
Packet writing is a method quite different from TAO and DAO; it is designed for writing data to CD in small increments. Packet writing must be supported by hardware (not all CD writers support packet writing). The largest benefit in packet writing comes in its ease of use; packet writing enables the user to copy files to CD without mastering any images previously, allowing someone to copy files to CD without requiring significant technical knowledge. Combined with a CD-RW drive and CD-RW media, packet writing provides an extremely simple, versatile, and inexpensive method for performing regular backup of crucial data.
What does this project provide?
Existing tools for Linux, such as cdrecord provide proper mechanisms to support Track-at-Once and Disc-at-Once writing methods, but are currently unable to properly support packet writing due to two missing components. The first, support for packet writing hardware, is provided by this project in the form of patches to the Linux kernel.
The other major component to the packet writing process is support of the UDF (Universal Disk Format) filesystem. UDF provides a filesystem capable of understanding large amounts of storage space (such as that found on DVDs), and is far more optimal for use with packet writing than the ISO9660 format used with traditional Track-at-Once and Disc-at-Once methods. UDF support for Linux is under development by the Linux UDF project.
The combination of the packet writing support provided by this project and the UDF filesystem support provided by the Linux UDF project, Linux will soon have access to the full benefit of packet writing technology, including potential benefits in data backup and mainstream desktop storage.
What's New in This Release:
· (scsi) use implicit segment recounting for all hbas
· fix speed setting, was consistenly off on most drives
· only print capacity when opening for write
· fix off-by-two error in getting/setting write+read speed (affected reporting as well as actual speed used)
· possible to enable write caching on drive
· do ioctl marshalling on sparc64
· avoid unaligned access on flags, should have been unsigned long of course
· fixed missed wakeup in kpacketd
· b_dev error (two places)
· fix buffer head b_count bugs
· fix hole merge bug, where tail could be added twice
· fsync and invalidate buffers on close
· check hash table for buffers first before using our own
· add read-ahead
· fixed several list races
· fix proc reporting for more than one device
· change to O_CREAT for creating devices
· added media_change hook
· added free buffers config option
· pkt_lock_tray fails on failed open (and oopses), remove it. unlock is done explicitly in pkt_remove dev anyway.
· added proper elevator insertion (should probably be part of elevator.c)
· moved kernel thread info to private device, spawn one for each writer
· added separate buffer list for dirty packet buffers
· fixed nasty data corruption bug
· remember to account request even when we don't gather data for it
· add ioctl to force wakeup of kernel thread (for debug)
· fixed packet size setting bug on zero detected
· changed a lot of the proc reporting to be more readable to "humans"
· set full speed for read-only opens