libisofs/doc/devel/cookbook/Multi-Extent.txt
2008-08-17 19:30:47 +02:00

59 lines
2.1 KiB
Plaintext

===============================================================================
ISO-9660 Level 3 Cookbook
===============================================================================
Creation date: 2008-Aug-17
Author: Vreixo Formoso
_______________________________________________________________________________
Contents:
---------
1. References
2. General
3. OS Support
4. Implementation
-------------------------------------------------------------------------------
1. References:
ECMA-119 "Volume and File Structure of CDROM for Information Interchange"
-------------------------------------------------------------------------------
2. General
In ECMA-119 standard, the size of a file section cannot be bigger than 4GB - 1,
because the Data Length field of the Directory Record is just 32 bits (9.1.4).
However, "each file shall consist of one or more File Sections" (6.5.1), and
that way we can store files greater than 4GB in a ECMA-119 image. Such image,
with multiple File Sections, is only supported at Level 3 (10.3), as Level 2
(10.2) states that "each file shall consist of only one File Section".
On disc, each file section is stored in a Extent (6.4.2), i.e. a set of
contiguous Logical Blocks.
-------------------------------------------------------------------------------
3. OS Support
Wikipedia states that "Microsoft Windows XP supports this, while Mac OS X
(as of 10.4.8) does not handle this case properly. In the case of Mac OS X,
the driver appears not to support file fragmentation at all (i.e. it only
supports ISO 9660 Level 2 but not Level 3). Linux supports multiple extents.
FreeBSD only shows and reads the last extent of a multi-extent file."
-------------------------------------------------------------------------------
4. Implementation
Each File Section will have its own Directory Record (6.5.1). So, for files
greater than 4 GB, we need to store several directory records, that will have
the same File Identifier, and stored in the order of the File Sections they
refer (9.3).
All but the last Directory Record must have the Multi-Extent flag set (9.1.6)