Partitioning rethink
Tyler Dauwalder <tyler-cyCl/[email protected]>
| Newsgroups | gmane.os.openbeos.storage |
|---|---|
| Message-ID | <[email protected]> |
Howdy folks, I've been reading over the UDF specs the last few days, and having done so (along with just working with the disk_scanner stuff so far), I'm starting to feel that our borrowed system of session/partition/filesystem differentiation is a bit inaccurate and limiting. Here are my thoughts: + There is little, if any, real functional difference between sessions and partitions, other than their levels in the partitioning tree. Both are a contiguous extent on a device containing some sort of useful information; sessions are just currently always at level 0, partitions at level 1. If there is no actual "session" or "partition", we make up a virtual one to get ourselves up to level 2 where the filesystems all live. + Using this system, we're limited to two levels of partitioning. In most cases, this is enough. But there are few areas where I'm wondering if this will be too limiting: 1. How are we planning on handling extended partitions in intel partition maps? Technically, the partitions inside an extended partition should be at level 2, and their filesystems at level 3. And one should be able to resize extended partitions using the facilities we want to provide. Unless I'm missing something, there's no good way to accurately express the relationship of extended partitions to their child partitions using our current scheme. 2. UDF supports the concept of multiple volumes *and* (I believe; I'm still slightly sketchy on this...) multiple partitions in each volume at the filesystem level. Now, we don't technically *have* to support those features (there are 3 levels of interchange, and only one must be supported to be compliant; the lowest level just supports a single "partition" in a single "volume"), but I don't really see any great reason not too (particularly since most DVD media does not support more than a single session with a single track, meaning UDF partitions are the only way to support multiple volumes on a single DVD). And if we do, say someone puts a UDF volume with multiple partitions on a hard disk, inside an intel partition that's inside an extended partition (not likely, but plausible)? Our current session/partition/filesystem partitioning scheme will fall short of describing what's actually going on. Therefore, it seems reasonable to me to consider switching to a more general partitioning scheme that allows for an arbitrary level of nested partitions. CD/DVD sessions would be treated as one type of partition, as would intel partitions, UDF volumes and partitions, etc. Instead of having session/partition/filesystem modules, we'd either have just one type of recognizer, or possibly device property based recognizers used only at level 0 (a la CD/DVD sessions, where the partition data isn't part of the data stream) and data stream based recognizers used everywhere else (a la intel partitions, iso9660, etc.). Thoughts? On a side note, I'm now really excited about supporting UDF in BeOS; the format is designed such that we'll be able to burn file attributes along with regular file data and still have the files accessible from other OSes. And I believe relevant indices could also be burned as well. :-) -Tyler p.s. In case you're curious, I've emailed you both the ecma standard that UDF is a specialization of (incidentally Axel, it turns out that this is that "other" standard I was looking at a few meetings ago while trying to figure out iso9660 volume set stuff... I had no idea at the time it was used by UDF :-). The UDF standard itself is at http://www.osta.org