#8473: Concerns about ISO 9660 implementation -------------------------------------+---------------------------- Reporter: scdbackup | Owner: nobody Type: enhancement | Status: new Priority: normal | Milestone: R1 Component: File Systems/ISO 9660 | Version: R1/Development Resolution: | Keywords: Blocked By: | Blocking: Has a Patch: 0 | Platform: All -------------------------------------+---------------------------- Comment (by scdbackup): Probably high_root_block.iso.bz2 is too few of a challenge. It does not exercise diving into sub-directories. So i created two images which put more emphasis on tree traversal. https://dev.haiku-os.org/attachment/ticket/8473/reloc_dir.iso.bz2 With Rock Ridge its tree looks like: {{{ /deep_dir /deep_dir/1 /deep_dir/1/2 /deep_dir/1/2/3 /deep_dir/1/2/3/4 /deep_dir/1/2/3/4/5 /deep_dir/1/2/3/4/5/6 /deep_dir/1/2/3/4/5/6/7 /deep_dir/1/2/3/4/5/6/7/8 /deep_dir/1/2/3/4/5/6/7/8/9 /deep_dir/1/2/3/4/5/6/7/8/9/10 /deep_dir/1/2/3/4/5/6/7/8/9/10/File_10_1 /deep_dir/1/2/3/4/5/6/7/8/9/10/File_10_2 /deep_dir/1/2/3/4/5/6/7/8/9/File_9_1 /deep_dir/1/2/3/4/5/6/7/8/9/File_9_2 /deep_dir/1/2/3/4/5/6/7/8/File_8_1 /deep_dir/1/2/3/4/5/6/7/8/File_8_2 /deep_dir/1/2/3/4/5/6/7/File_7_1 /deep_dir/1/2/3/4/5/6/7/File_7_2 /file1 /file2 /this_is_session_3 }}} Whereas without Rock Ridge: {{{ /DEEP_DIR /DEEP_DIR/1 /DEEP_DIR/1/2 /DEEP_DIR/1/2/3 /DEEP_DIR/1/2/3/4 /DEEP_DIR/1/2/3/4/5 /DEEP_DIR/1/2/3/4/5/6 /DEEP_DIR/1/2/3/4/5/6/7 /FILE1.;1 /FILE2.;1 /THIS_IS_SESSION_3.;1 /7 /7/8 /7/8/9 /7/8/9/10 /7/8/9/10/FILE_10_1.;1 /7/8/9/10/FILE_10_2.;1 /7/8/9/FILE_9_1.;1 /7/8/9/FILE_9_2.;1 /7/8/FILE_8_1.;1 /7/8/FILE_8_2.;1 /7/FILE_7_1.;1 /7/FILE_7_2.;1 }}} This difference is called "deep directory relocation" and is due to the prescription of ECMA-119 that no path shall have more than 8 name components. Deep directory relocation has a bad reputation for being bug prone. So it often is left out. Question is whether the ISO 9660 reader relies on the assumption that no paths deeper than 8 can occur. This can be exercised by https://dev.haiku-os.org/attachment/ticket/8473/nonreloc_deep.iso.bz2 which bears as ISO 9660 tree: {{{ /DEEPER_DIR /DEEPER_DIR/1 /DEEPER_DIR/1/.SOME_NAME;1 /DEEPER_DIR/1/2 /DEEPER_DIR/1/2/3 /DEEPER_DIR/1/2/3/4 /DEEPER_DIR/1/2/3/4/5 /DEEPER_DIR/1/2/3/4/5/6 /DEEPER_DIR/1/2/3/4/5/6/7 /DEEPER_DIR/1/2/3/4/5/6/7/8 /DEEPER_DIR/1/2/3/4/5/6/7/8/9 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/FILE_18_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/FILE_18_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/FILE_17_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/FILE_17_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/FILE_16_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/FILE_16_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/FILE_15_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/FILE_15_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/FILE_14_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/14/FILE_14_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/FILE_13_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/13/FILE_13_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/FILE_12_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/12/FILE_12_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/FILE_11_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/11/FILE_11_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/FILE_10_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/10/FILE_10_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/FILE_9_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/9/FILE_9_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/FILE_8_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/8/FILE_8_2.;1 /DEEPER_DIR/1/2/3/4/5/6/7/FILE_7_1.;1 /DEEPER_DIR/1/2/3/4/5/6/7/FILE_7_2.;1 /DEEPER_DIR/1/SOFTLINK.;1 /FILE1.;1 /FILE2.;1 /THIS_IS_SESSION_3.;1 }}} -- Ticket URL: <http://dev.haiku-os.org/ticket/8473#comment:8> Haiku <http://dev.haiku-os.org> Haiku - the operating system.