Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Apr 2010 19:52:31 +0300
From:      Andriy Gapon <avg@icyb.net.ua>
To:        freebsd-fs@FreeBSD.org
Subject:   Re: few ideas for zfsloader ( bootfs -> vfs.root.mountfrom)
Message-ID:  <4BD9B94F.7090709@icyb.net.ua>
In-Reply-To: <4B9FD6E0.5000303@icyb.net.ua>
References:  <4B9FD6E0.5000303@icyb.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------070300090607070101030101
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

on 16/03/2010 21:07 Andriy Gapon said the following:
> I have three crazy-ish ideas for zfsloader.
> Unfortunately, right now I am short on time and I am very short on ZFS knowledge
> to go for implementing them myself.
> 
> 1. If vfs.root.mountfrom is not already set and there is no root mount entry in
> fstab then set vfs.root.mountfrom to "zfs:<current-dataset>".
> This obviously requires being able to get properties of the current dataset
> (filesystem) and get the name from them.

I've made some progress on this, see the attached patch.
The patch is not complete.

What it can do right now:
1. set vfs.zfs.bootfs to something like "zfs:tank:1111" where 'tank' is a pool
name and '1111' is object id of dataset selected as boot filesystem (e.g. via bootfs).
2. set vfs.root.mountfrom to value of vfs.zfs.bootfs iff it was not set
explicietly and '/' entry was not found in fstab.

But right now ZFS can not be mounted using a filesystem specification in the above
format.

I see two ways forward:
1. Enhance ZFS mount kernel code, so that it accepts dataset id instead of its
name.  This doesn't seem to be very hard.
2. Enhance zfs boot code (zfsloader) to map boot dataset id to its name.  I have
prototype code (unfinished, non-working) for this that navigates from a dataset up
the hierarchy (via dir_obj, parent_dir_obj) and does a reverse lookup in directory
child map to find a name component.

While #2 seems nicer it also seems to be a waste, since the name will ultimately
be mapped to object id by ZFS kernel code anyways.

Also, I am not sure if we should care about multiple pools under the same name.
Maybe I should use pool guid instead of pool name in vfs.zfs.bootfs?


Thanks a lot for any comments and help with this.
-- 
Andriy Gapon

--------------070300090607070101030101
Content-Type: text/plain;
 name="zfsboot.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="zfsboot.diff"

ZGlmZiAtLWdpdCBhL3N5cy9ib290L2NvbW1vbi9ib290LmMgYi9zeXMvYm9vdC9jb21tb24v
Ym9vdC5jCmluZGV4IGM2YWI2ODEuLjAyZWNiNjMgMTAwNjQ0Ci0tLSBhL3N5cy9ib290L2Nv
bW1vbi9ib290LmMKKysrIGIvc3lzL2Jvb3QvY29tbW9uL2Jvb3QuYwpAQCAtMzExLDEyICsz
MTEsMTIgQEAgZ2V0cm9vdG1vdW50KGNoYXIgKnJvb3RkZXYpCiAgICAgaWYgKGdldGVudigi
dmZzLnJvb3QubW91bnRmcm9tIikgIT0gTlVMTCkKIAlyZXR1cm4oMCk7CiAKKyAgICBlcnJv
ciA9IDE7CiAgICAgc3ByaW50ZihsYnVmLCAiJXMvZXRjL2ZzdGFiIiwgcm9vdGRldik7CiAg
ICAgaWYgKChmZCA9IG9wZW4obGJ1ZiwgT19SRE9OTFkpKSA8IDApCi0JcmV0dXJuKDEpOwor
CWdvdG8gZW5kOwogCiAgICAgLyogbG9vcCByZWFkaW5nIGxpbmVzIGZyb20gL2V0Yy9mc3Rh
YiAgICBXaGF0IHdhcyB0aGF0IGFib3V0IHNzY2FuZiBhZ2Fpbj8gKi8KLSAgICBlcnJvciA9
IDE7CiAgICAgd2hpbGUgKGZnZXRzdHIobGJ1Ziwgc2l6ZW9mKGxidWYpLCBmZCkgPj0gMCkg
ewogCWlmICgobGJ1ZlswXSA9PSAwKSB8fCAobGJ1ZlswXSA9PSAnIycpKQogCSAgICBjb250
aW51ZTsKQEAgLTM3Nyw2ICszNzcsMTggQEAgZ2V0cm9vdG1vdW50KGNoYXIgKnJvb3RkZXYp
CiAJYnJlYWs7CiAgICAgfQogICAgIGNsb3NlKGZkKTsKKworZW5kOgorICAgIGlmIChlcnJv
ciAhPSAwKSB7CisJY29uc3QgY2hhciAqemZzX2Jvb3RmczsKKworCXpmc19ib290ZnMgPSBn
ZXRlbnYoInZmcy56ZnMuYm9vdGZzIik7CisJaWYgKHpmc19ib290ZnMgIT0gTlVMTCkgewor
CSAgICBzZXRlbnYoInZmcy5yb290Lm1vdW50ZnJvbSIsIHpmc19ib290ZnMsIDApOworCSAg
ICBlcnJvciA9IDA7CisJfQorICAgIH0KKwogICAgIHJldHVybihlcnJvcik7CiB9CiAKZGlm
ZiAtLWdpdCBhL3N5cy9ib290L2kzODYvbG9hZGVyL21haW4uYyBiL3N5cy9ib290L2kzODYv
bG9hZGVyL21haW4uYwppbmRleCAwNzM4ODgyLi40NzY4ZTY0IDEwMDY0NAotLS0gYS9zeXMv
Ym9vdC9pMzg2L2xvYWRlci9tYWluLmMKKysrIGIvc3lzL2Jvb3QvaTM4Ni9sb2FkZXIvbWFp
bi5jCkBAIC03OSw2ICs3OSwxNCBAQCBleHRlcm4JY2hhciBib290cHJvZ19uYW1lW10sIGJv
b3Rwcm9nX3JldltdLCBib290cHJvZ19kYXRlW10sIGJvb3Rwcm9nX21ha2VyW107CiAvKiBY
WFggZGVidWdnaW5nICovCiBleHRlcm4gY2hhciBlbmRbXTsKIAorI2lmZGVmIExPQURFUl9a
RlNfU1VQUE9SVAorZXh0ZXJuIHN0cnVjdCBkZXZzdyB6ZnNfZGV2OworCitleHRlcm4gdWlu
dDY0X3QJCXpmc19ndWlkX3RvX2Jvb3RvYmoodWludDY0X3QpOworZXh0ZXJuIGNvbnN0IGNo
YXIgKgl6ZnNfZ3VpZF90b19uYW1lKHVpbnQ2NF90KTsKK2V4dGVybiBpbnQJCXpmc19ndWlk
X3RvX3VuaXQodWludDY0X3QpOworI2VuZGlmCisKIHN0YXRpYyB2b2lkICpoZWFwX3RvcDsK
IHN0YXRpYyB2b2lkICpoZWFwX2JvdHRvbTsKIApAQCAtMjY2LDIwICsyNzQsMjIgQEAgZXh0
cmFjdF9jdXJyZGV2KHZvaWQpCiAgICAgICogd2hpY2ggWkZTIHBvb2wgd2UgYXJlIGJvb3Rp
bmcgZnJvbS4KICAgICAgKi8KICAgICBpZiAoa2FyZ3MtPmJvb3RmbGFncyAmIEtBUkdTX0ZM
QUdTX1pGUykgewotCS8qCi0JICogRGlnIG91dCB0aGUgcG9vbCBndWlkIGFuZCBjb252ZXJ0
IGl0IHRvIGEgJ3VuaXQgbnVtYmVyJwotCSAqLwotCXVpbnQ2NF90IGd1aWQ7Ci0JaW50IHVu
aXQ7Ci0JY2hhciBkZXZuYW1lWzMyXTsKLQlleHRlcm4gaW50IHpmc19ndWlkX3RvX3VuaXQo
dWludDY0X3QpOworICAgIAljaGFyIGJ1ZlsyNTZdOworICAgICAgICB1aW50NjRfdCBib290
X29iajsKKyAgICAJY29uc3QgY2hhciAqcG9vbG5hbWU7CisgICAgCWludCB1bml0OwogCi0J
Z3VpZCA9IGthcmdzLT56ZnNwb29sOwotCXVuaXQgPSB6ZnNfZ3VpZF90b191bml0KGd1aWQp
OworCXVuaXQgPSB6ZnNfZ3VpZF90b191bml0KGthcmdzLT56ZnNwb29sKTsKIAlpZiAodW5p
dCA+PSAwKSB7CiAJICAgIG5ld19jdXJyZGV2LmRfZGV2ID0gJnpmc19kZXY7CiAJICAgIG5l
d19jdXJyZGV2LmRfdHlwZSA9IG5ld19jdXJyZGV2LmRfZGV2LT5kdl90eXBlOwogCSAgICBu
ZXdfY3VycmRldi5kX3VuaXQgPSB1bml0OworCSAgICBuZXdfY3VycmRldi5kX2tpbmQuemZz
LnBvb2xfZ3VpZCA9IGthcmdzLT56ZnNwb29sOyAvKiBYWFggdW51c2VkICovCisKKwkgICAg
cG9vbG5hbWUgPSB6ZnNfZ3VpZF90b19uYW1lKGthcmdzLT56ZnNwb29sKTsKKwkgICAgYm9v
dF9vYmogPSB6ZnNfZ3VpZF90b19ib290b2JqKGthcmdzLT56ZnNwb29sKTsKKwkgICAgc3By
aW50ZihidWYsICJ6ZnM6JXM6JWxsdSIsIHBvb2xuYW1lLCBib290X29iaik7IC8qIFhYWCBz
bnByaW50Zj8gKi8KKwkgICAgc2V0ZW52KCJ2ZnMuemZzLmJvb3RmcyIsIGJ1ZiwgMSk7CiAJ
fQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzL2Jvb3QvemZzL3pmcy5jIGIvc3lz
L2Jvb3QvemZzL3pmcy5jCmluZGV4IDk5YmI2MGEuLjhlYThhZDAgMTAwNjQ0Ci0tLSBhL3N5
cy9ib290L3pmcy96ZnMuYworKysgYi9zeXMvYm9vdC96ZnMvemZzLmMKQEAgLTM4Nyw2ICsz
ODcsMzIgQEAgemZzX2d1aWRfdG9fdW5pdCh1aW50NjRfdCBndWlkKQogCXJldHVybiAoLTEp
OwogfQogCitjb25zdCBjaGFyICoKK3pmc19ndWlkX3RvX25hbWUodWludDY0X3QgZ3VpZCkK
K3sKKwlzcGFfdCAqc3BhOworCisJU1RBSUxRX0ZPUkVBQ0goc3BhLCAmemZzX3Bvb2xzLCBz
cGFfbGluaykKKwkJaWYgKHNwYS0+c3BhX2d1aWQgPT0gZ3VpZCkKKwkJCXJldHVybiAoc3Bh
LT5zcGFfbmFtZSk7CisKKwlyZXR1cm4gKE5VTEwpOworfQorCit1aW50NjRfdAoremZzX2d1
aWRfdG9fYm9vdG9iaih1aW50NjRfdCBndWlkKQoreworCXNwYV90ICpzcGE7CisKKwlTVEFJ
TFFfRk9SRUFDSChzcGEsICZ6ZnNfcG9vbHMsIHNwYV9saW5rKQorCQlpZiAoc3BhLT5zcGFf
Z3VpZCA9PSBndWlkKSB7CisJCQl6ZnNfbW91bnRfcG9vbChzcGEpOworCQkJcmV0dXJuIChz
cGEtPnNwYV9yb290X29iaik7CisJCX0KKworCXJldHVybiAoMCk7Cit9CisKIHN0YXRpYyBp
bnQKIHpmc19kZXZfaW5pdCh2b2lkKSAKIHsKZGlmZiAtLWdpdCBhL3N5cy9ib290L3pmcy96
ZnNpbXBsLmMgYi9zeXMvYm9vdC96ZnMvemZzaW1wbC5jCmluZGV4IDE0MDdlYjUuLjY3ZDNh
MjMgMTAwNjQ0Ci0tLSBhL3N5cy9ib290L3pmcy96ZnNpbXBsLmMKKysrIGIvc3lzL2Jvb3Qv
emZzL3pmc2ltcGwuYwpAQCAtMTQyMSw2ICsxNDIxLDcgQEAgemZzX21vdW50X2RhdGFzZXQo
c3BhX3QgKnNwYSwgdWludDY0X3Qgb2JqbnVtLCBvYmpzZXRfcGh5c190ICpvYmpzZXQpCiAJ
CXJldHVybiAoRUlPKTsKIAl9CiAKKwlzcGEtPnNwYV9yb290X29iaiA9IG9iam51bTsKIAly
ZXR1cm4gKDApOwogfQogCmRpZmYgLS1naXQgYS9zeXMvY2RkbC9ib290L3pmcy96ZnNpbXBs
LmggYi9zeXMvY2RkbC9ib290L3pmcy96ZnNpbXBsLmgKaW5kZXggZWYxMzQ4Ny4uNDY0NzAx
NiAxMDA2NDQKLS0tIGEvc3lzL2NkZGwvYm9vdC96ZnMvemZzaW1wbC5oCisrKyBiL3N5cy9j
ZGRsL2Jvb3QvemZzL3pmc2ltcGwuaApAQCAtMTIwNSw0ICsxMjA1LDUgQEAgdHlwZWRlZiBz
dHJ1Y3Qgc3BhIHsKIAl2ZGV2X2xpc3RfdAlzcGFfdmRldnM7CS8qIGxpc3Qgb2YgYWxsIHRv
cGxldmVsIHZkZXZzICovCiAJb2Jqc2V0X3BoeXNfdAlzcGFfbW9zOwkvKiBNT1MgZm9yIHRo
aXMgcG9vbCAqLwogCW9ianNldF9waHlzX3QJc3BhX3Jvb3Rfb2Jqc2V0OyAvKiBjdXJyZW50
IG1vdW50ZWQgWlBMIG9ianNldCAqLworCXVpbnQ2NF90CXNwYV9yb290X29iajsJLyogY3Vy
cmVudCBtb3VudGVkIFpQTCBvYmplY3QgaWQgKi8KIH0gc3BhX3Q7Cg==
--------------070300090607070101030101--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BD9B94F.7090709>