From: Peter Osterlund This patch makes it possible to use the packet writing driver with DVD-RAM discs. The pktcdvd driver is not needed for writing to DVD-RAM discs but it can improve write performance. Polgár István reports: I wrote 178716Kb data to DVD-RAM without pktcdvd driver within 4.54 minutes. With pktcdvd driver it took me 2.33 minutes. Signed-off-by: Peter Osterlund Signed-off-by: Andrew Morton --- 25-akpm/Documentation/cdrom/packet-writing.txt | 8 ++++++++ 25-akpm/drivers/block/pktcdvd.c | 9 +++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff -puN Documentation/cdrom/packet-writing.txt~dvd-ram-support-for-pktcdvd Documentation/cdrom/packet-writing.txt --- 25/Documentation/cdrom/packet-writing.txt~dvd-ram-support-for-pktcdvd 2005-03-13 13:13:37.000000000 -0800 +++ 25-akpm/Documentation/cdrom/packet-writing.txt 2005-03-13 13:13:37.000000000 -0800 @@ -62,6 +62,14 @@ generates aligned writes. # mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime +Packet writing for DVD-RAM media +-------------------------------- + +DVD-RAM discs are random writable, so using the pktcdvd driver is not +necessary. However, using the pktcdvd driver can improve performance +in the same way it does for DVD+RW media. + + Notes ----- diff -puN drivers/block/pktcdvd.c~dvd-ram-support-for-pktcdvd drivers/block/pktcdvd.c --- 25/drivers/block/pktcdvd.c~dvd-ram-support-for-pktcdvd 2005-03-13 13:13:37.000000000 -0800 +++ 25-akpm/drivers/block/pktcdvd.c 2005-03-13 13:13:37.000000000 -0800 @@ -1421,8 +1421,8 @@ static int pkt_set_write_settings(struct char buffer[128]; int ret, size; - /* doesn't apply to DVD+RW */ - if (pd->mmc3_profile == 0x1a) + /* doesn't apply to DVD+RW or DVD-RAM */ + if ((pd->mmc3_profile == 0x1a) || (pd->mmc3_profile == 0x12)) return 0; memset(buffer, 0, sizeof(buffer)); @@ -1536,6 +1536,7 @@ static int pkt_good_disc(struct pktcdvd_ break; case 0x1a: /* DVD+RW */ case 0x13: /* DVD-RW */ + case 0x12: /* DVD-RAM */ return 0; default: printk("pktcdvd: Wrong disc profile (%x)\n", pd->mmc3_profile); @@ -1601,6 +1602,9 @@ static int pkt_probe_settings(struct pkt case 0x13: /* DVD-RW */ printk("pktcdvd: inserted media is DVD-RW\n"); break; + case 0x12: /* DVD-RAM */ + printk("pktcdvd: inserted media is DVD-RAM\n"); + break; default: printk("pktcdvd: inserted media is CD-R%s\n", di.erasable ? "W" : ""); break; @@ -1893,6 +1897,7 @@ static int pkt_open_write(struct pktcdvd switch (pd->mmc3_profile) { case 0x13: /* DVD-RW */ case 0x1a: /* DVD+RW */ + case 0x12: /* DVD-RAM */ DPRINTK("pktcdvd: write speed %ukB/s\n", write_speed); break; default: _