Joel Granados wrote: ... >> Between now and when parted learns to support >> some _new_ partition table type that works that way, >> we should have plenty of time... > > Sorry for taking so long to respond but I had to be sure. Been reading > the EFI GPT specification
Thanks for doing the research. However, could it be that there is an effective maximum that is a constant? Consider the width in bits of the field defining FirstUsableLBA. That gives a maximum possible value. Plug that into the equation for SP, and you have a maximum that requires no read. If there really is a hard requirement to read from disk or to do anything else that may fail, one way around the poor-interface problem is to use a different signature for the function: return a boolean to indicate success or failure and set the result (only upon success) through a pointer parameter. > (http://developer.apple.com/technotes/tn2006/tn2166.html Chapter 5) As > I understand it, gpt *is* a type of label that needs a read to find out > the maximum number of partitions that it can hold. > > According to the specs the first LBA (LBA0) is not relevant (it exists > to maintain compatibility). on the second LBA(LBA1) gpt places the > header. The header is as big as a logical block. After the header we > find the Entry array. Each element of said array, describes each > partition. One can have as much elements as can fit between the end of > the second LBA (where the header ends) and the FirstUsableLBA. > FirstUsableLBA is the first logical block that may be used for contents > and is defined in header. > > /---------------------------------------------------\ > | | | | | > | BLOCK0 | HEADER | Entry Array | First Usable LBA | > | | BLOCK1 | | | > \---------------------------------------------------/ > / \ > /----------/ \----------\ > /-----------------------------------------\ > | | | | > | E1 | E2 | E3 ................ EN | > | | | | > \-----------------------------------------/ > > So. The number of possible partitions or supported partitions (SP) is: > SP = (FirstUsableLBA - LBA3) / sizeof(Entry Array element) > Note that FirstUsableLBA and sizeof(Entry Array element) are values that > can change. > > And to take calculate said value, we have to read from disk. > > Now, the spec file for gpt is rather easily acquired. I don't know > about the other. I would appreciate people sending me specs for the > other types of labels in which I can verify the way to calculate the > maximum number of supported partitions. _______________________________________________ parted-devel mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/parted-devel

