[parted-devel] [PATCH] Properly sync partitions with operating system
Jim Meyering
jim at meyering.net
Tue Feb 24 15:58:55 UTC 2009
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.
More information about the parted-devel
mailing list