|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/9873480f7e79.html, оценка из 5, голосов 10
|