Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Andriy Gapon                         2:5020/400     05 Feb 2005  02:49:35
 To : Dennis Chikin
 Subject : Re: burncd
 -------------------------------------------------------------------------------- 
 
 Dennis Chikin <Dennis.Chikin@p2.f4.n5054.z2.fidonet.org> wrote:
 
 > Hello Yuri!
 > 
 > Friday February 04 2005 14:32, you wrote to me:
 > 
 >  DC>> Если у кого есть немножко лишнего времени и стандарт под рукой,
 >  DC>> загляните в /src/sys/dev/ata/atapi-cd.c и допишите 4 недостающих
 >  DC>> строчки в acd_request_sense().
 > 
 >  YP> не понял об чём речь... версия какая?
 > 
 > Об тех самых "зависаниях". Если тебе (в смысле, программе) все время
 > возвращают 0, то чтобы он сам по себе волшебным образом превратился в 100 -
 > это долго ждать придется. А возвращают его из /dev/acd по той причине, что
 > sos@ потер в atapi-cd.c правильный код, и вместо него вписал какой-то
 > бред. Смотрел конкретно на 5.2.1, но, похоже, это таки общее для всей пятой
 > ветки.
 
 не знаю правильно ли я понял код и о каких именно 4-х строчках говорил
 Денис, но по-моему код acd_get_progress() в 5.2.1 должен быть где-то таким:
 
 ..
     if(ata_atapicmd(cdp->device, ccb, dummy, sizeof(dummy), ATA_R_READ, 30) ==
 0) {
       *finished = 100;
       return 0;
     }
     acd_request_sense(cdp->device, &sense);
 ...
 
 В 5.3:
 ...
     if (request->error)
         *finished = 0;
     else if(!request->result)
         *finished = 100;
     else if(request->u.atapi.sense_data.sksv)
   *finished = ((request->u.atapi.sense_data.sk_specific2 |
         (request->u.atapi.sense_data.sk_specific1<<8))*100)/65535;
     else
   *finished = 0;
 ...
 
 Try at your own risk
 я могу и заблуждаться, на этот случай рассказываю как я понял логику этого
 кода:
 1. посылается запрос READ_CAPACITY
 2. если он нормально отработал, все хорошо, ставим 100%
 3. если нет, надо спросить sense_data в которой может содержаться информация
 о том, насколько выполнилась предыдущая комманда, в 5.2.1 это делают руками,
 в 5.3 это делатся автоматом в ata-queue.c (и в 4.Х тоже)
 4. может быть случай, когда ATA ошибка совсем плохая или данных нет,
 тогда мы ничего не знаем и выставляем проценты в 0.
 
 лучше всего эта логика видна в 4.Х, где она еще не поломана.
 
 -- 
 Andriy Gapon
 --- ifmail v.2.15dev5.3
  * Origin: Anonymous Partisans Online (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 burncd   Dennis Chikin   03 Feb 2005 20:08:08 
 burncd   Yuri PQ   04 Feb 2005 15:32:22 
 burncd   Dennis Chikin   05 Feb 2005 01:34:08 
 Re: burncd   Andriy Gapon   05 Feb 2005 02:49:35 
 burncd   Yuri PQ   08 Feb 2005 14:32:54 
 Re: burncd   Andriy Gapon   08 Feb 2005 19:25:09 
 burncd   Dennis Chikin   09 Feb 2005 00:28:58 
 Re: burncd   Andriy Gapon   08 Feb 2005 23:16:54 
Архивное /ru.unix.bsd/9873480f7e79.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional