packet-2.6.8-2: (2004-09-04) - Made DVD+RW work on the "HL-DT-ST DVD+RW GCA-4040N, ATAPI CD/DVD-ROM" drive. - Correctly report DVD media types and writing speeds. - Don't mess with elevator settings in the packet driver. Instead use cloned bios and bio counting. - Fixed Mt Rainier detection for the "HL-DT-ST DVD+RW GCA-4040N, ATAPI CD/DVD-ROM" drive. - Added back lost change comments from Andy Polyakov and Nigel Kukard. - Added a reference in the documentation to the required udftools patch. packet-2.6.8: (2004-08-15) - Get the block device size right after switching between CD and DVD discs. - Replaced the pd->bio_queue linked list with an rbtree. - Removed the "enabling write caching" warning, because it kills sparc64 builds. - Added a compat_ioctl for 64bit machines. - Get rid of the ioctl interface and use an auxiliary character device instead to control device bindings. This requires corresponding changes in the pktsetup program. - pkt_iosched_process_queue() failed to enable maximum read speed on the Iomega Super DVD 8x USB drive. - Simplified the code in the pktcdvd driver that ensures that write requests are not larger than the packet size. - Document that pktcdvd block devices have a 2KB block size. packet-2.6.7-bk20: (2004-07-10) - Added patch for using DVD+RW discs as writable block devices. - Added patch for packet writing for DVD-RW and DVD+RW discs. - Added documentation about packet writing for DVD+RW and DVD-RW media. - Fixed kcdrwd thread race. - Fixed open/close race. - Removed obsolete comment. - Don't redefine SCSI_IOCTL_SEND_COMMAND locally, use the proper #include instead. - Removed the disks[] gendisk* array and added a gendisk pointer to struct pktcdvd_device instead. - No need to set current->comm in kcdrwd, since daemonize does that by itself. - No need to call fsync_bdev() in pkt_release_dev(), because it is handled by fs/block_dev.c. - After a successful fget(), file->f_dentry->d_inode can't be NULL, so kill the useless check. - The BLKROSET, BLKROGET, BLKSSZGET and BLKFLSBUF ioctls aren't handled by drivers any more in 2.6. - Removed no longer needed function pkt_get_minor(). - Use the kernel/kthread.c infrastructure in the pktcdvd driver. - Convert the /proc code in the pktcdvd driver to use the seq_file interface. - Removed pkt_dev from struct pktcdvd_device in the pktcdvd driver and removed unnecessary calls to bdget(). packet-2.6.7: (2004-06-26) - Changed cdrom_generic_command to packet_command. - Change sr0 to hdc in the example in the documentation. IDE drives are more common than SCSI, and IDE-SCSI emulation is no longer needed for cdrecord. packet-2.6.6: (2004-05-16) - Fix compilation problem. (PF_IOTHREAD -> PF_NOFREEZE) - Fixed the broken pkt_media_changed() function. It gets used when using supermount-ng for example. packet-2.6.5: (2004-04-13) - Fixed oops when using the deadline or CFQ I/O scheduler. packet-2.6.5-rc3: (2004-04-03) - Don't try to mix writes and seeks in ide-cd.c. Some drives can't handle it. - Implemented dynamic read speed. When doing only reads, use maximum read speed. When mixing reads and writes, use the same read and write speeds. - Don't display pktcdvd partitions in /proc/partitions. - Improved /proc output. - Some code cleanup. packet-2.6.4-rc2: (2004-03-07) - blkdev_get() and blkdev_put() no longer take the "kind" parameter. - Added MODULE_ALIAS_BLOCKDEV_MAJOR to fix module autoloading. - Fixed bug that could make the kcdrwd kernel thread crash when closing the device. - Fixed broken error handling that made the kernel crash if you tried twice to write to a disc which wasn't formatted for packet writing. packet-2.6.3: (2004-02-19) - Rediffed for kernel 2.6.3. - Fixed gcc 2.95 compilation error. packet-2.6.2-rc2: (2004-01-30) - Try harder to make the write requests happen in sequential order. This requires more CPU time but should improve overall performance. - Avoid unnecessary kernel log messages when running pktsetup. One problem was that pkt_release_dev() tried to set the speed when there was no attached bdev. The other problem was that pkt_release_dev() tried to flush the cache when it shouldn't, because pkt_remove_dev() cleared the PACKET_READONLY flag. - Fixed conflict with the Mt Rainier changes in 2.6.2-rc1. packet-2.6.1-rc1-2: (2004-01-04) - Set hardsect_size for the packet block device. This is needed to be able to use an ext2 file system on a CDRW disk. - Fixed problem in pkt_merge_bvec(). A bio <= PAGE_SIZE must not be rejected. (This problem made ext2 fail when using 2kb blocksize.) - Refuse to set up two different packet devices sharing the same underlying request queue. (Could cause kernel crashes.) - Give external read requests higher priority than write requests. (Internal read requests, ie those caused by data gathering, do not get higher priority.) This improves performance when copying files to a udf filesystem, because the cp process doesn't get stuck as much, which means that more dirty buffers build up. This gives better write performance because of more opportunities for I/O scheduling and merging. packet-2.6.1-rc1: (2003-12-31) - Insert cache flush commands when switching from write to read mode. This is necessary for some drives, or else they complain with "long write in progress" or "command sequence error". - Minimize the number of switches between read and write mode. This improves performance in some cases. - Removed some dead code. - Added copyright comments. packet-2.6.0-test11: (2003-12-15) - Compile fix for PACKET_DEBUG=2. - Better code for setting write speed. Some ideas taken from http://dyson.kristenscatbeds.com/. packet-2.6.0-test7: (2003-10-09) - Minor documentation updates. - Updated for 2.6.0-test7. packet-2.6.0-test5: (2003-09-14) - Don't give up if the OPC command fails. A drive that does not implement the OPC command will probably do OPC internally before starting to write, so ignoring the error seems sensible. - Fixed to work with dynamic request queue allocation in 2.6.0-test3. - Removed dummy pkt_request() function. - Removed magic sysrq hack. It doesn't do anything useful now that the driver is not using the elevator functionality. - Removed some obsolete stuff from the proc file. - Removed C++ style comment. - Fixed oops when unloading the pktcdvd module. (Similar to the fix in 2.6.0-test3-bk3 for the loop driver.) - Removed kdev_t usage since kdev_t was removed in 2.6.0-test5. - Updated packet-writing.txt. UDF write support is always enabled in current kernels. packet-2.6.0-test1: (2003-07-15) - Removed unnecessary include directives. - Removed unnecessary function pkt_mark_readonly(). - Dropped changes in sparc64 ioctl32.c. The kernel code has changed a lot and I don't know how to deal with that and don't have the hardware to test. - Removed some unnecessary changes in ide-cd.c and sr.c. - Fixed pkt_generic_packet() to work with changes in 2.5.70. (Avoids kernel panic when using scsi drives.) - Minor code formatting fixes. - Made the driver work nicely with the "eject" program. - Made it impossible to kill the kcdrwd kernel thread from user space. - Added software suspend support to pktcdvd. - Fixed timeout handling in the CDROM_SEND_PACKET ioctl. (Missing conversion between HZ and USER_HZ made the timeout 10 times too short.) packet-2.5.70: (2003-06-06) - Fixed incorrect spin_lock handling when calling flush_signals(). - Reverted scsi_lib.c change. - Use correct data direction when calling blk_get_request. - Show packet state statistics in pkt_proc_device(). - Improved logging at level 2 in pktcdvd.c. - Replaced read_wait and write_wait in the packet_data struct with a common io_wait, which is enough because we are never reading and writing at the same time. - Replaced kmap with kmap_atomic for increased performance on highmem machines. - Deleted buffer cache code that wasn't being used anyway. - Use the standard doubly linked list implementation for handling lists of packet_data objects. - Implemented a better request queue handling strategy, which provides more opportunities for request merging. - Changed default number of packets from 4 to 8, which seems to be a better compromise between performance and memory usage. packet-2.5.69-2: (2003-05-18) - Removed deprecated use of MOD_{INC,DEC}_USE_COUNT from pktcdvd.c. - bio_alloc() must not be used for permanent bio allocations. Doing this was always wrong and could theoretically lead to deadlocks. In recent kernels, this also caused memory corruption when running "pktsetup -d". The bios are now allocated by kmalloc() instead. packet-2.5.69: (2003-05-13) - Updated for 2.5.69. packet-2.5.66-2: - Minor cleanups suggested by Jens Axboe. packet-2.5.66: - Updated for 2.5.66. packet-2.5.59: - Updated for 2.5.59. - Reset read speed to maximum when closing the packet device. - Better error logging when something goes wrong. The failed command and the returned sense codes are dumped in the kernel log. packet-2.5.44-2: - Use the blk_queue_merge_bvec() interface to prevent bios from becoming larger than we can handle. This obsoletes all code in pkt_make_request that used to split too large bios. - Fixed minor issues in pkt_generic_packet pointed out by Jens Axboe. - Moved udf code to a separate patch. packet-2.5.44: - Updated for 2.5.44. - Fixed gendisk handling. The gendisk structure must be allocated before open is called. - Fixed compiler warnings when compiling with PACKET_DEBUG=2. - Added code for sending generic packet commands without relying on cdrom_device_ops. - Patch from György Szombathelyi: 1. Reading the maximum write speed from the ATIP of the media 2. A rounding problem 3. Getting the current speed selected instead of the maximum speed in pkt_get_speed() - Send OPC command when opening the packet device for writing. (Patch from György Szombathelyi.) packet-2.5.40: - Updated for 2.5.40. - Include udf code from Ben Fennema's cvs tree. - Convert to C99 structure initializer syntax. - Added some documentation found in the original tarball. - Cleaner fix for sr_packet to honor the provided timeout value. packet-2.5.29: - Updated for 2.5.29. packet-2.5.25: - Updated for 2.5.25. packet-2.5.21: - Updated for 2.5.21. packet-2.5.14: - Auto detect when segment merging is needed. Removed the corresponding config option. packet-2.5.13: - Updated for 2.5.13. - Implemented "segment merging" to make packet writing work with SCSI controller cards that can only handle 16 segments per request. - Fixed incorrect argument to spin_(un)lock_irq() in show_requests(). packet-2.5.12: - Updated for 2.5.12. packet-2.5.10: - Updated for 2.5.10. packet-2.5.6: - Updated for 2.5.6. - Correctly handle a non-zero 'offs' parameter in pkt_copy_bio_data. - Show cd request queue information in /proc. packet-2.5.5: - Updated for 2.5.5. packet-2.5.4-pre5: - Fixed error handling when the kcdrwd kernel thread couldn't be created. - Don't let the underlying cdrom block device merge write requests, as some drives can't handle writes larger than one packet. packet-2.5.3-pre6: - Made it possible to set up/tear down the pktcdvd device even if there is no disc in the drive. - Don't lock the drive door at setup time, only keep the door locked while the device is opened for read or write. - Remember to call drop_super() in pkt_start_recovery() when we are finished with the super block. - Make sure not to overflow the "read speed" value in pkt_set_speed(). - Don't do unnecessary work in pkt_release_dev and pkt_open. Unless it is the first open/last close, very little needs to be done. - Don't flush the cache on last close if the device was only opened for reading. - When opening/closing the packet block device, call blkdev_get and blkdev_put on the underlying cdrom device. This makes drive locking work automatically, and also gives better handling if the tray is open or the drive is not ready when you try to mount a filesystem. packet-2.5.2-pre10: - Enabled file-readahead on the pktcdvd device. The readahead was previously set to zero, which made things unnecessarily slow. - Moved sysrq key handling from sysrq.c to pktcdvd.c. packet-2.5.2-pre8: - Removed most of the specialized elevator/merge functions. The default elevator is good enough if we just implement "hole merging" in the pkt_request() function. - Don't do useless data gathering when more than one packet for the same zone is active at the same time. - If we have to sleep in pkt_make_request(), make sure to unplug the request queue first. - Implemented handling of multi-zone bios in the pkt_make_request() function. - Modified kcdrwd() to make it able to handle the packet state machine. - Implemented most of the state machine controlling the packet processing.