On 6/20/18 5:52 AM, Maurizio Lombardi wrote:
> Hi Jens,
> 
> Dne 23.5.2018 v 16:42 Jens Axboe napsal(a):
>> On 5/23/18 3:19 AM, Maurizio Lombardi wrote:
>>>
>>>
>>> Dne 22.5.2018 v 16:47 Jens Axboe napsal(a):
>>>> It's been many years, but back in the day the program writing the cd
>>>> would eject the disc once done. This of course forces a reload of
>>>> the toc and clearing of the flag. What program is this? Seems like
>>>> it should probably eject when it's done.
>>>
>>> They are using wodim to burn the CDs on their servers.
>>> The problem is that they do not want the CD to be ejected because their 
>>> drives
>>> lack a motorized tray, thus requiring manual intervention which they would 
>>> like to avoid.
>>
>> I took a quick look at it, man that sr driver needs a bit of love :-)
>>
>> Anyway, I wonder if something like the below would work. Check for
>> a close track command in the sr completion handler, and flag the media
>> as changed if we see one. Totally untested...
>>
>>
>> diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
>> index 3f3cb72e0c0c..48f0d7a096db 100644
>> --- a/drivers/scsi/sr.c
>> +++ b/drivers/scsi/sr.c
>> @@ -328,6 +328,9 @@ static int sr_done(struct scsi_cmnd *SCpnt)
>>      scmd_printk(KERN_INFO, SCpnt, "done: %x\n", result);
>>  #endif
>>  
>> +    if (SCpnt->cmnd[0] == GPCMD_CLOSE_TRACK)
>> +            cd->device->changed = 1;
>> +
>>      /*
>>       * Handle MEDIUM ERRORs or VOLUME OVERFLOWs that indicate partial
>>       * success.  Since this is a relatively rare error condition, no
>>
> 
> I just want to let you know that I tested the patch but unfortunately it 
> doesn't work.
> I will try to find out what GPCMD_* commands are passed to sr_done() when 
> burning a disc
> to see if there is another one which we could use.

It's been a decade since I last messed with this or burned a cd-r, so that
would be appreciated. blktrace should be enough to tell you what commands
are being sent.

-- 
Jens Axboe

Reply via email to