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

Re: Linux, ISOFS, multi-extent files: what's the status?



Giulio <giulioo@gmail.com> wrote:

> I'd like to understand what are the pitfalls, if any, in using multi-extent
> files, as enabled by mkisofs "--iso-level 3" option for files larger than
> 4GiB-2, on Linux.
>
> I'm using 
> 	- mkisofs 2.01.01a69
> 	- kernel 2.6.18-164.9.1.el5 (RHEL5)
>
> ====

When I started to implement support for multi-extent files in Summer 2006
in mkisofs, Linux had a problem with reading multi-extent files that are not 
a multiple of 2048 bytes. IIRC, this problem disappeared in 2007 already. 
BTW: IIRC, I received an I/O error for the last read before the bug was fixed.


> I had made some tests and it seemed to me the kernel I was using was OK.
>
> However, yesterday I read Thomas Schmitt message
> http://lists.debian.org/cdwrite/2010/01/msg00072.html
> "..My 2.6.18 swallows the last few bytes if the file
> size is not a multiple of 2048...."

I don't know what Thomas Schmitt's intentions are, so I cannot
comment why he did send his statement...

> So I looked the git history for isofs/inode.c.
>
> Kernel 2.6.18 was released on 2006-09-20.
>
> Then on 2009-09-27 this patch was applied
> "[PATCH] I/O Error attempting to read last partial block of a file in an
> ISO9660 file... "
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6-stable.git;a=commit;h=fb50ae7446abb35184be029c51f825e45a4e0670
> which seems to have to do with multi-extent files.
>
> This patch is not in the RHEL5 kernel, so it should still has this defect.
>
> I don't see any other relevant patch in the inode.c history log
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6-stable.git;a=history;f=fs/isofs/inode.c;h=6b4dcd4f2943e632c9d89115a2395084be95adc5;hb=HEAD
>
> ===

This perfectly fits to the problem I have in mind, so it seems that
the bug was fixed long time ago. Are you sure that your kernel really does
not include the patch?


> Still, this simple test shows the file is read back OK on RHEL5 2.6.18
> kernel; the file is larger than 4GiB-2 and not multiple of 2048:
> -----
> dd if=/dev/urandom of=filetest bs=1000000 count=4300
> mkisofs -quiet --iso-level 3 -o test.iso filetest
> sudo mount -o loop test.iso /mnt/cdrom
> md5sum /mnt/cdrom/filetest
> md5sum filetest
> (the 2 md5sum come back the same)
> -----
>
> How can I test multi-extent file hadling effectively?
> I have to stay on RHEL5 kernel I cannot patch or upgrade the kernel.

You verified that there currently is no such problem.

The only real problem on Linux I am currently aware of is the missing support
for hard links in the Linux filesystem implementation. This does however not
cause inconsistent data but just makes tar believe that there is no hard link 
when you try to make a tar archive from a ISO-9660 filesystem with RR.

Jörg

-- 
 EMail:joerg@schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin
       js@cs.tu-berlin.de                (uni)  
       joerg.schilling@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily


Reply to: