From: Peter Osterlund <petero2@telia.com>

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 <petero2@telia.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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:
_