[PATCH] iso9660 inodes beyond 4GB

From: Paul Serice
Date: Fri May 21 2004 - 20:32:35 EST


The ISO 9660 standard allows meta-data to be stored at almost any
arbitrary byte on the file system. The current inode scheme uses the
byte offset as the inode value making it easy to find the underlying
block and block offset.

This scheme is subject to obvious integer overflow problems that
prevents it from being able to reach meta-data beyond the 4GB
boundary. Looking back through the archives, this problem was
anticipated but discounted because mkisofs puts its meta-data near the
beginning of the file system.

However, there are at least two common scenarios where meta-data must
be located beyond the 4GB boundary. First, growisofs needs to add
meta-data beyond the 4GB boundary when it merges a new session with an
old session that ended beyond the 4GB boundary. The following URL has
more information:

http://fy.chalmers.se/~appro/linux/DVD+RW/#isofs4gb

Second (and what prompted this patch) is that I've written two
programs that together with cdrecord or growisofs allow arbitrarily
large backups to span a multi-volume set of DVDs without the need for
any intermediate files (much like the functionality of a tape drive).
Because I only know the file lengths near the end of each burn, I have
to write the meta-data near the end of the DVD. The following URL has
more information:

http://www.serice.net/shunt/

To support these types of DVDs, the inode scheme for isofs must be
changed. The patch I'm submitting for review provides one such
comprehensive inode scheme. It assigns inode numbers sequentially
starting with 1 for the root inode. It keeps a mapping for each inode
that is indexed both by the inode number and by the block and block
offset. The indexes are implemented using two rbtrees and protected
by a reader-writer spin lock.

The patch is about 28K and can be downloaded from the following URL:

http://www.serice.net/shunt/linux-2.6.6-isofs.patch


Thanks
Paul Serice

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/