diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-05-02 22:46:13 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-05-02 22:46:13 +0000 |
commit | 56dde750d593763c5218cf06f710ec60b50a910a (patch) | |
tree | 167b9bb293bf61d98bdeb7e2f55bda158e7dc864 /sys/sys/disklabel.h | |
parent | 0477e337c24ce0df3a7c3225684636959ed5f41f (diff) | |
download | src-56dde750d593763c5218cf06f710ec60b50a910a.tar.gz src-56dde750d593763c5218cf06f710ec60b50a910a.zip |
Make bsd_disklabel_le_enc calculate the checksum and fill it in.
(If there is a legitimate need to correctly encode and pack a
disklabel with an invalid checksum custom tools can be built for
that.)
Make bsd_disklabel_le_dec() validate the magics, number of partitions
(against a new parameter) and the checksum.
Vastly simplify the logic of the GEOM::BSD class implementation:
Let g_bsd_modify() always take a byte-stream label.
This simplifies all users, except the ioctl's which now have to
convert to a byte-stream first. Their loss.
g_bsd_modify() is called with topology held now, and it returns
with it held.
Always update the md5sum in g_bsd_modify(), otherwise the check
is no use after the first modification of the label. Make the
MD5 over the bytestream version of the label.
Move the rawoffset hack to g_bsd_modify() and remove all the
inram/ondisk conversions.
Don't configure hotspots in g_bsd_modify(), do it in taste instead,
we do not support moving the label to a different location on the
fly anyway.
This passes all current regression tests.
Notes
Notes:
svn path=/head/; revision=114556
Diffstat (limited to 'sys/sys/disklabel.h')
-rw-r--r-- | sys/sys/disklabel.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/sys/disklabel.h b/sys/sys/disklabel.h index baf8874d3575..ddcf21a83c67 100644 --- a/sys/sys/disklabel.h +++ b/sys/sys/disklabel.h @@ -305,7 +305,7 @@ static const char *fstypenames[] = { * bytestring. */ void bsd_partition_le_dec(u_char *ptr, struct partition *d); -void bsd_disklabel_le_dec(u_char *ptr, struct disklabel *d); +int bsd_disklabel_le_dec(u_char *ptr, struct disklabel *d, int maxpart); void bsd_partition_le_enc(u_char *ptr, struct partition *d); void bsd_disklabel_le_enc(u_char *ptr, struct disklabel *d); |