Re: Packet writing problems

Julien Oster
2004-08-18T08:41:26Z

Julien Oster <usenet-20040502@usenet.frodoid.org> writes:

Hello,

> But couldn't you move the "inserted disc is..." messages to
> pkt_good_disc()? In the current source you basically duplicate the
> switch statement which checks the profile. The printks could be in the
> pkt_good_disc() check just as well.

So here's another patch instead which does what I meant.

Additionally, it inverts the return values of pkt_good_disc, so that
the condition later becomes "if (!pkt_good_disc(...))" (because
actually, it is NOT a good disc then)

--- fuzzy-2.6.8.1-orig/drivers/block/pktcdvd.c 2004-08-18 01:22:53.000000000 +0200
+++ fuzzy-2.6.8.1/drivers/block/pktcdvd.c 2004-08-18 10:34:52.239233284 +0200
@@ -1564,15 +1564,40 @@ static int pkt_good_track(track_informat
static int pkt_good_disc(struct pktcdvd_device *pd, disc_information *di)
{
switch (pd->mmc3_profile) {
- case 0x0a: /* CD-RW */
- case 0xffff: /* MMC3 not supported */
- break;
- case 0x1a: /* DVD+RW */
- case 0x13: /* DVD-RW */
+ case 0x08: /* CD-ROM */
+ printk("pktcdvd: inserted media is CD-ROM - no packet writing\n");
return 0;
- default:
- printk("pktcdvd: Wrong disc profile (%x)\n", pd->mmc3_profile);
+ case 0x09: /* CD-R */
+ printk("pktcdvd: inserted media is CD-R - no packet writing\n");
+ return 0;
+ case 0x0a: /* CD-RW */
+ printk("pktcdvd: inserted media is CD-RW\n");
+ return 1;
+ case 0x10: /* DVD-ROM */
+ printk("pktcdvd: inserted media is DVD-ROM - no packet writing\n");
+ return 0;
+ case 0x11: /* DVD-R */
+ printk("pktcdvd: inserted media is DVD-R - no packet writing\n");
+ return 0;
+ case 0x12: /* DVD-RAM */
+ printk("pktcdvd: inserted media is DVD-RAM - no packet writing\n");
+ return 0;
+ case 0x13: /* DVD-RW restricted overwrite */
+ printk("pktcdvd: inserted media is DVD-RW with restricted overwrite");
return 1;
+ case 0x14: /* DVD-RW sequential recording */
+ printk("pktcdvd: inserted media is DVD-RW with sequential recording"
+ " - no packet writing\n");
+ return 0;
+ case 0x1a: /* DVD+RW */
+ printk("pktcdvd: inserted media is DVD+RW\n");
+ return 1;
+ case 0xffff: /* unconforming */
+ printk("pktcdvd: inserted media does not conform to a known standard\n");
+ break;
+ default:
+ printk("pktcdvd: inserted media is yet UNKNOWN by pktcdvd\n");
+ return 0;
}

/*
@@ -1581,25 +1606,25 @@ static int pkt_good_disc(struct pktcdvd_
*/
if (di->disc_type == 0xff) {
printk("pktcdvd: Unknown disc. No track?\n");
- return 1;
+ return 0;
}

if (di->disc_type != 0x20 && di->disc_type != 0) {
printk("pktcdvd: Wrong disc type (%x)\n", di->disc_type);
- return 1;
+ return 0;
}

if (di->erasable == 0) {
printk("pktcdvd: Disc not erasable\n");
- return 1;
+ return 0;
}

if (di->border_status == PACKET_SESSION_RESERVED) {
printk("pktcdvd: Can't write to last track (reserved)\n");
- return 1;
+ return 0;
}

- return 0;
+ return 1;
}

static int pkt_probe_settings(struct pktcdvd_device *pd)
@@ -1624,20 +1649,9 @@ static int pkt_probe_settings(struct pkt
return ret;
}

- if (pkt_good_disc(pd, &di))
+ if (!pkt_good_disc(pd, &di))
return -ENXIO;

- switch (pd->mmc3_profile) {
- case 0x1a: /* DVD+RW */
- printk("pktcdvd: inserted media is DVD+RW\n");
- break;
- case 0x13: /* DVD-RW */
- printk("pktcdvd: inserted media is DVD-RW\n");
- break;
- default:
- printk("pktcdvd: inserted media is CD-R%s\n", di.erasable ? "W" : "");
- break;
- }
pd->type = di.erasable ? PACKET_CDRW : PACKET_CDR;

track = 1; /* (di.last_track_msb << 8) | di.last_track_lsb; */

Regards,
Julien