Issue #3099 has been updated by dillon.

Status changed from New to In Progress
Assignee set to dillon

Nice cleanups.  I see disklabel64 is still using strncpy, too... and 
incorrectly in fact.  Those probably should be changed to snprintf() to 
properly guarantee zero termination of the string.  Nobody uses type or packid 
any more but we have it in there for historical reasons.

Your work looks like it is ready to be committed.  Is there anything else you 
would like to add before I cherry-pick it into master?

-Matt



----------------------------------------
Submit #3099: disklabel64: Fix partition 1MiB phsycial alignment; with other 
minor updates and cleanups
http://bugs.dragonflybsd.org/issues/3099#change-13312

* Author: liweitianux
* Status: In Progress
* Priority: Normal
* Assignee: dillon
* Category: Kernel
* Target version: 
----------------------------------------
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:
------------------------------------------------------------------------------
# boot space:    1044992 bytes
# 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:
------------------------------------------------------------------------------
# boot space:    1012224 bytes
# 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

---Files--------------------------------
0002-kern-disklabel64-Fix-physically-alignment-to-1-MiB-f.patch (4.83 KB)
0001-sys-disklabel64.h-Define-BOOT2SIZE64-to-32-KB-for-bo.patch (3.76 KB)
0003-disklabel64-8-Clean-up-unused-definitions-and-variab.patch (3.98 KB)
0004-disklabel64-8-Fix-error-message-to-indicate-no-disk-.patch (941 Bytes)
0005-disklabel64-8-Make-the-auto-disk-type-argument-optio.patch (2.25 KB)
0006-disklabel64-8-Update-displayed-label-comments-and-an.patch (2.23 KB)
0008-disklabel64-8-free-allocated-boot1buf-on-error.patch (976 Bytes)
0007-disklabel64-8-Add-various-static-keyword-Fix-compila.patch (7.81 KB)
0009-diskinfo-8-Print-0x-prefix-for-hex-numbers-Change-of.patch (1.07 KB)


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://bugs.dragonflybsd.org/my/account

Reply via email to