Project

General

Profile

Actions

Submit #3099

closed

disklabel64: Fix partition 1MiB phsycial alignment; with other minor updates and cleanups

Added by liweitianux about 7 years ago. Updated over 6 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Kernel
Target version:
-
Start date:
11/08/2017
Due date:
% Done:

0%

Estimated time:

Description

Hello,

According to disklabel64(8), the partitions within a slice are physically aligned to 1MiB (PALIGN_SIZE). However, there is a mistake in l64_makevirginlabel() in kern/subr_disklabel64.c, which causes the partitions are actually only 32KiB aligned. The proposed patches here fix this issue, and introduce some more updates and cleanups:

  • Calculate d_pbase and d_pstop to make them both physically aligned to 1MiB;
  • Defined BOOT2SIZE64 in sys/disklabel64.h to replace the use of 32768;
  • Reserve space for the backup label at the slice end (after d_pstop), though the backup functionality not implemented;
  • Make the "auto" disk type optional, since the disk type support is not implement;
  • Update several comments, displayed disklabel descriptions;
  • Fix two compilation warnings due to the mismatched type in strncpy();
  • Add "static" keyword; cleanup unused variables and definitions.

I also pushed these patches to my GitHub at:
https://github.com/liweitianux/dragonflybsd/tree/disklabel

Here is a comparison of the virgin labels generated:

diskinfo:
/dev/ad4s1 blksize=512 offset=0x000000007e00 size=0x002543158200 149.05 GB

Before:
------------------------------------------------------------------------------
  1. boot space: 1044992 bytes
  2. data space: 156287323 blocks # 152624.34 MB (160038219264 bytes)

boot2 data base: 0x000000001000
partitions data base: 0x000000100200
partitions data stop: 0x002543157000
backup label: 0x002543157000
total size: 0x002543158200 # 152625.34 MB
------------------------------------------------------------------------------

After:
------------------------------------------------------------------------------
  1. boot space: 1012224 bytes
  2. data space: 156286976 blocks # 152624.00 MB (160037863424 bytes)

boot2 data base: 0x000000001000
partitions data base: 0x0000000f8200
partitions data stop: 0x0025430f8200
backup label: 0x0025430f8200
total size: 0x002543158200 # 152625.34 MB
------------------------------------------------------------------------------

Thanks for reviewing these patches.

Aly

Actions

Also available in: Atom PDF