[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: growisofs failing on some iso files



On 04/13/2012 02:00 PM, Thomas Schmitt wrote:
Please verify that the readable size is really not aligned to 32 KiB.

I introduced non-alignment only a year ago with version 1.0.6.
So if yours is older, then the readable size will be aligned.

I think it's all right, if I understood what your meant by "readable size":

$ isoinfo -d -dev=/dev/sr0 | grep 'Volume size'
Volume size is: 138421

The above is valid for DVD burned with cdrskin-1.1.8-1.fc16.x86_64.

But i wonder how your observation matches these lines in growisofs_mmc.cpp
if not your patch is applied:

    if (dao_blocks!=0 && (lba+nbl)>dao_blocks)
        nbl = dao_blocks-lba;

    while (1)
    {   cmd[0] = wrvfy?0x2E:0x2A;       // WRITE [AND VERIFY] (10)
        cmd[2] = (lba>>24)&0xff;        // Logical Block Addrss
        cmd[3] = (lba>>16)&0xff;
        cmd[4] = (lba>>8)&0xff;
        cmd[5] = lba&0xff;
        cmd[7] = (nbl>>8)&0xff;
        cmd[8] = nbl&0xff;
        cmd[9] = 0;

This write command itself is correct, but the "size of data in buffer" is passed incorrectly -- see the following patch, it fixes the problem at least on my testing data and seems much more rational than the previous one.

diff -up dvd+rw-tools-7.1/growisofs_mmc.cpp.lastshort dvd+rw-tools-7.1/growisofs_mmc.cpp --- dvd+rw-tools-7.1/growisofs_mmc.cpp.lastshort 2012-04-13 18:09:31.047641524 +0200
+++ dvd+rw-tools-7.1/growisofs_mmc.cpp	2012-04-13 18:09:34.451763587 +0200
@@ -540,7 +540,7 @@ ssize_t poor_mans_pwrite64 (int fd,const
 	// own higher HZ value and disrespects the user-land one.
 	// Sending them down as milliseconds is just safer...
 	//
-	if (!(errcode=cmd.transport (WRITE,(void *)buff,size)))
+	if (!(errcode=cmd.transport (WRITE,(void *)buff,nbl*2048)))
 	    break;

 	//--- WRITE failed ---//


Have a nice weekend,

Honza


Reply to: