Messages in this thread | | | Date | Thu, 20 May 2004 17:22:02 -0500 | From | Paul Serice <> | Subject | [PATCH] iso9660 inodes beyond 4GB |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |