On Wednesday, June 27, 2012 8:45:45 am Andrey V. Elsukov wrote:
> On 27.06.2012 16:07, John Baldwin wrote:
> >> • Check the Signature
> >> • Check the Header CRC
> >> • Check that the MyLBA entry points to the LBA that contains the GUID 
> >> Partition Table
> >> • Check the CRC of the GUID Partition Entry Array
> >> If the GPT is the primary table, stored at LBA 1:
> >> • Check the AlternateLBA to see if it is a valid GPT
> >> If the primary GPT is corrupt, software must check the last LBA of the 
> >> device to see if it has a
> >> valid GPT Header and point to a valid GPT Partition Entry Array."
> > 
> > Right, we break the last rule.  If you want to use a partition editor
> > that doesn't grok gmirror (because you are using another OS's editor),
> > to repair a GPT, it will do the wrong thing.
> 
> When we are in the FreeBSD, our loader can detect that device size
> is lower than it see and it will work. When primary header is OK, then
> other OSes should work with this GPT. When it isn't OK, you just can't
> load other OS :)

Ah, yes.  The solution to violating standards is to make sure you never
use standards-compliant software.  That's a great argument. :)

(Although not entirely uncommon.  Standards aren't always perfect, but if
we had a way to not gratuitously violate them it would be nice to avoid
doing so.)

> > We can't write bootcode with gpart?  What do you think the 'bootcode' 
> > command
> > does?
> 
> `gpart bootcode -b` reads file, creates ioctl request and sends this data to
> the GEOM_PART class. GEOM_PART receives the control request, checks the data
> and writes it to the provider.
> `gpart bootcode -p` works like dd(1) and writes bootcode to the given 
> partition.
> gpart(8) haven't any knowledge about specific partitioning scheme.

Correct, but in both cases it writes "bootcode".

> > Also, there is no reason we can't have a 'recover' command that attempts to
> > recover a corrupted table including repairing the PMBR.  gpart(8) already
> > generates a full PMBR when you use 'gpart create' to create a GPT even 
> > though
> > there isn't a GPT object yet.
> 
> `gpart create` creates only ioctl control request to the GEOM_PART class.
> GEOM_PART class creates new GPT geom object and this objects writes PMBR and 
> its
> metadata to the provider.

You can't add a new ioctl?

-- 
John Baldwin
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to