LINUX.ORG.RU

Проблема с созданием ФС на dvd+rw


0

0

Решил проверить на работоспособность такую вещь как возможность создания на dvd+rw произвольной файловой системы. Вставил в свой свежекупленый BenQ dw1640 болванку, сказал `dvd+rw-format /dev/cdrom` - всё нормально. Пытаюсь создать на нём файловую систему udf:

$ mkudffs --spartable=2 --media-type=cdrw /dev/cdrom
start=0, blocks=16, type=RESERVED
start=16, blocks=3, type=VRS
start=19, blocks=237, type=USPACE
start=256, blocks=1, type=ANCHOR
start=257, blocks=31, type=USPACE
start=288, blocks=32, type=PVDS
start=320, blocks=32, type=LVID
start=352, blocks=32, type=STABLE
start=384, blocks=1024, type=SSPACE
start=1408, blocks=2293408, type=PSPACE
start=2294816, blocks=31, type=USPACE
start=2294847, blocks=1, type=ANCHOR
start=2294848, blocks=160, type=USPACE
start=2295008, blocks=32, type=STABLE
start=2295040, blocks=32, type=RVDS
start=2295072, blocks=31, type=USPACE
start=2295103, blocks=1, type=ANCHOR

При этом в логи пишется следующее:

Jan 12 22:46:01 fpfe kernel: hdc: media error (bad sector): status=0x51 { DriveReady SeekComplete Error }
Jan 12 22:46:01 fpfe kernel: hdc: media error (bad sector): error=0x34 { AbortedCommand LastFailedSense=0x03 }
Jan 12 22:46:01 fpfe kernel: ide: failed opcode was: unknown
Jan 12 22:46:01 fpfe kernel: end_request: I/O error, dev hdc, sector 9180032
Jan 12 22:46:01 fpfe kernel: Buffer I/O error on device hdc, logical block 1147504
Jan 12 22:46:01 fpfe kernel: lost page write due to I/O error on hdc
Jan 12 22:46:02 fpfe kernel: hdc: status error: status=0x00 { }
Jan 12 22:46:02 fpfe kernel: ide: failed opcode was: unknown
Jan 12 22:46:02 fpfe kernel: hdc: status error: status=0x00 { }
Jan 12 22:46:02 fpfe kernel: ide: failed opcode was: unknown
Jan 12 22:46:02 fpfe kernel: hdc: status error: status=0x00 { }
Jan 12 22:46:02 fpfe kernel: ide: failed opcode was: unknown
Jan 12 22:46:02 fpfe kernel: hdc: status error: status=0x00 { }
Jan 12 22:46:02 fpfe kernel: ide: failed opcode was: unknown
Jan 12 22:46:02 fpfe kernel: hdc: DMA disabled
Jan 12 22:46:02 fpfe kernel: hdc: ATAPI reset complete
Jan 12 22:46:02 fpfe kernel: end_request: I/O error, dev hdc, sector 9180408
Jan 12 22:46:02 fpfe kernel: Buffer I/O error on device hdc, logical block 1147551
Jan 12 22:46:02 fpfe kernel: lost page write due to I/O error on hdc
Jan 12 22:46:02 fpfe kernel: cdrom: hdc: dirty DVD+RW media, "finalizing"

При этом посредством обычного growisofs на эту болванку всё нормально пишется. Болванка вроде хорошая, verbatim. Ядро у меня 2.6.14.4. Через эмуляцию scsi не пишется вообще ничего - при этом сначала несколько раз повторяется сообщение:

Jan 12 22:22:36 fpfe kernel: ide-scsi: The scsi wants to send us more data than expected - discarding data
Jan 12 22:22:36 fpfe kernel: ide-scsi: transferred 2 of 4 bytes

затем:

Jan 12 22:24:06 fpfe kernel: hda: dma_timer_expiry: dma status == 0x21
Jan 12 22:24:15 fpfe kernel: hdc: DMA timeout retry
Jan 12 22:24:15 fpfe kernel: hdc: timeout waiting for DMA
Jan 12 22:24:15 fpfe kernel: hdc: status error: status=0x00 { }
Jan 12 22:24:15 fpfe kernel: ide: failed opcode was: unknown
Jan 12 22:24:15 fpfe kernel: ide-scsi: Strange, packet command initiated yet DRQ isn't asserted

Последние 3 сообщения повторяются очень много раз, при этом резак пытается что-то писать (индикатор мигает, диск заперт).

Собственно в чём вопрос: это всё недоделки ядра или аппаратные проблемы? Мне конечно эта фича не особо нужна - но если мне бракованый резак хотелось бы это понять и поменять пока не поздно...

★★

Да, если "руками" (т. е. с помощью dd) писать на диск по смещениям, на которые ругается ядро (1147551, 1147504 *2k), то никаких ошибок не возникает...

slav ★★
() автор топика

А FAQ читал? На 2.6 ядре не надо использовать скази-эмуляцию для пишущих приводов.

Deleted
()
Ответ на: комментарий от Deleted

> А FAQ читал? На 2.6 ядре не надо использовать скази-эмуляцию для пишущих приводов.

Да знаю я что не надо... Это я уже так, на всякий случай проверил - вдруг через него заработает... Вопрос собственно в том, почему и без эмуляции он в какой-то момент начинает выдавать ошибки... В принципе, на http://fy.chalmers.se/~appro/linux/DVD+RW/ написано, что "Sometimes the unit simply stops writing signaling a vendor specific positioning error, 03h/15h/82h to be specific. Especially if the media is newly formatted" (я так понимаю, что error=0x34 { AbortedCommand LastFailedSense=0x03 } - это оно и есть). То есть, насколько я понимаю, это "болезнь" многих резаков и принципиально "не лечится"?

Меня на самом деле несколько смутило то, что он при этом отключает DMA - это не связано с какими-то проблемами с интерфейсом устройства? Или ядро отключает DMA при любых ошибках передачи?

slav ★★
() автор топика
Ответ на: комментарий от slav

Судя по всему, проблема оказалась в упоминавшемся по ссылке выше фоновом форматировании, которое само включается когда не следует (в процессе записи данных). В результате устройство отвечает что не смогло записать блок, а ядро на это сообщение отвечает не совсем корректно. Помогла полная очистка болванки (забивание нулями из /dev/zero) - после этого mkudffs нормально создал udf без ошибок. Но зато появились ошибки при записи на эту ФС - правда уже другие ({ AbortedCommand LastFailedSense=0x05 }). Да и сама запись идёт как-то странно - похоже, что на каждый блок диск сначала разгоняется, записывается блок, потом диск тормозится обратно. Видимо, для полноценного использования ФС на dvd+rw нужно хорошее кэширование на уровне ядра (или через что-нибудь типа fuse?), которое будет передавать данные резаку не поблочно, а большими кусками (как это делает growisofs)

Ещё одна странная вещь: несмотря на то, что диск был полностью "зачищен", после создания на нём udf ядро выдало в лог "cdrom: hdc: dirty DVD+RW media, "finalizing"". Это же оно выдало при отмонтировании ФС.

slav ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.