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 *,