mkisofs -M makes no attempt to reconstruct multi-extent files
$ ./mkisofs -v
mkisofs 2.01.01a39 ...
Consider creating say 5GiB file and mastering an image:
$ touch 5G.0
$ perl -e 'truncate("5G.0",5*1024*1024*1024)'
$ ./mkisofs -iso-level 3 5G.0 > 1st.iso
One does not have to wait till mkisofs completes, just press ctrl-c as
soon as progress indicator goes off and examine directory table [in hex
editor]. Directory table in 1st.iso contains following entries:
file name flags data length location of extent
5G.0;1 0x80 4GB-2KB X
5G.0;1 0x00 5GB-(4GB-2KB) X+0x200000-1
This table describes contiguous 5GiB large file named 5G.0 consisting of
two extents. X is extent beyond directory table in 1st.iso. So far so
good. Now throw in another 5GiB file into second session:
$ touch 5G.1
$ perl -e 'truncate("5G.1",5*1024*1024*1024)'
$ ./mkisofs -C 16,2621614 -M 1st.iso -iso-level 3 5G.1 > 2nd.iso
Again, one does not have to wait till mkisofs completes, just press
ctrl-c as soon as progress indicator goes off and examine directory
table [in hex editor]. Directory table in 2nd.iso comes out corrupted:
file name flags data length location of extent
5G.0;1 0x80 4GB-2KB X
5G.1;1 0x80 4GB-2KB Y
5G.1;1 0x00 5GB-(4GB-2KB) Y+0x200000-1
5G000.0;1 0x00 5GB-(4GB-2KB) X+0x200000-1
This table describes fragmented 9GB-2KB file named either 5G.0 or
5G.1[?] and 1GB+2KB file named 5G000.0. Y is extent beyond directory
table in 2nd.iso. Correct table for 2nd.iso would be:
file name flags data length location of extent
5G.0;1 0x80 4GB-2KB X
5G.0;1 0x00 5GB-(4GB-2KB) X+0x200000-1
5G.1;1 0x80 4GB-2KB Y
5G.1;1 0x00 5GB-(4GB-2KB) Y+0x200000-1
A.
Reply to: