Re: 2.5.69-70 ide-cd to guarantee fault-free CD/DVD burning experience?

Andy Polyakov
2003-06-04T19:29:34Z

> ... accept ... patch which makes it possible to access the
> sense data returned by IDE CD/DVD units from user-land with SG_IO ioctl.

The originally proposed modifications were indeed sufficient to get
DVD+RW units working, but apparently not DVD-RW ones:-( Note though
that [another] problem discussed here is not specific to DVD-RW
recordings. It's generic bug/deficiency. Once a packet commands is
terminated with an error condition the whole bio should be purged at
once and not only the first chunk as it's currently implemented.

Attached patch should be considered as a "denoting" patch, not
"final." Well, because it was verified with single application,
growisofs of dvd+rw-tools, which uses mmap-ed, in other words
page-aligned, buffer(s). I mean I'm not 100% sure if hard_nr_sectors
is appropriate even for general case of 4-byte aligned buffers...
Then if-statement should probably be extended even to REQ_PC case...

Cheers. A.
8<--------8<--------8<--------8<--------8<--------8<--------8<--------
--- ./drivers/ide/ide-cd.c.orig Tue Jun 3 12:21:56 2003
+++ ./drivers/ide/ide-cd.c Wed Jun 4 16:14:41 2003
@@ -657,6 +657,9 @@
struct request *rq = HWGROUP(drive)->rq;
int nsectors = rq->hard_cur_sectors;

+ if (rq->flags&REQ_BLOCK_PC)
+ nsectors = rq->hard_nr_sectors; /* purge it all ... */
+ else
if ((rq->flags & REQ_SENSE) && uptodate) {
/*
* For REQ_SENSE, "rq->buffer" points to the original failed