Module Name: src
Committed By: martin
Date: Wed Jan 15 19:36:31 UTC 2020
Modified Files:
src/usr.sbin/sysinst: disklabel.c gpt.c mbr.c partitions.h
Log Message:
Add a method to query the partitioning schemes "internal idea" of a
cylinder size - whatever that means in the real world.
To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/usr.sbin/sysinst/disklabel.c
cvs rdiff -u -r1.14 -r1.15 src/usr.sbin/sysinst/gpt.c
cvs rdiff -u -r1.26 -r1.27 src/usr.sbin/sysinst/mbr.c
cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/sysinst/partitions.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/sysinst/disklabel.c
diff -u src/usr.sbin/sysinst/disklabel.c:1.29 src/usr.sbin/sysinst/disklabel.c:1.30
--- src/usr.sbin/sysinst/disklabel.c:1.29 Fri Jan 10 10:47:35 2020
+++ src/usr.sbin/sysinst/disklabel.c Wed Jan 15 19:36:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: disklabel.c,v 1.29 2020/01/10 10:47:35 martin Exp $ */
+/* $NetBSD: disklabel.c,v 1.30 2020/01/15 19:36:30 martin Exp $ */
/*
* Copyright 2018 The NetBSD Foundation, Inc.
@@ -114,6 +114,15 @@ disklabel_change_geom(struct disk_partit
return true;
}
+static size_t
+disklabel_cylinder_size(const struct disk_partitions *arg)
+{
+ const struct disklabel_disk_partitions *parts =
+ (const struct disklabel_disk_partitions*)arg;
+
+ return parts->l.d_secpercyl;
+}
+
static struct disk_partitions *
disklabel_parts_new(const char *dev, daddr_t start, daddr_t len,
daddr_t total_size, bool is_boot_drive, struct disk_partitions *parent)
@@ -1213,6 +1222,7 @@ disklabel_parts = {
.read_from_disk = disklabel_parts_read,
.create_new_for_disk = disklabel_parts_new,
.change_disk_geom = disklabel_change_geom,
+ .get_cylinder_size = disklabel_cylinder_size,
.find_by_name = disklabel_find_by_name,
.get_disk_pack_name = disklabel_get_disk_pack_name,
.set_disk_pack_name = disklabel_set_disk_pack_name,
Index: src/usr.sbin/sysinst/gpt.c
diff -u src/usr.sbin/sysinst/gpt.c:1.14 src/usr.sbin/sysinst/gpt.c:1.15
--- src/usr.sbin/sysinst/gpt.c:1.14 Thu Jan 9 13:22:30 2020
+++ src/usr.sbin/sysinst/gpt.c Wed Jan 15 19:36:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: gpt.c,v 1.14 2020/01/09 13:22:30 martin Exp $ */
+/* $NetBSD: gpt.c,v 1.15 2020/01/15 19:36:30 martin Exp $ */
/*
* Copyright 2018 The NetBSD Foundation, Inc.
@@ -439,6 +439,12 @@ gpt_read_from_disk(const char *dev, dadd
return &parts->dp;
}
+static size_t
+gpt_cyl_size(const struct disk_partitions *arg)
+{
+ return MEG / 512;
+}
+
static struct disk_partitions *
gpt_create_new(const char *disk, daddr_t start, daddr_t len, daddr_t total,
bool is_boot_drive, struct disk_partitions *parent)
@@ -1777,6 +1783,7 @@ gpt_parts = {
.create_unknown_part_type = gpt_create_unknown_part_type,
.get_part_alignment = gpt_get_part_alignment,
.read_from_disk = gpt_read_from_disk,
+ .get_cylinder_size = gpt_cyl_size,
.create_new_for_disk = gpt_create_new,
.have_boot_support = gpt_have_boot_support,
.find_by_name = gpt_find_by_name,
Index: src/usr.sbin/sysinst/mbr.c
diff -u src/usr.sbin/sysinst/mbr.c:1.26 src/usr.sbin/sysinst/mbr.c:1.27
--- src/usr.sbin/sysinst/mbr.c:1.26 Tue Jan 14 19:28:31 2020
+++ src/usr.sbin/sysinst/mbr.c Wed Jan 15 19:36:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: mbr.c,v 1.26 2020/01/14 19:28:31 martin Exp $ */
+/* $NetBSD: mbr.c,v 1.27 2020/01/15 19:36:30 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -2409,6 +2409,15 @@ mbr_guess_geom(struct disk_partitions *a
return 0;
}
+static size_t
+mbr_get_cylinder(const struct disk_partitions *arg)
+{
+ const struct mbr_disk_partitions *parts =
+ (const struct mbr_disk_partitions*)arg;
+
+ return parts->geo_cyl;
+}
+
static daddr_t
mbr_max_part_size(const struct disk_partitions *arg, daddr_t fp_start)
{
@@ -3026,6 +3035,7 @@ mbr_parts = {
.read_from_disk = mbr_read_from_disk,
.create_new_for_disk = mbr_create_new,
.guess_disk_geom = mbr_guess_geom,
+ .get_cylinder_size = mbr_get_cylinder,
.change_disk_geom = mbr_change_disk_geom,
.get_part_device = mbr_get_part_device,
.max_free_space_at = mbr_max_part_size,
Index: src/usr.sbin/sysinst/partitions.h
diff -u src/usr.sbin/sysinst/partitions.h:1.13 src/usr.sbin/sysinst/partitions.h:1.14
--- src/usr.sbin/sysinst/partitions.h:1.13 Thu Jan 9 13:22:30 2020
+++ src/usr.sbin/sysinst/partitions.h Wed Jan 15 19:36:30 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: partitions.h,v 1.13 2020/01/09 13:22:30 martin Exp $ */
+/* $NetBSD: partitions.h,v 1.14 2020/01/15 19:36:30 martin Exp $ */
/*
* Copyright 2018 The NetBSD Foundation, Inc.
@@ -457,6 +457,12 @@ struct disk_partitioning_scheme {
int *cyl, int *head, int *sec);
/*
+ * Return a "cylinder size" (in number of blocks) - whatever that
+ * means to a particular partitioning scheme.
+ */
+ size_t (*get_cylinder_size)(const struct disk_partitions *);
+
+ /*
* Optional: change used geometry info and update internal state
*/
bool (*change_disk_geom)(struct disk_partitions *,