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

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: