Subject: Proposed change to Apple partitioning
To: None <port-macppc@netbsd.org>
From: Bill Studenmund <wrstuden@netbsd.org>
List: port-macppc
Date: 03/12/2002 14:24:30
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-834572612-1015971870=:14744
Content-Type: TEXT/PLAIN; charset=US-ASCII

I'd like to expand on Matt's changes to our Apple partition handling, and
to fix some of its problems.

Matt added "NetBSD" and "NetBSD/MacPPC" partition support, the intent
being to not use the Apple_UNIX_SVR2 partitions that MacOS X beta was
using (and thus reformatting our partitions).

NetBSD partitions are "usr" partitions, and "NetBSD/MACPPC" ones are
"root" partitions.

The problem is that we still don't store the per-partition info that a
NetBSD disklabel contains. Things like how big a fragment is, what type of
file system (we assume ffs, but lfs, ccd and raid would be good), how many
fragments per block, and the number of cylinders per group (or segment
shift for LFS).

I'd like to extend these new partition types so that if they have a valid
bzb block, we use space in there to encode the missing info. Yes, I
realize I'm re-using a concept specific to A/UX's use of the
APPLE_UNIX_SVR2 partitions. But we need to do something, and it seems
easier to not re-invent structures that use otherwise-unused parts of the
partition entry.

Specifically if a NETBSD (or NetBSD/macppc or other "NetBSD*") partition
has a valid bzb block, we use the bzbType for the FS type, the bzbCluster
for the frag parameter, the bzbBadBlockInode field for the CPG or LFS sgs,
and the bzbCreationTime for the fragment size. If one of these partitions
does not have a valid bzb block (like most of them will right now), we
just treat it as an ffs partition.

This way we can encode all the info we need for a NetBSD disklabel within
the Apple partition entries.

I'm attaching a patch to do this.

While I'm at it, I added "NetBSD/mac68k" partitions, which show up as
"usr" ones on macppc. The mac68k version of this code would have them be
the root, and NetBSD/macppc ones be "usr" ones. We can change this if we
want.

Here's the output of disklabel with this change on a volume where I added
an lfs partition type:

7 partitions:
#        size   offset     fstype   [fsize bsize   cpg]
  a:  5398296  3501441    unknown                        # (Cyl. 2418*- 6146*)
  c:  8899737        0     unused        0     0         # (Cyl.    0 - 6146*)
  d:  3400737      704        HFS                        # (Cyl.    0*- 2349*)
  g:   100000  3401441     4.4LFS        0     0     0   # (Cyl. 2349*- 2418*)

Here's a dump of the Apple partition entries:

Partition entries
Num   Start     Size       Type (first 20)     Name (16)      BSD type Pt
 1:         1        63  Apple_partition_map            Apple  Ignored
 2:        64        54       Apple_Driver43        Macintosh  Ignored
 3:       118        74       Apple_Driver43        Macintosh  Ignored
 4:       192       512        Apple_Patches  Patch Partition  unknown  a
 5:       704   3400737            Apple_HFS         untitled      HFS  b
 6:   3401441    100000               NetBSD           loggie   4.4LFS  g

Oh, one thing I want to do is add code so that if you "write" a disklabel,
and all that has changed is type info for a partition (like you mark a
partition as having an lfs on it), the Apple partition map is updated to
reflect that.

Thoughts?

Take care,

Bill


--0-834572612-1015971870=:14744
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=diffs
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.33.0203121424300.14744@vespasia.home-net.internetconnect.net>
Content-Description: Add partition type support
Content-Disposition: attachment; filename=diffs

SW5kZXg6IG1hY3BwYy9kaXNrc3Vici5jDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3lzc3JjL3N5cy9hcmNoL21hY3Bw
Yy9tYWNwcGMvZGlza3N1YnIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MTcNCmRpZmYgLXUgLXIxLjE3IGRpc2tzdWJyLmMNCi0tLSBtYWNwcGMvZGlz
a3N1YnIuYwkyMDAyLzAyLzE5IDE3OjA5OjQ1CTEuMTcNCisrKyBtYWNwcGMv
ZGlza3N1YnIuYwkyMDAyLzAzLzEyIDIyOjAyOjMzDQpAQCAtMTMzLDcgKzEz
Myw3IEBADQogCQkgICAgLTEgfTsNCiANCiBzdGF0aWMgaW50IGdldEZyZWVM
YWJlbEVudHJ5IF9fUCgoc3RydWN0IGRpc2tsYWJlbCAqKSk7DQotc3RhdGlj
IGludCB3aGljaFR5cGUgX19QKChzdHJ1Y3QgcGFydF9tYXBfZW50cnkgKikp
Ow0KK3N0YXRpYyBpbnQgd2hpY2hUeXBlIF9fUCgoc3RydWN0IHBhcnRfbWFw
X2VudHJ5ICosIHVfaW50OF90ICosIGludCAqKSk7DQogc3RhdGljIHZvaWQg
c2V0cGFydGl0aW9uIF9fUCgoc3RydWN0IHBhcnRfbWFwX2VudHJ5ICosDQog
CQlzdHJ1Y3QgcGFydGl0aW9uICosIGludCkpOw0KIHN0YXRpYyBpbnQgZ2V0
TmFtZWRUeXBlIF9fUCgoc3RydWN0IHBhcnRfbWFwX2VudHJ5ICosIGludCwN
CkBAIC0xNjgsMTMgKzE2OCwxNyBAQA0KICAqIGZpZ3VyZSBvdXQgd2hhdCB0
aGUgdHlwZSBvZiB0aGUgZ2l2ZW4gcGFydCBpcyBhbmQgcmV0dXJuIGl0DQog
ICovDQogc3RhdGljIGludA0KLXdoaWNoVHlwZShwYXJ0KQ0KLQlzdHJ1Y3Qg
cGFydF9tYXBfZW50cnkgKnBhcnQ7DQord2hpY2hUeXBlKHN0cnVjdCBwYXJ0
X21hcF9lbnRyeSAqcGFydCwgdV9pbnQ4X3QgKmZzdHlwZSwgaW50ICpjbHVz
dCkNCiB7DQogCXN0cnVjdCBibG9ja3plcm9ibG9jayAqYnpiOw0KIAljaGFy
IHR5cGVzdHJbMzJdLCAqczsNCiAJaW50IHR5cGU7DQogDQorCS8qIFNldCBk
ZWZhdWx0IHVuaXggcGFydGl0aW9uIHR5cGUuIENlcnRhaW4gcGFydGl0aW9u
IHR5cGVzIGNhbg0KKwkgKiBzcGVjaWZ5IGEgZGlmZmVyZW50IHBhcnRpdGlv
biB0eXBlLiAqLw0KKwkqZnN0eXBlID0gRlNfQlNERkZTOw0KKwkqY2x1c3Qg
PSAwOwkvKiBvbmx5IEEvVVggcGFydGl0aW9ucyBub3QgaW4gY2x1c3RlciAw
ICovDQorDQogCWlmIChwYXJ0LT5wbVNpZyAhPSBQQVJUX0VOVFJZX01BR0lD
IHx8IHBhcnQtPnBtUGFydFR5cGVbMF0gPT0gJ1wwJykNCiAJCXJldHVybiAw
Ow0KIA0KQEAgLTE5MywxMyArMTk3LDIzIEBADQogCSAgICBzdHJjbXAoUEFS
VF9UWVBFX1BBUlRNQVAsIHR5cGVzdHIpID09IDAgfHwNCiAJICAgIHN0cmNt
cChQQVJUX1RZUEVfUEFUQ0hFUywgdHlwZXN0cikgPT0gMCkNCiAJCXR5cGUg
PSAwOw0KLQllbHNlIGlmIChzdHJjbXAoUEFSVF9UWVBFX05CU0RfUFBDQk9P
VCwgdHlwZXN0cikgPT0gMCkNCisJZWxzZSBpZiAoc3RyY21wKFBBUlRfVFlQ
RV9OQlNEX1BQQ0JPT1QsIHR5cGVzdHIpID09IDApIHsNCiAJCXR5cGUgPSBS
T09UX1BBUlQ7DQotCWVsc2UgaWYgKHN0cmNtcChQQVJUX1RZUEVfTkVUQlNE
LCB0eXBlc3RyKSA9PSAwKQ0KKwkJYnpiID0gKHN0cnVjdCBibG9ja3plcm9i
bG9jayAqKSgmcGFydC0+cG1Cb290QXJncyk7DQorCQlpZiAoKGJ6Yi0+Ynpi
TWFnaWMgPT0gQlpCX01BR0lDKSAmJg0KKwkJICAgIChiemItPmJ6YlR5cGUg
PCBGU01BWFRZUEVTKSkNCisJCQkqZnN0eXBlID0gYnpiLT5iemJUeXBlOw0K
Kwl9IGVsc2UgaWYgKHN0cmNtcChQQVJUX1RZUEVfTkVUQlNELCB0eXBlc3Ry
KSA9PSAwIHx8DQorCQkgc3RyY21wKFBBUlRfVFlQRV9OQlNEXzY4S0JPT1Qs
IHR5cGVzdHIpID09IDApIHsNCiAJCXR5cGUgPSBVRlNfUEFSVDsNCi0JZWxz
ZSBpZiAoc3RyY21wKFBBUlRfVFlQRV9VTklYLCB0eXBlc3RyKSA9PSAwKSB7
DQorCQliemIgPSAoc3RydWN0IGJsb2NremVyb2Jsb2NrICopKCZwYXJ0LT5w
bUJvb3RBcmdzKTsNCisJCWlmICgoYnpiLT5iemJNYWdpYyA9PSBCWkJfTUFH
SUMpICYmDQorCQkgICAgKGJ6Yi0+YnpiVHlwZSA8IEZTTUFYVFlQRVMpKQ0K
KwkJCSpmc3R5cGUgPSBiemItPmJ6YlR5cGU7DQorCX0gZWxzZSBpZiAoc3Ry
Y21wKFBBUlRfVFlQRV9VTklYLCB0eXBlc3RyKSA9PSAwKSB7DQogCQkvKiB1
bml4IHBhcnQsIHN3YXAsIHJvb3QsIHVzciAqLw0KIAkJYnpiID0gKHN0cnVj
dCBibG9ja3plcm9ibG9jayAqKSgmcGFydC0+cG1Cb290QXJncyk7DQorCQkq
Y2x1c3QgPSBiemItPmJ6YkNsdXN0ZXI7DQogCQlpZiAoYnpiLT5iemJNYWdp
YyAhPSBCWkJfTUFHSUMpDQogCQkJdHlwZSA9IDA7DQogCQllbHNlIGlmIChi
emItPmJ6YkZsYWdzICYgQlpCX1JPT1RGUykNCkBAIC0yMTksOSArMjMzLDcg
QEANCiB9DQogDQogc3RhdGljIHZvaWQNCi1zZXRwYXJ0aXRpb24ocGFydCwg
cHAsIGZzdHlwZSkNCi0Jc3RydWN0IHBhcnRfbWFwX2VudHJ5ICpwYXJ0Ow0K
LQlzdHJ1Y3QgcGFydGl0aW9uICpwcDsNCitzZXRwYXJ0aXRpb24oc3RydWN0
IHBhcnRfbWFwX2VudHJ5ICpwYXJ0LCBzdHJ1Y3QgcGFydGl0aW9uICpwcCwg
aW50IGZzdHlwZSkNCiB7DQogCXBwLT5wX3NpemUgPSBwYXJ0LT5wbVBhcnRC
bGtDbnQ7DQogCXBwLT5wX29mZnNldCA9IHBhcnQtPnBtUHlQYXJ0U3RhcnQ7
DQpAQCAtMjM5LDI0ICsyNTEsMjUgQEANCiAJaW50ICptYXhzbG90Ow0KIHsN
CiAJc3RydWN0IGJsb2NremVyb2Jsb2NrICpiemI7DQotCWludCBpID0gMDsN
CisJaW50IGkgPSAwLCBjbHVzdDsNCisJdV9pbnQ4X3QgcmVhbHR5cGU7DQog
DQogCWZvciAoaSA9IDA7IGkgPCBudW1fcGFydHM7IGkrKykgew0KLQkJaWYg
KHdoaWNoVHlwZShwYXJ0ICsgaSkgIT0gdHlwZSkNCisJCWlmICh3aGljaFR5
cGUocGFydCArIGksICZyZWFsdHlwZSwgJmNsdXN0KSAhPSB0eXBlKQ0KIAkJ
CWNvbnRpbnVlOw0KIA0KIAkJaWYgKHR5cGUgPT0gUk9PVF9QQVJUKSB7DQog
CQkJYnpiID0gKHN0cnVjdCBibG9ja3plcm9ibG9jayAqKQ0KIAkJCSAgICAo
JihwYXJ0ICsgaSktPnBtQm9vdEFyZ3MpOw0KLQkJCWlmIChhbHQgPj0gMCAm
JiBhbHQgIT0gYnpiLT5iemJDbHVzdGVyKQ0KKwkJCWlmIChhbHQgPj0gMCAm
JiBhbHQgIT0gY2x1c3QpDQogCQkJCWNvbnRpbnVlOw0KLQkJCXNldHBhcnRp
dGlvbihwYXJ0ICsgaSwgJmxwLT5kX3BhcnRpdGlvbnNbMF0sIEZTX0JTREZG
Uyk7DQorCQkJc2V0cGFydGl0aW9uKHBhcnQgKyBpLCAmbHAtPmRfcGFydGl0
aW9uc1swXSwgcmVhbHR5cGUpOw0KIAkJfSBlbHNlIGlmICh0eXBlID09IFVG
U19QQVJUKSB7DQogCQkJYnpiID0gKHN0cnVjdCBibG9ja3plcm9ibG9jayAq
KQ0KIAkJCSAgICAoJihwYXJ0ICsgaSktPnBtQm9vdEFyZ3MpOw0KLQkJCWlm
IChhbHQgPj0gMCAmJiBhbHQgIT0gYnpiLT5iemJDbHVzdGVyKQ0KKwkJCWlm
IChhbHQgPj0gMCAmJiBhbHQgIT0gY2x1c3QpDQogCQkJCWNvbnRpbnVlOw0K
LQkJCXNldHBhcnRpdGlvbihwYXJ0ICsgaSwgJmxwLT5kX3BhcnRpdGlvbnNb
Nl0sIEZTX0JTREZGUyk7DQorCQkJc2V0cGFydGl0aW9uKHBhcnQgKyBpLCAm
bHAtPmRfcGFydGl0aW9uc1s2XSwgcmVhbHR5cGUpOw0KIAkJCWlmICgqbWF4
c2xvdCA8IDYpDQogCQkJCSptYXhzbG90ID0gNjsNCiAJCX0gZWxzZSBpZiAo
dHlwZSA9PSBTV0FQX1BBUlQpIHsNCkBAIC0zMTAsNyArMzIzLDggQEANCiAJ
c3RydWN0IHBhcnRpdGlvbiAqcHA7DQogCXN0cnVjdCBidWYgKmJwOw0KIAlj
aGFyICptc2cgPSBOVUxMOw0KLQlpbnQgaSwgc2xvdCwgbWF4c2xvdCA9IDA7
DQorCWludCBpLCBzbG90LCBtYXhzbG90ID0gMCwgY2x1c3Q7DQorCXVfaW50
OF90IHJlYWx0eXBlOw0KIA0KIAkvKiBnZXQgYnVmZmVyIGFuZCBpbml0aWFs
aXplIGl0ICovDQogCWJwID0gZ2V0ZWJsaygoaW50KWxwLT5kX3NlY3NpemUg
KiBOVU1fUEFSVFMpOw0KQEAgLTM0NywxNCArMzYxLDE0IEBADQogDQogCQlw
cCA9ICZscC0+ZF9wYXJ0aXRpb25zW3Nsb3RdOw0KIA0KLQkJc3dpdGNoICh3
aGljaFR5cGUocGFydCArIGkpKSB7DQorCQlzd2l0Y2ggKHdoaWNoVHlwZShw
YXJ0ICsgaSwgJnJlYWx0eXBlLCAmY2x1c3QpKSB7DQogCQljYXNlIFJPT1Rf
UEFSVDoNCiAJCS8qDQogCQkgKiBhbm90aGVyIHJvb3QgcGFydCB3aWxsIHR1
cm4gaW50byBhIHBsYWluIG9sZA0KIAkJICogVUZTX1BBUlQgcGFydGl0aW9u
LCBsaXZlIHdpdGggaXQuDQogCQkgKi8NCiAJCWNhc2UgVUZTX1BBUlQ6DQot
CQkJc2V0cGFydGl0aW9uKHBhcnQgKyBpLCBwcCwgRlNfQlNERkZTKTsNCisJ
CQlzZXRwYXJ0aXRpb24ocGFydCArIGksIHBwLCByZWFsdHlwZSk7DQogCQkJ
YnJlYWs7DQogCQljYXNlIFNXQVBfUEFSVDoNCiAJCQlzZXRwYXJ0aXRpb24o
cGFydCArIGksIHBwLCBGU19TV0FQKTsNCkluZGV4OiBpbmNsdWRlL2Rpc2ts
YWJlbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2
c3Jvb3Qvc3lzc3JjL3N5cy9hcmNoL21hY3BwYy9pbmNsdWRlL2Rpc2tsYWJl
bC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS43DQpkaWZmIC11IC1yMS43
IGRpc2tsYWJlbC5oDQotLS0gaW5jbHVkZS9kaXNrbGFiZWwuaAkyMDAxLzAy
LzI3IDA2OjE2OjA2CTEuNw0KKysrIGluY2x1ZGUvZGlza2xhYmVsLmgJMjAw
Mi8wMy8xMiAyMjowMjozMw0KQEAgLTE4MCw2ICsxODAsOCBAQA0KICNkZWZp
bmUgUEFSVF9UWVBFX01BQwkJIkFQUExFX0hGUyINCiAjZGVmaW5lIFBBUlRf
VFlQRV9ORVRCU0QJIk5FVEJTRCINCiAjZGVmaW5lIFBBUlRfVFlQRV9OQlNE
X1BQQ0JPT1QJIk5FVEJTRC9NQUNQUEMiDQorI2RlZmluZSBQQVJUX1RZUEVf
TkJTRF82OEtCT09UCSJORVRCU0QvTUFDNjhLIg0KKyNkZWZpbmUgUEFSVF9U
WVBFX1BBVENIRVMJIkFQUExFX1BBVENIRVMiDQogI2RlZmluZSBQQVJUX1RZ
UEVfUEFSVE1BUAkiQVBQTEVfUEFSVElUSU9OX01BUCINCiAjZGVmaW5lIFBB
UlRfVFlQRV9QQVRDSEVTCSJBUFBMRV9QQVRDSEVTIg0KICNkZWZpbmUgUEFS
VF9UWVBFX1NDUkFUQ0gJIkFQUExFX1NDUkFUQ0giDQpAQCAtMjAwLDYgKzIw
MiwxMCBAQA0KIAl1X2ludDMyX3QgICAgICAgYnpiTW91bnRUaW1lOw0KIAl1
X2ludDMyX3QgICAgICAgYnpiVU1vdW50VGltZTsNCiB9Ow0KKyNkZWZpbmUg
YnpiRlNUeXBlCWJ6YlR5cGUNCisjZGVmaW5lIGJ6YkZyYWcJCWJ6YkNsdXN0
ZXINCisjZGVmaW5lIGJ6YkNQRwkJYnpiQmFkQmxvY2tJbm9kZQkvKiBBbHNv
IHNncyBmb3IgTEZTICovDQorI2RlZmluZSBiemJGU2l6ZQliemJDcmVhdGlv
blRpbWUNCiANCiAvKiBBcHBsZSBvY2Nhc2lvbmFsbHkgY2hhbmdlcyB0aGVz
ZSAqLw0KICNkZWZpbmUgQlpCX01BR0lDCTB4QUJBREJBQkUNCg==
--0-834572612-1015971870=:14744--