Hi,

after some more calories and sleep i now see two problems in
libarchive:

- ISO 9660 images can be read in a single pass only if the directory
  entry of any file is stored at a lower address than the file's
  content.
  This makes multi-session image unsuitable for libarchive.
  No workaround seems possible.

- The implementation of the ISO image reader assumes that
  all directories come before any data file content.
  This assumption fails with "flyisofs" images which are elsewise
  the ideal counterpart to libarchive. They get produced in a
  single pass.
  The assumption also fails with libisofs symbolic links and
  empty data files, which have dummy content addresses.

So my proposals for libarchive are:

- Detect address pointers which refer to blocks which have already
  been read and forgotten. This could happen while building the tree.
  I cannot spot such a test and error message yet.
  Senseful reactions would then be to abort or to skip the offending
  file or directory tree.

- Become able to process directories and other files in mixed
  order. This is not easily done but i see no fundamental obstacle
  with the single-pass constraint.

- Map eventual keys in the range of [0 , address_of_volume_set_terminator]
  to the file's directory's key plus one. The end address of the interval
  would be recordable in the function isVDSetTerminator(), which is known
  from bug#610781. It is called before any files get read.
  A file with address in that interval will never need to read content
  from there. Surely promised.


As for libisofs avoiding the 0 keys:

The zeros for symbolic links and device files are written since
libisofs.so.6 was founded by Vreixo Formoso in autumn 2007.

For empty data files the address of the Volume Descriptor Set
Terminator is used since revision 732, 25 Nov 2010. This was in
the course of boot experiments for future Debian images.
I find no hint, though, that this was necessary to make the experiments
succeed. It looks rather like a little overhaul instigated by suboptimal
error behavior with an empty boot image file.
(There are no empty data files in the Debian image.)

It would be more or less harmless to revert the change of rev 732,
but to give non-zero addresses to links and device files will
put in question the hoarded xorriso testing of 3 years.
So in any case, this can be made only a non-default option in xorriso.

I will go for such an option, but it may last a few days.
Debian CD production should sincerely weigh pros and cons of using it.
(I can can give few advise about the risk.)

As said, it would not be necessary if libarchive would change the
implementation of read_entries() so that it can stand a mix of
directories and files, and would map dummy addresses to the directory
key + 1.


Have a nice day :)

Thomas
 



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to