From serg@tmn.ru  Wed Apr  5 10:28:07 2006
Return-Path: <serg@tmn.ru>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 405CC16A401
	for <FreeBSD-gnats-submit@freebsd.org>; Wed,  5 Apr 2006 10:28:07 +0000 (UTC)
	(envelope-from serg@tmn.ru)
Received: from sbtx.tmn.ru (relay.tmn.ru [212.76.160.49])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 1DE3343D45
	for <FreeBSD-gnats-submit@freebsd.org>; Wed,  5 Apr 2006 10:28:05 +0000 (GMT)
	(envelope-from serg@tmn.ru)
Received: from sv.tech.sibitex.tmn.ru (sv.tech.sibitex.tmn.ru [10.76.160.59])
	by sbtx.tmn.ru (8.13.3/8.13.3) with ESMTP id k35AS30j062485
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 5 Apr 2006 16:28:03 +0600 (YEKST)
	(envelope-from serg@tmn.ru)
Received: from sv.tech.sibitex.tmn.ru (localhost.tech.sibitex.tmn.ru [127.0.0.1])
	by sv.tech.sibitex.tmn.ru (8.13.6/8.13.6) with ESMTP id k35AS3eW003488
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 5 Apr 2006 16:28:03 +0600 (YEKST)
	(envelope-from serg@sv.tech.sibitex.tmn.ru)
Received: (from serg@localhost)
	by sv.tech.sibitex.tmn.ru (8.13.6/8.13.6/Submit) id k35AS2MH003487;
	Wed, 5 Apr 2006 16:28:02 +0600 (YEKST)
	(envelope-from serg)
Message-Id: <200604051028.k35AS2MH003487@sv.tech.sibitex.tmn.ru>
Date: Wed, 5 Apr 2006 16:28:02 +0600 (YEKST)
From: "Sergey N. Voronkov" <serg@tmn.ru>
Reply-To: "Sergey N. Voronkov" <serg@tmn.ru>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: burncd failed to fixate cd after last sys/dev/ata commit
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         95344
>Category:       kern
>Synopsis:       [ata] [burncd] [patch]: burncd(8) failed to fixate cd after last sys/dev/ata commit (regression)
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    remko
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 05 10:30:16 GMT 2006
>Closed-Date:    Sun Dec 09 11:45:31 UTC 2007
>Last-Modified:  Sun Dec 09 11:45:31 UTC 2007
>Originator:     Sergey N. Voronkov
>Release:        FreeBSD 6.1-PRERELEASE i386
>Organization:
Sibitex Ltd.
>Environment:
System: FreeBSD sv.tech.sibitex.tmn.ru 6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #3: Wed Apr 5 15:05:22 YEKST 2006 serg@sv.tech.sibitex.tmn.ru:/usr/obj/usr/src/sys/SV i386

>Description:

There is a ioctl incompatibility in RELENG_6 ata(4) code after last commits.

>How-To-Repeat:

# burncd -f /dev/acd0 -v -e -s max data disc1.iso fixate
adding type 0x08 file disc1.iso size 631824 KB 315912 blocks 
next writeable LBA 0
addr = 0 size = 646987776 blocks = 315912
writing from file disc1.iso size 631824 KB
written this track 631824 KB (100%) total 631824 KB
fixating CD, please wait..
burncd: ioctl(CDRIOCFIXATE): Input/output error

>Fix:

Backout last sys/dev/ata commit or fix ALL ata related userlavel code
(like burncd, atacontrol etc...).

>Release-Note:
>Audit-Trail:

From: "Sergey N. Voronkov" <serg@tmn.ru>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/95344: burncd failed to fixate cd after last sys/dev/ata
 commit
Date: Wed, 05 Apr 2006 17:43:00 +0600

 Also, burncd isn't capable to erase/blank cd's anymore. burncd hangs on 
 operation insted of returning to command prompt. (Drive light is off, 
 but burncd waits for somthing...)
 
 I'v used this features to backup my data regulary. On yesterday's STABLE 
 blanking works, but hangs on today's one.
 
Responsible-Changed-From-To: freebsd-bugs->sos 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Wed Apr 5 14:26:19 UTC 2006 
Responsible-Changed-Why:  
Over to ata maintainer. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=95344 

From: "Sergey N. Voronkov" <serg@tmn.ru>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/95344: [ata] burncd(8) failed to fixate cd after last sys/dev/ata
 commit (regression)
Date: Thu, 06 Apr 2006 11:41:55 +0600

 There is a workaround about a problem of burncd erase/blank brokeness:
 
 atapicam+cdrecord works great!
 

From: "Sergey N. Voronkov" <serg@tmn.ru>
To: bug-followup@FreeBSD.org, sos@FreeBSD.org
Cc:  
Subject: Re: kern/95344: [ata] burncd(8) failed to fixate cd after last sys/dev/ata
 commit (regression)
Date: Fri, 07 Apr 2006 10:14:06 +0600

 Digging a little deeper:
 
 Looks like burncd is always in the loop due to ioctl CDRIOCGETPROGRESS 
 allways return zero:
 
 /usr/src/usr.sbin/burncd/burncd.c (lines 200-217):
                         if (ioctl(fd, CDRIOCBLANK, &blank) < 0)
                                 err(EX_IOERR, "ioctl(CDRIOCBLANK)");
                         while (1) {
                                 sleep(1);
                                 if (ioctl(fd, CDRIOCGETPROGRESS, &pct) 
 == -1)
                                         
 err(EX_IOERR,"ioctl(CDRIOGETPROGRESS)");
                                 if (pct > 0 && !quiet)
                                         fprintf(stderr,
                                                 "%sing CD - %d %% 
 done     \r",
                                                 blank == CDR_B_ALL ?
                                                 "eras" : "blank", pct);
                                 if (pct == 100 || (pct == 0 && last > 90))
                                         break;
                                 last = pct;
                         }
                         if (!quiet)
                                 printf("\n");
                         continue;
 
 This is related to changes into src/sys/dev/ata/atapi-cd.c line 1234:
 
 @@ -1234,9 +1234,9 @@ acd_get_progress(device_t dev, int *fini
      request->flags = ATA_R_ATAPI | ATA_R_READ;
      request->timeout = 30;
      ata_queue_request(request);
 -    if (!request->error && request->u.atapi.sense_data.sksv)
 -	*finished = ((request->u.atapi.sense_data.sk_specific2 |
 -		     (request->u.atapi.sense_data.sk_specific1<<8))*100)/65535;
 +    if (!request->error && request->u.atapi.sense.error & ATA_SENSE_VALID)
 +	*finished = ((request->u.atapi.sense.specific2 |
 +		     (request->u.atapi.sense.specific1 << 8)) * 100) / 65535;
      else
  	*finished = 0;
      ata_free_request(request);
 
 Maybe (request->u.atapi.sense.error & ATA_SENSE_VALID) is always zero?
 
 Next one to dig in is ata-queue.c, but I'm a little confused to find a 
 possible misstake in it :(.
 
 
State-Changed-From-To: open->feedback 
State-Changed-By: remko 
State-Changed-When: Mon Dec 25 17:42:52 UTC 2006 
State-Changed-Why:  
Steal the PR from Soren till we know a bit more that might 
help Soren fix this (or someone else ofcourse): Does the 
problem still occur on a recent 6-STABLE ?  


Responsible-Changed-From-To: sos->remko 
Responsible-Changed-By: remko 
Responsible-Changed-When: Mon Dec 25 17:42:52 UTC 2006 
Responsible-Changed-Why:  
Steal the PR from Soren.. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=95344 
State-Changed-From-To: feedback->closed 
State-Changed-By: remko 
State-Changed-When: Sun Dec 9 11:45:30 UTC 2007 
State-Changed-Why:  
This should have been fixed by recent work from soren in this region, 
can you please checkout a RELENG_7 and test whether that works? If not 
let me know and I will reopen the ticket, but I am confident that this 
had been resolved. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=95344 
>Unformatted:
