Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Nov 2014 22:19:14 -0500 (EST)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        FreeBSD Filesystems <freebsd-fs@freebsd.org>
Subject:   RFC: patch to make d_fileno 64bits
Message-ID:  <539201047.4538834.1416539954794.JavaMail.root@uoguelph.ca>
In-Reply-To: <683927697.4538805.1416539949195.JavaMail.root@uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_4538832_801680899.1416539954793
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

The attached patch covers the basics of a way to
convert the d_fileno field of "struct dirent" to
64bits. This patch is incomplete and won't even
build, but I thought I'd post it in case anyone
wanted to take a look and comment on the approach
it uses.

- renames the old/current one "struct dirent32"
- changes d_fileno to 64bits and adds a 64bit
  d_off field for the offset of the underlying
  file system
- defines a new VOP_READDIR() that will return
  the new "struct dirent" that is used as the
  default one for a new getdirentries(2).
- the old/current getdirentries(2) uses the old
  VOP_READDIR32() by default.

For the case of a file system that supports both
the new and old VOP_READDIR(), they are used by
the corresponding new and old getdirentries(2)
syscalls.

For a file system that only supports one of
the VOP_READDIR()s, the "struct dirent32"
is copied to "struct dirent" (or vice versa).

At this point, all file systems would support
the old VOP_READDIR() and I think the new
VOP_READDIR() can easily be added for NFS,
ZFS. (OpenBSD already has UFS code for
essentially a new struct dirent and hopefully
that code could be ported easily, too.)

Anyhow, any comments on this approach? rick

------=_Part_4538832_801680899.1416539954793
Content-Type: text/x-patch; name=fileno.patch
Content-Disposition: attachment; filename=fileno.patch
Content-Transfer-Encoding: base64

LS0tIHN5cy9kaXJlbnQuaC5zYXYJMjAxNC0xMC0yMyAxODoxMjo1OS4wMDAwMDAwMDAgLTA0MDAK
KysrIHN5cy9kaXJlbnQuaAkyMDE0LTExLTE5IDE5OjEzOjEyLjAwMDAwMDAwMCAtMDUwMApAQCAt
MzgsMTYgKzM4LDMxIEBACiAKIC8qCiAgKiBUaGUgZGlyZW50IHN0cnVjdHVyZSBkZWZpbmVzIHRo
ZSBmb3JtYXQgb2YgZGlyZWN0b3J5IGVudHJpZXMgcmV0dXJuZWQgYnkKLSAqIHRoZSBnZXRkaXJl
bnRyaWVzKDIpIHN5c3RlbSBjYWxsLgorICogdGhlIGdldGRpcmVudHJpZXMoMikgc3lzdGVtIGNh
bGwgYW5kIGRpcmVudDMyIGZvciB0aGUgZ2V0ZGlyZW50cmllczMyKDIpCisgKiBzeXN0ZW0gY2Fs
bC4KICAqCi0gKiBBIGRpcmVjdG9yeSBlbnRyeSBoYXMgYSBzdHJ1Y3QgZGlyZW50IGF0IHRoZSBm
cm9udCBvZiBpdCwgY29udGFpbmluZyBpdHMKKyAqIEEgZGlyZWN0b3J5IGVudHJ5IGhhcyBhIHN0
cnVjdCBkaXJlbnQoMzIpIGF0IHRoZSBmcm9udCBvZiBpdCwgY29udGFpbmluZyBpdHMKICAqIGlu
b2RlIG51bWJlciwgdGhlIGxlbmd0aCBvZiB0aGUgZW50cnksIGFuZCB0aGUgbGVuZ3RoIG9mIHRo
ZSBuYW1lCi0gKiBjb250YWluZWQgaW4gdGhlIGVudHJ5LiAgVGhlc2UgYXJlIGZvbGxvd2VkIGJ5
IHRoZSBuYW1lIHBhZGRlZCB0byBhIDQKKyAqIGNvbnRhaW5lZCBpbiB0aGUgZW50cnkuICBUaGVz
ZSBhcmUgZm9sbG93ZWQgYnkgdGhlIG5hbWUgcGFkZGVkIHRvIGEgOCg0KQogICogYnl0ZSBib3Vu
ZGFyeSB3aXRoIG51bGwgYnl0ZXMuICBBbGwgbmFtZXMgYXJlIGd1YXJhbnRlZWQgbnVsbCB0ZXJt
aW5hdGVkLgogICogVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBpbiBhIGRpcmVjdG9yeSBp
cyBNQVhOQU1MRU4uCiAgKi8KIAogc3RydWN0IGRpcmVudCB7CisJX191aW50NjRfdCBkX29mZjsJ
CS8qIGRpciBvZmZzZXQgZm9yIG9uLWRpc2sgZGlyZWN0b3J5ICovCisJX191aW50NjRfdCBkX2Zp
bGVubzsJCS8qIGZpbGUgbnVtYmVyIG9mIGVudHJ5ICovCisJX191aW50MTZfdCBkX3JlY2xlbjsJ
CS8qIGxlbmd0aCBvZiB0aGlzIHJlY29yZCAqLworCV9fdWludDhfdCAgZF90eXBlOyAJCS8qIGZp
bGUgdHlwZSwgc2VlIGJlbG93ICovCisJX191aW50OF90ICBkX25hbWxlbjsJCS8qIGxlbmd0aCBv
ZiBzdHJpbmcgaW4gZF9uYW1lICovCisjaWYgX19CU0RfVklTSUJMRQorI2RlZmluZQlNQVhOQU1M
RU4JMjU1CisJY2hhcglkX25hbWVbTUFYTkFNTEVOICsgMV07CS8qIG5hbWUgbXVzdCBiZSBubyBs
b25nZXIgdGhhbiB0aGlzICovCisjZWxzZQorCWNoYXIJZF9uYW1lWzI1NSArIDFdOwkvKiBuYW1l
IG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gdGhpcyAqLworI2VuZGlmCit9OworCitzdHJ1Y3QgZGly
ZW50MzIgewogCV9fdWludDMyX3QgZF9maWxlbm87CQkvKiBmaWxlIG51bWJlciBvZiBlbnRyeSAq
LwogCV9fdWludDE2X3QgZF9yZWNsZW47CQkvKiBsZW5ndGggb2YgdGhpcyByZWNvcmQgKi8KIAlf
X3VpbnQ4X3QgIGRfdHlwZTsgCQkvKiBmaWxlIHR5cGUsIHNlZSBiZWxvdyAqLwpAQCAtODEsMjAg
Kzk2LDI2IEBAIHN0cnVjdCBkaXJlbnQgewogI2RlZmluZQlEVFRPSUYoZGlydHlwZSkJKChkaXJ0
eXBlKSA8PCAxMikKIAogLyoKLSAqIFRoZSBfR0VORVJJQ19ESVJTSVogbWFjcm8gZ2l2ZXMgdGhl
IG1pbmltdW0gcmVjb3JkIGxlbmd0aCB3aGljaCB3aWxsIGhvbGQKLSAqIHRoZSBkaXJlY3Rvcnkg
ZW50cnkuICBUaGlzIHJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSBpbiBzdHJ1Y3QgZGlyZWN0
Ci0gKiB3aXRob3V0IHRoZSBkX25hbWUgZmllbGQsIHBsdXMgZW5vdWdoIHNwYWNlIGZvciB0aGUg
bmFtZSB3aXRoIGEgdGVybWluYXRpbmcKLSAqIG51bGwgYnl0ZSAoZHAtPmRfbmFtbGVuKzEpLCBy
b3VuZGVkIHVwIHRvIGEgNCBieXRlIGJvdW5kYXJ5LgorICogVGhlIF9HRU5FUklDX3h4eCBtYWNy
b3MgZ2l2ZXMgdGhlIG1pbmltdW0gcmVjb3JkIGxlbmd0aCB3aGljaCB3aWxsCisgKiBob2xkIHRo
ZSBkaXJlY3RvcnkgZW50cnkuICBUaGV5IHJldHVybiB0aGUgYW1vdW50IG9mIHNwYWNlIGluIHN0
cnVjdAorICogZGlyZW50KDMyKSB3aXRob3V0IHRoZSBkX25hbWUgZmllbGQsIHBsdXMgZW5vdWdo
IHNwYWNlIGZvciB0aGUgbmFtZSB3aXRoIGEKKyAqIHRlcm1pbmF0aW5nIG51bGwgYnl0ZSAoZHAt
PmRfbmFtbGVuKzEpLCByb3VuZGVkIHVwIHRvIGEgOCg0KSBieXRlIGJvdW5kYXJ5LgorICogVGhl
IF9HRU5FUklDX0RJUlZBTCgpIGNhc2UgdGFrZXMgdGhlIG5hbWUgbGVuZ3RoIGluc3RlYWQgb2Yg
ZHAgYXMgdGhlCisgKiBhcmd1bWVudC4KICAqCiAgKiBYWFggYWx0aG91Z2ggdGhpcyBtYWNybyBp
cyBpbiB0aGUgaW1wbGVtZW50YXRpb24gbmFtZXNwYWNlLCBpdCByZXF1aXJlcwogICogYSBtYW5p
ZmVzdCBjb25zdGFudCB0aGF0IGlzIG5vdC4KICAqLwotI2RlZmluZQlfR0VORVJJQ19ESVJTSVoo
ZHApIFwKLSAgICAoKHNpemVvZiAoc3RydWN0IGRpcmVudCkgLSAoTUFYTkFNTEVOKzEpKSArICgo
KGRwKS0+ZF9uYW1sZW4rMSArIDMpICZ+IDMpKQorI2RlZmluZQlfR0VORVJJQ19ESVJWQUwobmFt
bGVuKSBcCisgICAgKChzaXplb2Yoc3RydWN0IGRpcmVudCkgLSAoTUFYTkFNTEVOICsgMSkgKyAo
bmFtbGVuKSArIDEgKyA3KSAmIH43KQorI2RlZmluZQlfR0VORVJJQ19ESVJTSVooZHApCV9HRU5F
UklDX0RJUlZBTCgoZHApLT5kX25hbWxlbikKKyNkZWZpbmUJX0dFTkVSSUNfRElSU0laMzIoZHAp
IFwKKyAgICAoKHNpemVvZiAoc3RydWN0IGRpcmVudDMyKSAtIChNQVhOQU1MRU4rMSkpICsgKCgo
ZHApLT5kX25hbWxlbisxICsgMykgJn4gMykpCiAjZW5kaWYgLyogX19CU0RfVklTSUJMRSAqLwog
CiAjaWZkZWYgX0tFUk5FTAogI2RlZmluZQlHRU5FUklDX0RJUlNJWihkcCkJX0dFTkVSSUNfRElS
U0laKGRwKQorI2RlZmluZQlHRU5FUklDX0RJUlNJWjMyKGRwKQlfR0VORVJJQ19ESVJTSVozMihk
cCkKICNlbmRpZgogCiAjZW5kaWYgLyogIV9TWVNfRElSRU5UX0hfICovCi0tLSBrZXJuL3Zmc19z
eXNjYWxscy5jLnNhdgkyMDE0LTEwLTI0IDE2OjQ1OjM5LjAwMDAwMDAwMCAtMDQwMAorKysga2Vy
bi92ZnNfc3lzY2FsbHMuYwkyMDE0LTExLTIwIDIxOjQ2OjI5LjAwMDAwMDAwMCAtMDUwMApAQCAt
NDAwNiwxMCArNDAwNiwxMSBAQCB1bmlvbnJlYWQ6CiAjZW5kaWYgLyogQ09NUEFUXzQzICovCiAK
IC8qCi0gKiBSZWFkIGEgYmxvY2sgb2YgZGlyZWN0b3J5IGVudHJpZXMgaW4gYSBmaWxlc3lzdGVt
IGluZGVwZW5kZW50IGZvcm1hdC4KKyAqIFJlYWQgdGhlIG9sZCAic3RydWN0IGRpcmVudDMyIiBi
bG9jayBvZiBkaXJlY3RvcnkgZW50cmllcyBpbiBhCisgKiBmaWxlc3lzdGVtIGluZGVwZW5kZW50
IGZvcm1hdC4KICAqLwogI2lmbmRlZiBfU1lTX1NZU1BST1RPX0hfCi1zdHJ1Y3QgZ2V0ZGlyZW50
cmllc19hcmdzIHsKK3N0cnVjdCBnZXRkaXJlbnRyaWVzMzJfYXJncyB7CiAJaW50CWZkOwogCWNo
YXIJKmJ1ZjsKIAl1X2ludAljb3VudDsKQEAgLTQwMTcsOSArNDAxOCw5IEBAIHN0cnVjdCBnZXRk
aXJlbnRyaWVzX2FyZ3MgewogfTsKICNlbmRpZgogaW50Ci1zeXNfZ2V0ZGlyZW50cmllcyh0ZCwg
dWFwKQorc3lzX2dldGRpcmVudHJpZXMzMih0ZCwgdWFwKQogCXN0cnVjdCB0aHJlYWQgKnRkOwot
CXJlZ2lzdGVyIHN0cnVjdCBnZXRkaXJlbnRyaWVzX2FyZ3MgLyogeworCXJlZ2lzdGVyIHN0cnVj
dCBnZXRkaXJlbnRyaWVzMzJfYXJncyAvKiB7CiAJCWludCBmZDsKIAkJY2hhciAqYnVmOwogCQl1
X2ludCBjb3VudDsKQEAgLTQwMjksNyArNDAzMCw3IEBAIHN5c19nZXRkaXJlbnRyaWVzKHRkLCB1
YXApCiAJbG9uZyBiYXNlOwogCWludCBlcnJvcjsKIAotCWVycm9yID0ga2Vybl9nZXRkaXJlbnRy
aWVzKHRkLCB1YXAtPmZkLCB1YXAtPmJ1ZiwgdWFwLT5jb3VudCwgJmJhc2UsCisJZXJyb3IgPSBr
ZXJuX2dldGRpcmVudHJpZXMzMih0ZCwgdWFwLT5mZCwgdWFwLT5idWYsIHVhcC0+Y291bnQsICZi
YXNlLAogCSAgICBOVUxMLCBVSU9fVVNFUlNQQUNFKTsKIAlpZiAoZXJyb3IgIT0gMCkKIAkJcmV0
dXJuIChlcnJvcik7CkBAIC00MDM5LDcgKzQwNDAsNyBAQCBzeXNfZ2V0ZGlyZW50cmllcyh0ZCwg
dWFwKQogfQogCiBpbnQKLWtlcm5fZ2V0ZGlyZW50cmllcyhzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50
IGZkLCBjaGFyICpidWYsIHVfaW50IGNvdW50LAora2Vybl9nZXRkaXJlbnRyaWVzMzIoc3RydWN0
IHRocmVhZCAqdGQsIGludCBmZCwgY2hhciAqYnVmLCB1X2ludCBjb3VudCwKICAgICBsb25nICpi
YXNlcCwgc3NpemVfdCAqcmVzaWRwLCBlbnVtIHVpb19zZWcgYnVmc2VnKQogewogCXN0cnVjdCB2
bm9kZSAqdnA7CkBAIC00MDQ4LDggKzQwNDksOSBAQCBrZXJuX2dldGRpcmVudHJpZXMoc3RydWN0
IHRocmVhZCAqdGQsIGluCiAJc3RydWN0IGlvdmVjIGFpb3Y7CiAJY2FwX3JpZ2h0c190IHJpZ2h0
czsKIAlsb25nIGxvZmY7Ci0JaW50IGVycm9yLCBlb2ZmbGFnOworCWludCBjb3B5X2RpciA9IDAs
IGVycm9yLCBlb2ZmbGFnOwogCW9mZl90IGZvZmZzZXQ7CisJY2hhciAqdGJ1ZiA9IE5VTEw7CiAK
IAlBVURJVF9BUkdfRkQoZmQpOwogCWlmIChjb3VudCA+IElPU0laRV9NQVgpCkBAIC00MDcwLDIy
ICs0MDcyLDQ2IEBAIHVuaW9ucmVhZDoKIAkJZXJyb3IgPSBFSU5WQUw7CiAJCWdvdG8gZmFpbDsK
IAl9Ci0JYWlvdi5pb3ZfYmFzZSA9IGJ1ZjsKKwl2bl9sb2NrKHZwLCBMS19TSEFSRUQgfCBMS19S
RVRSWSk7Cit0cnluZXc6CisJLyoKKwkgKiBJZiB0aGlzIGZpbGUgc3lzdGVtIG9ubHkgcmV0dXJu
cyB0aGUgbmV3IHN0cnVjdCBkaXJlbnQsIGFsbG9jYXRlCisJICogYSBrZXJuZWwgYnVmZmVyIHRv
IGJlIHJlYWQgaW50bywgc28gaXQgY2FuIGJlIGNvcGllZC9jb252ZXJ0ZWQuCisJICovCisJaWYg
KGNvcHlfZGlyICE9IDAgJiYgYnVmc2VnID09IFVJT19VU0VSU1BBQ0UpIHsKKwkJaWYgKHRidWYg
PT0gTlVMTCkKKwkJCXRidWYgPSBtYWxsb2MoY291bnQsIE1fVEVNUCwgTV9XQUlUT0spOworCQlh
aW92Lmlvdl9iYXNlID0gdGJ1ZjsKKwl9IGVsc2UKKwkJYWlvdi5pb3ZfYmFzZSA9IGJ1ZjsKIAlh
aW92Lmlvdl9sZW4gPSBjb3VudDsKIAlhdWlvLnVpb19pb3YgPSAmYWlvdjsKIAlhdWlvLnVpb19p
b3ZjbnQgPSAxOwogCWF1aW8udWlvX3J3ID0gVUlPX1JFQUQ7Ci0JYXVpby51aW9fc2VnZmxnID0g
YnVmc2VnOworCWlmIChjb3B5X2RpciAhPSAwICYmIGJ1ZnNlZyA9PSBVSU9fVVNFUlNQQUNFKQor
CQlhdWlvLnVpb19zZWdmbGcgPSBVSU9fU1lTU1BBQ0U7CisJZWxzZQorCQlhdWlvLnVpb19zZWdm
bGcgPSBidWZzZWc7CiAJYXVpby51aW9fdGQgPSB0ZDsKLQl2bl9sb2NrKHZwLCBMS19TSEFSRUQg
fCBMS19SRVRSWSk7CiAJQVVESVRfQVJHX1ZOT0RFMSh2cCk7CiAJbG9mZiA9IGF1aW8udWlvX29m
ZnNldCA9IGZvZmZzZXQ7CiAjaWZkZWYgTUFDCiAJZXJyb3IgPSBtYWNfdm5vZGVfY2hlY2tfcmVh
ZGRpcih0ZC0+dGRfdWNyZWQsIHZwKTsKIAlpZiAoZXJyb3IgPT0gMCkKICNlbmRpZgotCQllcnJv
ciA9IFZPUF9SRUFERElSKHZwLCAmYXVpbywgZnAtPmZfY3JlZCwgJmVvZmZsYWcsIE5VTEwsCi0J
CSAgICBOVUxMKTsKKwl7CisJCWlmIChjb3B5X2RpciA9PSAwKSB7CisJCQllcnJvciA9IFZPUF9S
RUFERElSMzIodnAsICZhdWlvLCBmcC0+Zl9jcmVkLCAmZW9mZmxhZywKKwkJCSAgICBOVUxMLCBO
VUxMKTsKKwkJCWlmIChlcnJvciA9PSBFT1BOT1RTVVBQKSB7CisJCQkJY29weV9kaXIgPSAxOwor
CQkJCWVycm9yID0gMDsKKwkJCQlnb3RvIHRyeW5ldzsKKwkJCX0KKwkJfSBlbHNlCisJCQllcnJv
ciA9IFZPUF9SRUFERElSKHZwLCAmYXVpbywgZnAtPmZfY3JlZCwgJmVvZmZsYWcsCisJCQkgICAg
TlVMTCwgTlVMTCk7CisJfQogCWZvZmZzZXQgPSBhdWlvLnVpb19vZmZzZXQ7CiAJaWYgKGVycm9y
ICE9IDApIHsKIAkJVk9QX1VOTE9DSyh2cCwgMCk7CkBAIC00MTAyLDE0ICs0MTI4LDIwOSBAQCB1
bmlvbnJlYWQ6CiAJCWZwLT5mX2RhdGEgPSB2cDsKIAkJZm9mZnNldCA9IDA7CiAJCXZwdXQodHZw
KTsKKwkJY29weV9kaXIgPSAwOwogCQlnb3RvIHVuaW9ucmVhZDsKIAl9CiAJVk9QX1VOTE9DSyh2
cCwgMCk7CisJaWYgKGNvcHlfZGlyICE9IDAgJiYgY291bnQgLSBhdWlvLnVpb19yZXNpZCA+IDAp
IHsKKwkJaWYgKGJ1ZnNlZyA9PSBVSU9fVVNFUlNQQUNFKSB7CisJCQljb3B5X2RpcmVudDMyKHRi
dWYsIGNvdW50IC0gYXVpby51aW9fcmVzaWQpOworCQkJZXJyb3IgPSBjb3B5b3V0KHRidWYsIGJ1
ZiwgY291bnQgLSBhdWlvLnVpb19yZXNpZCk7CisJCQlpZiAoZXJyb3IgIT0gMCkKKwkJCQlnb3Rv
IGZhaWw7CisJCX0gZWxzZQorCQkJY29weV9kaXJlbnQzMihidWYsIGNvdW50IC0gYXVpby51aW9f
cmVzaWQpOworCX0KIAkqYmFzZXAgPSBsb2ZmOwogCWlmIChyZXNpZHAgIT0gTlVMTCkKIAkJKnJl
c2lkcCA9IGF1aW8udWlvX3Jlc2lkOwogCXRkLT50ZF9yZXR2YWxbMF0gPSBjb3VudCAtIGF1aW8u
dWlvX3Jlc2lkOwogZmFpbDoKKwlpZiAodGJ1ZiAhPSBOVUxMKQorCQlmcmVlKHRidWYsIE1fVEVN
UCk7CisJZm9mZnNldF91bmxvY2soZnAsIGZvZmZzZXQsIDApOworCWZkcm9wKGZwLCB0ZCk7CisJ
cmV0dXJuIChlcnJvcik7Cit9CisKKyNpZm5kZWYgX1NZU19TWVNQUk9UT19IXworc3RydWN0IGdl
dGRlbnRzMzJfYXJncyB7CisJaW50IGZkOworCWNoYXIgKmJ1ZjsKKwlzaXplX3QgY291bnQ7Cit9
OworI2VuZGlmCitpbnQKK3N5c19nZXRkZW50czMyKHRkLCB1YXApCisJc3RydWN0IHRocmVhZCAq
dGQ7CisJcmVnaXN0ZXIgc3RydWN0IGdldGRlbnRzMzJfYXJncyAvKiB7CisJCWludCBmZDsKKwkJ
Y2hhciAqYnVmOworCQl1X2ludCBjb3VudDsKKwl9ICovICp1YXA7Cit7CisJc3RydWN0IGdldGRp
cmVudHJpZXMzMl9hcmdzIGFwOworCisJYXAuZmQgPSB1YXAtPmZkOworCWFwLmJ1ZiA9IHVhcC0+
YnVmOworCWFwLmNvdW50ID0gdWFwLT5jb3VudDsKKwlhcC5iYXNlcCA9IE5VTEw7CisJcmV0dXJu
IChzeXNfZ2V0ZGlyZW50cmllczMyKHRkLCAmYXApKTsKK30KKworLyoKKyAqIFJlYWQgaW4gdGhl
IG5ldyAic3RydWN0IGRpcmVudCIgYmxvY2sgb2YgZGlyZWN0b3J5IGVudHJpZXMgaW4gYQorICog
ZmlsZXN5c3RlbSBpbmRlcGVuZGVudCBmb3JtYXQuCisgKi8KKyNpZm5kZWYgX1NZU19TWVNQUk9U
T19IXworc3RydWN0IGdldGRpcmVudHJpZXNfYXJncyB7CisJaW50CWZkOworCWNoYXIJKmJ1ZjsK
Kwl1X2ludAljb3VudDsKKwl1aW50NjRfdCAqYmFzZXA7Cit9OworI2VuZGlmCitpbnQKK3N5c19n
ZXRkaXJlbnRyaWVzKHRkLCB1YXApCisJc3RydWN0IHRocmVhZCAqdGQ7CisJcmVnaXN0ZXIgc3Ry
dWN0IGdldGRpcmVudHJpZXNfYXJncyAvKiB7CisJCWludCBmZDsKKwkJY2hhciAqYnVmOworCQl1
X2ludCBjb3VudDsKKwkJdWludDY0X3QgKmJhc2VwOworCX0gKi8gKnVhcDsKK3sKKwl1aW50NjRf
dCBiYXNlOworCWludCBlcnJvcjsKKworCWVycm9yID0ga2Vybl9nZXRkaXJlbnRyaWVzKHRkLCB1
YXAtPmZkLCB1YXAtPmJ1ZiwgdWFwLT5jb3VudCwgJmJhc2UsCisJICAgIE5VTEwsIFVJT19VU0VS
U1BBQ0UpOworCWlmIChlcnJvciAhPSAwKQorCQlyZXR1cm4gKGVycm9yKTsKKwlpZiAodWFwLT5i
YXNlcCAhPSBOVUxMKQorCQllcnJvciA9IGNvcHlvdXQoJmJhc2UsIHVhcC0+YmFzZXAsIHNpemVv
Zih1aW50NjRfdCkpOworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKK2tlcm5fZ2V0ZGlyZW50
cmllcyhzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50IGZkLCBjaGFyICpidWYsIHVfaW50IGNvdW50LAor
ICAgIHVpbnQ2NF90ICpiYXNlcCwgc3NpemVfdCAqcmVzaWRwLCBlbnVtIHVpb19zZWcgYnVmc2Vn
KQoreworCXN0cnVjdCB2bm9kZSAqdnA7CisJc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB1aW8g
YXVpbzsKKwlzdHJ1Y3QgaW92ZWMgYWlvdjsKKwljYXBfcmlnaHRzX3QgcmlnaHRzOworCXVpbnQ2
NF90IGxvZmY7CisJaW50IGNvcHlfZGlyID0gMCwgZXJyb3IsIGVvZmZsYWc7CisJb2ZmX3QgZm9m
ZnNldDsKKwljaGFyICppYnVmID0gTlVMTCwgKm9idWYgPSBOVUxMOworCXVfaW50IG9idWZsZW47
CisKKwlBVURJVF9BUkdfRkQoZmQpOworCWlmIChjb3VudCA+IElPU0laRV9NQVgpCisJCXJldHVy
biAoRUlOVkFMKTsKKwlhdWlvLnVpb19yZXNpZCA9IGNvdW50OworCWVycm9yID0gZ2V0dm5vZGUo
dGQtPnRkX3Byb2MtPnBfZmQsIGZkLAorCSAgICBjYXBfcmlnaHRzX2luaXQoJnJpZ2h0cywgQ0FQ
X1JFQUQpLCAmZnApOworCWlmIChlcnJvciAhPSAwKQorCQlyZXR1cm4gKGVycm9yKTsKKwlpZiAo
KGZwLT5mX2ZsYWcgJiBGUkVBRCkgPT0gMCkgeworCQlmZHJvcChmcCwgdGQpOworCQlyZXR1cm4g
KEVCQURGKTsKKwl9CisJdnAgPSBmcC0+Zl92bm9kZTsKKwlmb2Zmc2V0ID0gZm9mZnNldF9sb2Nr
KGZwLCAwKTsKK3VuaW9ucmVhZDoKKwlpZiAodnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCWVycm9y
ID0gRUlOVkFMOworCQlnb3RvIGZhaWw7CisJfQorCXZuX2xvY2sodnAsIExLX1NIQVJFRCB8IExL
X1JFVFJZKTsKK3RyeW9sZDoKKwkvKgorCSAqIElmIHRoaXMgZmlsZSBzeXN0ZW0gb25seSByZXR1
cm5zIHRoZSBvbGQgc3RydWN0IGRpcmVudCwgYWxsb2NhdGUKKwkgKiBrZXJuZWwgYnVmZmVycyB0
byBiZSByZWFkIGFuZCBjb3BpZWQvY29udmVydGVkIGludG8uCisJICovCisJaWYgKGNvcHlfZGly
ICE9IDApIHsKKwkJaWYgKGlidWYgPT0gTlVMTCkKKwkJCWlidWYgPSBtYWxsb2MoY291bnQsIE1f
VEVNUCwgTV9XQUlUT0spOworCQlpZiAob2J1ZiA9PSBOVUxMKQorCQkJb2J1ZiA9IG1hbGxvYyhj
b3VudCwgTV9URU1QLCBNX1dBSVRPSyk7CisJCWFpb3YuaW92X2Jhc2UgPSBpYnVmOworCX0gZWxz
ZQorCQlhaW92Lmlvdl9iYXNlID0gYnVmOworCWFpb3YuaW92X2xlbiA9IGNvdW50OworCWF1aW8u
dWlvX2lvdiA9ICZhaW92OworCWF1aW8udWlvX2lvdmNudCA9IDE7CisJYXVpby51aW9fcncgPSBV
SU9fUkVBRDsKKwlpZiAoY29weV9kaXIgIT0gMCkKKwkJYXVpby51aW9fc2VnZmxnID0gVUlPX1NZ
U1NQQUNFOworCWVsc2UKKwkJYXVpby51aW9fc2VnZmxnID0gYnVmc2VnOworCWF1aW8udWlvX3Rk
ID0gdGQ7CisJQVVESVRfQVJHX1ZOT0RFMSh2cCk7CisJbG9mZiA9IGF1aW8udWlvX29mZnNldCA9
IGZvZmZzZXQ7CisjaWZkZWYgTUFDCisJZXJyb3IgPSBtYWNfdm5vZGVfY2hlY2tfcmVhZGRpcih0
ZC0+dGRfdWNyZWQsIHZwKTsKKwlpZiAoZXJyb3IgPT0gMCkKKyNlbmRpZgorCXsKKwkJaWYgKGNv
cHlfZGlyID09IDApIHsKKwkJCWVycm9yID0gVk9QX1JFQURESVIodnAsICZhdWlvLCBmcC0+Zl9j
cmVkLCAmZW9mZmxhZywKKwkJCSAgICBOVUxMLCBOVUxMKTsKKwkJCWlmIChlcnJvciA9PSBFT1BO
T1RTVVBQKSB7CisJCQkJY29weV9kaXIgPSAxOworCQkJCWVycm9yID0gMDsKKwkJCQlnb3RvIHRy
eW9sZDsKKwkJCX0KKwkJCWZvZmZzZXQgPSBhdWlvLnVpb19vZmZzZXQ7CisJCX0gZWxzZQorCQkJ
ZXJyb3IgPSBWT1BfUkVBRERJUjMyKHZwLCAmYXVpbywgZnAtPmZfY3JlZCwgJmVvZmZsYWcsCisJ
CQkgICAgTlVMTCwgTlVMTCk7CisJfQorCWlmIChlcnJvciAhPSAwKSB7CisJCVZPUF9VTkxPQ0so
dnAsIDApOworCQlnb3RvIGZhaWw7CisJfQorCWlmIChjb3VudCA9PSBhdWlvLnVpb19yZXNpZCAm
JgorCSAgICAodnAtPnZfdmZsYWcgJiBWVl9ST09UKSAmJgorCSAgICAodnAtPnZfbW91bnQtPm1u
dF9mbGFnICYgTU5UX1VOSU9OKSkgeworCQlzdHJ1Y3Qgdm5vZGUgKnR2cCA9IHZwOworCisJCXZw
ID0gdnAtPnZfbW91bnQtPm1udF92bm9kZWNvdmVyZWQ7CisJCVZSRUYodnApOworCQlmcC0+Zl92
bm9kZSA9IHZwOworCQlmcC0+Zl9kYXRhID0gdnA7CisJCWZvZmZzZXQgPSAwOworCQl2cHV0KHR2
cCk7CisJCWNvcHlfZGlyID0gMDsKKwkJZ290byB1bmlvbnJlYWQ7CisJfQorCVZPUF9VTkxPQ0so
dnAsIDApOworCWlmIChjb3B5X2RpciAhPSAwICYmIGNvdW50IC0gYXVpby51aW9fcmVzaWQgPiAw
KSB7CisJCW9idWZsZW4gPSBjb3B5X2RpcmVudChpYnVmLCBjb3VudCAtIGF1aW8udWlvX3Jlc2lk
LCBvYnVmLCBjb3VudCwKKwkJICAgICZmb2Zmc2V0KTsKKwkJaWYgKGJ1ZnNlZyA9PSBVSU9fVVNF
UlNQQUNFKQorCQkJZXJyb3IgPSBjb3B5b3V0KG9idWYsIGJ1Ziwgb2J1Zmxlbik7CisJCWVsc2UK
KwkJCWJjb3B5KG9idWYsIGJ1Ziwgb2J1Zmxlbik7CisJCWlmIChlcnJvciAhPSAwKQorCQkJZ290
byBmYWlsOworCQlpZiAocmVzaWRwICE9IE5VTEwpCisJCQkqcmVzaWRwID0gY291bnQgLSBvYnVm
bGVuOworCQl0ZC0+dGRfcmV0dmFsWzBdID0gb2J1ZmxlbjsKKwl9IGVsc2UgeworCQlpZiAocmVz
aWRwICE9IE5VTEwpCisJCQkqcmVzaWRwID0gYXVpby51aW9fcmVzaWQ7CisJCXRkLT50ZF9yZXR2
YWxbMF0gPSBjb3VudCAtIGF1aW8udWlvX3Jlc2lkOworCX0KKwkqYmFzZXAgPSBsb2ZmOworZmFp
bDoKKwlpZiAoaWJ1ZiAhPSBOVUxMKQorCQlmcmVlKGlidWYsIE1fVEVNUCk7CisJaWYgKG9idWYg
IT0gTlVMTCkKKwkJZnJlZShvYnVmLCBNX1RFTVApOwogCWZvZmZzZXRfdW5sb2NrKGZwLCBmb2Zm
c2V0LCAwKTsKIAlmZHJvcChmcCwgdGQpOwogCXJldHVybiAoZXJyb3IpOwpAQCAtNDE0MSw2ICs0
MzYyLDY5IEBAIHN5c19nZXRkZW50cyh0ZCwgdWFwKQogfQogCiAvKgorICogQ29weSB0aGUgbmV3
IHN0cnVjdCBuZGlyZW50IHRvIHRoZSBvbGQgc3RydWN0IGRpcmVudCBmb3JtYXQuCisgKi8KK3N0
YXRpYyB2b2lkCitjb3B5X2RpcmVudDMyKGNoYXIgKmJ1ZiwgdV9pbnQgbGVuKQoreworCXN0cnVj
dCBkaXJlbnQgKmRwOworCXN0cnVjdCBkaXJlbnQzMiAqZHAzMjsKKworCXdoaWxlIChsZW4gPiAw
KSB7CisJCWRwID0gKHN0cnVjdCBkaXJlbnQgKilidWY7CisJCWRwMzIgPSAoc3RydWN0IGRpcmVu
dDMyICopYnVmOworCQlkcDMyLT5kX2ZpbGVubyA9IGRwLT5kX2ZpbGVubzsKKwkJZHAzMi0+ZF9y
ZWNsZW4gPSBkcC0+ZF9yZWNsZW47CisJCWRwMzItPmRfdHlwZSA9IGRwLT5kX3R5cGU7CisJCWRw
MzItPmRfbmFtbGVuID0gZHAtPmRfbmFtbGVuOworCQliY29weShkcC0+ZF9uYW1lLCBkcDMyLT5k
X25hbWUsIGRwMzItPmRfbmFtbGVuICsgMSk7CisJCWJ1ZiArPSBkcDMyLT5kX3JlY2xlbjsKKwkJ
bGVuIC09IGRwMzItPmRfcmVjbGVuOworCX0KK30KKworLyoKKyAqIENvcHkgdGhlIG9sZCBzdHJ1
Y3QgZGlyZW50MzIgdG8gbmV3IHN0cnVjdCBkaXJlbnQgZm9ybWF0LgorICovCitzdGF0aWMgdV9p
bnQKK2NvcHlfZGlyZW50KGNoYXIgKmlidWYsIHVfaW50IGlsZW4sIGNoYXIgKm9idWYsIHVfaW50
IG9sZW4sIG9mZl90ICpvZmZwKQoreworCXN0cnVjdCBkaXJlbnQgKmRwOworCXN0cnVjdCBkaXJl
bnQzMiAqZHAzMjsKKwl1X2ludCBsZWZ0LCBvY250OworCisJZHAzMiA9IChzdHJ1Y3QgZGlyZW50
MzIgKilpYnVmOworCW9jbnQgPSAwOworCXdoaWxlIChpbGVuID4gMCAmJiBvbGVuID49IG9jbnQg
KyBfR0VORVJJQ19ESVJWQUwoZHAzMi0+ZF9uYW1sZW4pKSB7CisJCWRwID0gKHN0cnVjdCBkaXJl
bnQgKilvYnVmOworCQlkcC0+ZF9vZmYgPSAqb2ZmcDsKKwkJZHAtPmRfZmlsZW5vID0gZHAzMi0+
ZF9maWxlbm87CisJCWRwLT5kX3R5cGUgPSBkcDMyLT5kX3R5cGU7CisJCWRwLT5kX25hbWxlbiA9
IGRwMzItPmRfbmFtbGVuOworCQliY29weShkcDMyLT5kX25hbWUsIGRwLT5kX25hbWUsIGRwMzIt
PmRfbmFtbGVuICsgMSk7CisJCWRwLT5kX3JlY2xlbiA9IF9HRU5FUklDX0RJUlNJWihkcCk7CisJ
CWlidWYgKz0gZHAzMi0+ZF9yZWNsZW47CisJCWlsZW4gLT0gZHAzMi0+ZF9yZWNsZW47CisJCSpv
ZmZwICs9IGRwMzItPmRfcmVjbGVuOworCQlvYnVmICs9IGRwLT5kX3JlY2xlbjsKKwkJb2NudCAr
PSBkcC0+ZF9yZWNsZW47CisJCWxlZnQgPSBERVZfQlNJWkUgLSAob2NudCAmIChERVZfQlNJWkUg
LSAxKSk7CisJCWRwMzIgPSAoc3RydWN0IGRpcmVudDMyICopaWJ1ZjsKKwkJaWYgKGlsZW4gPiAw
ICYmIGxlZnQgPCBfR0VORVJJQ19ESVJWQUwoZHAzMi0+ZF9uYW1sZW4pKSB7CisJCQlkcC0+ZF9y
ZWNsZW4gKz0gbGVmdDsKKwkJCW9idWYgKz0gbGVmdDsKKwkJCW9jbnQgKz0gbGVmdDsKKwkJfQor
CX0KKwlpZiAob2NudCA8IG9sZW4pIHsKKwkJbGVmdCA9IERFVl9CU0laRSAtIChvY250ICYgKERF
Vl9CU0laRSAtIDEpKTsKKwkJZHAtPmRfcmVjbGVuICs9IGxlZnQ7CisJCW9jbnQgKz0gbGVmdDsK
Kwl9CisJcmV0dXJuIChvY250KTsKK30KKworLyoKICAqIFNldCB0aGUgbW9kZSBtYXNrIGZvciBj
cmVhdGlvbiBvZiBmaWxlc3lzdGVtIG5vZGVzLgogICovCiAjaWZuZGVmIF9TWVNfU1lTUFJPVE9f
SF8K
------=_Part_4538832_801680899.1416539954793--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?539201047.4538834.1416539954794.JavaMail.root>