[PVFS-users] PVFS 1.6.2 bugfix patch

Rob Ross rross@mcs.anl.gov
Thu, 29 Jan 2004 20:50:16 -0600 (CST)


  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.

---578009845-1078231104-1075431016=:20187
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi all,

I've attached a patch that fixes the majority of the bugs we have found so 
far in 1.6.2.  Mostly these are fixes for features recently added.  All of 
this is in CVS, but this set should not change the protocol or metadata 
formats (which CVS does), making it well-suited for production use.

We highly suggest that users apply this patch.  I expect to make it 
available on the FTP site as well.

Regards,

PVFS Team

---578009845-1078231104-1075431016=:20187
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="pvfs-1.6.2-01292004.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0401292050160.20187@harley.mcs.anl.gov>
Content-Description: 
Content-Disposition: attachment; filename="pvfs-1.6.2-01292004.patch"

LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpQYXRjaFNldCA2NTQgDQpEYXRlOiAy
MDA0LzAxLzA3IDIwOjI3OjM4DQpBdXRob3I6IHBjYXJucw0KQnJhbmNoOiBI
RUFEDQpUYWc6IChub25lKSANCkxvZzoNCmZpeGVkIGZsYXcgaW4gZXJyb3Ig
cmVwb3J0aW5nLCBzcG90dGVkIGJ5IEFsZXhhbmRyIEtvbm92YWxvdg0KPGF2
a29uQGltbS51cmFuLnJ1Pg0KDQpNZW1iZXJzOiANCglpb2Qvam9icy5jOjEu
NDQtPjEuNDUgDQoNCkluZGV4OiBwdmZzL2lvZC9qb2JzLmMNCmRpZmYgLXUg
cHZmcy9pb2Qvam9icy5jOjEuNDQgcHZmcy9pb2Qvam9icy5jOjEuNDUNCi0t
LSBwdmZzL2lvZC9qb2JzLmM6MS40NAlXZWQgTm92IDEyIDExOjExOjU3IDIw
MDMNCisrKyBwdmZzL2lvZC9qb2JzLmMJV2VkIEphbiAgNyAxNToyNzozOCAy
MDA0DQpAQCAtMzgzLDcgKzM4Myw3IEBADQogCQkJCQlpZiAoIWpfcCB8fCBh
bGlzdF9lbXB0eShqX3AtPmFsX3ApKSAvKiB0aGF0J3MgdGhlIGVuZCBvZiB0
aGlzIGpvYiAqLyB7DQogCQkJCQkJTE9HKCJkb19qb2I6IGZpbmlzaGVkIGpv
YiAtIHJlbW92aW5nIGl0XG4iKTsNCiAJCQkJCQlpZiAoal9yZW0oam9ic19w
LCBzb2NrKSA8IDApIHsNCi0JCQkJCQkJUEVSUk9SKCJkb19qb2I6IGpfcmVt
Iik7DQorCQkJCQkJCUVSUigiZG9fam9iOiBqX3JlbSBmYWlsdXJlIik7DQog
CQkJCQkJfQkNCiAJCQkJCQlyZXR1cm4oMCk7DQogCQkJCQl9DQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0NClBhdGNoU2V0IDY1NyANCkRhdGU6IDIwMDQvMDEv
MTUgMTM6MDA6MDYNCkF1dGhvcjogcmJyb3NzDQpCcmFuY2g6IEhFQUQNClRh
ZzogKG5vbmUpIA0KTG9nOg0KZml4IGJ1ZyBpbiBwdmZzX29wZW4uYyB3aGVy
ZSBwY291bnQgb2YgbGVzcyB0aGFuIHplcm8gd291bGQgY2F1c2UgYmFkIG1h
dGguDQoNCk1lbWJlcnM6IA0KCWxpYi9wdmZzX29wZW4uYzoxLjI5LT4xLjMw
IA0KDQpJbmRleDogcHZmcy9saWIvcHZmc19vcGVuLmMNCmRpZmYgLXUgcHZm
cy9saWIvcHZmc19vcGVuLmM6MS4yOSBwdmZzL2xpYi9wdmZzX29wZW4uYzox
LjMwDQotLS0gcHZmcy9saWIvcHZmc19vcGVuLmM6MS4yOQlUaHUgT2N0IDIz
IDE0OjA2OjQzIDIwMDMNCisrKyBwdmZzL2xpYi9wdmZzX29wZW4uYwlUaHUg
SmFuIDE1IDA4OjAwOjA2IDIwMDQNCkBAIC0yMjMsNiArMjIzLDcgQEANCiAJ
aWYgKGZsYWcgJiBPX01FVEEpIHsNCiAJCXJlcS5yZXEub3Blbi5tZXRhLnBf
c3RhdC5iYXNlID0gbWV0YV9wLT5iYXNlOw0KIAkJbmlvZHNlcnZlcnMgPSBy
ZXEucmVxLm9wZW4ubWV0YS5wX3N0YXQucGNvdW50ID0gbWV0YV9wLT5wY291
bnQ7DQorCQlpZiAobmlvZHNlcnZlcnMgPCAwKSBuaW9kc2VydmVycyA9IDA7
IC8qIHBjb3VudCA8IDAgaW5wdXQgaXMgdmFsaWQgKi8NCiAJCXJlcS5yZXEu
b3Blbi5tZXRhLnBfc3RhdC5zc2l6ZSA9IG1ldGFfcC0+c3NpemU7DQogCX0N
CiAJZWxzZSB7DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0NClBhdGNoU2V0IDY1
OCANCkRhdGU6IDIwMDQvMDEvMTUgMTQ6NDA6NTkNCkF1dGhvcjogcmJyb3Nz
DQpCcmFuY2g6IEhFQUQNClRhZzogKG5vbmUpIA0KTG9nOg0KQWRkZWQgRG9u
IFBvcnRlcidzIDEyLzI0LzIwMDMgcGF0Y2ggdG8gcmVkdWNlIGNvZGUgaW4g
bWdyLmMgYnkgcmVtb3ZpbmcgZG9fbHN0YXQoKS4NCg0KTWVtYmVyczogDQoJ
bWdyL21nci5jOjEuODctPjEuODggDQoNCkluZGV4OiBwdmZzL21nci9tZ3Iu
Yw0KZGlmZiAtdSBwdmZzL21nci9tZ3IuYzoxLjg3IHB2ZnMvbWdyL21nci5j
OjEuODgNCi0tLSBwdmZzL21nci9tZ3IuYzoxLjg3CU1vbiBOb3YgMjQgMjA6
NTE6NDMgMjAwMw0KKysrIHB2ZnMvbWdyL21nci5jCVRodSBKYW4gMTUgMDk6
NDA6NTkgMjAwNA0KQEAgLTY5LDcgKzY5LDcgQEANCiAJZG9fY2htb2QsDQog
CWRvX2Nob3duLA0KIAlkb19jbG9zZSwNCi0JZG9fbHN0YXQsDQorCWRvX3N0
YXQsIC8qcmVhbGx5IHRoaXMgaXMgZG9fbHN0YXQqLw0KIAlkb19ub29wLA0K
IAlkb19vcGVuLA0KIAlkb191bmxpbmssDQpAQCAtNzk5LDEwNyArNzk5LDkg
QEANCiAJcmV0dXJuKGRvX3N0YXQoc29jaywgJmZha2VyZXEsIGZfcC0+Zl9u
YW1lLCBhY2tfcCkpOw0KIH0gLyogZW5kIG9mIGRvX2ZzdGF0KCkgKi8NCiAN
Ci1pbnQgZG9fbHN0YXQoaW50IHNvY2ssIG1yZXFfcCByZXFfcCwgdm9pZCAq
ZGF0YV9wLCBtYWNrX3AgYWNrX3ApIHsNCi0JaW50IHJldCwgaTsNCi0JZnNp
bmZvX3AgZnNfcDsNCi0JaXJlcSBpb2RyZXE7DQotDQotCS8qIHZhcmlhYmxl
cyB1c2VkIGZvciBjYWxjdWxhdGluZyBjb3JyZWN0IGZpbGUgc2l6ZSAqLw0K
LQl1aW50NjRfdCByZWFsX2ZpbGVfc3osIHRtcF9maWxlX3N6LCBpb2RfZmls
ZV9zejsNCi0JdWludDY0X3Qgc3RyaXBfc3osIHN0cmlwZV9zeiwgbnJfc3Ry
aXBzLCBsZWZ0b3ZlcnM7DQotDQotCS8qIGNoZWNrIGZvciByZXNlcnZlZCBu
YW1lIGZpcnN0ICovDQotCWlmIChyZXN2X25hbWUoZGF0YV9wKSAhPSAwKSB7
DQotCQlhY2tfcC0+c3RhdHVzID0gLTE7DQotCQlhY2tfcC0+ZW5vID0gRU5P
RU5UOw0KLQkJcmV0dXJuKHNlbmRfZXJyb3IoLTEsIGVycm5vLCBzb2NrLCBh
Y2tfcCkpOw0KLQl9DQotDQotCWlmICgoZnNfcCA9IHF1aWNrX21vdW50KGRh
dGFfcCwgcmVxX3AtPnVpZCwgcmVxX3AtPmdpZCwgYWNrX3ApKSA9PSBOVUxM
KQ0KLQl7DQotCQlyZXR1cm4oc2VuZF9lcnJvcigtMSwgZXJybm8sIHNvY2ss
IGFja19wKSk7DQotCX0JDQotDQotCS8qIFdlIGRvbnQgYWxsb3cgYSBsc3Rh
dCB0byBmb2xsb3cgYSBzeW1ib2xpYyBsaW5rICovDQotCWlmICgocmV0ID0g
bWRfc3RhdChkYXRhX3AsIHJlcV9wLCAmKGFja19wLT5hY2suc3RhdC5tZXRh
KSwgTk9GT0xMT1dfTElOSykpICE9IDApIHsNCi0JCXJldHVybihzZW5kX2Vy
cm9yKHJldCwgZXJybm8sIHNvY2ssIGFja19wKSk7DQotCX0NCi0NCi0JLyog
aWYgcmVndWxhciBmaWxlLCBnZXQgc2l6ZSBmcm9tIGlvZHMgKi8NCi0JaWYg
KFNfSVNSRUcoYWNrX3AtPmFjay5zdGF0Lm1ldGEudV9zdGF0LnN0X21vZGUp
KSB7DQotCQlpb2RyZXEubWFqaWtfbnIgICAgICAgPSBJT0RfTUFKSUtfTlI7
DQotCQlpb2RyZXEucmVsZWFzZV9uciAgICAgPSBQVkZTX1JFTEVBU0VfTlI7
DQotCQlpb2RyZXEudHlwZSAJCQkgPSBJT0RfU1RBVDsNCi0JCWlvZHJlcS5k
c2l6ZSAJCQkgPSAwOw0KLQkJaW9kcmVxLnJlcS5zdGF0LmZfaW5vID0gYWNr
X3AtPmFjay5zdGF0Lm1ldGEudV9zdGF0LnN0X2lubzsNCi0JCWlmICgocmV0
ID0gc2VuZF9yZXEoZnNfcC0+aW9kLCBmc19wLT5ucl9pb2RzLCANCi0JCQlh
Y2tfcC0+YWNrLnN0YXQubWV0YS5wX3N0YXQuYmFzZSwgYWNrX3AtPmFjay5z
dGF0Lm1ldGEucF9zdGF0LnBjb3VudCwgDQotCQkJJmlvZHJlcSwgZGF0YV9w
LCBOVUxMKSkgPCAwKQ0KLQkJew0KLQkJCXJldHVybihzZW5kX2Vycm9yKHJl
dCwgZXJybm8sIHNvY2ssIGFja19wKSk7DQotCQl9CQ0KLQ0KLQkJc3RyaXBf
c3ogPSBhY2tfcC0+YWNrLnN0YXQubWV0YS5wX3N0YXQuc3NpemU7DQotCQlz
dHJpcGVfc3ogPSBhY2tfcC0+YWNrLnN0YXQubWV0YS5wX3N0YXQuc3NpemUg
KiANCi0JCQkJCQlhY2tfcC0+YWNrLnN0YXQubWV0YS5wX3N0YXQucGNvdW50
Ow0KLQkJcmVhbF9maWxlX3N6ID0gMDsNCi0NCi0JCWZvciAoaSA9IDA7IGkg
PCBhY2tfcC0+YWNrLnN0YXQubWV0YS5wX3N0YXQucGNvdW50OyBpKyspIHsN
Ci0JCQkvKiBpIGdpdmVzIHVzIHRoZSBpbmRleCBpbnRvIHRoZSBpb2RzLCB0
aGUgaXRoIGlvZCBpbiBvcmRlciAqLw0KLQkJCWlvZF9maWxlX3N6ID0gZnNf
cC0+aW9kWyhpICsgYWNrX3AtPmFjay5zdGF0Lm1ldGEucF9zdGF0LmJhc2Up
ICUNCi0JCQkgICAgICAgICAgICAgIGZzX3AtPm5yX2lvZHNdLmFjay5hY2su
c3RhdC5mc2l6ZTsNCi0JCQlpZiAoaW9kX2ZpbGVfc3ogPT0gMCkgY29udGlu
dWU7DQotDQotCQkJLyogdGhlIHBsYW4gaXMgdG8gY2FsY3VsYXRlIHRoZSBm
aWxlIHNpemUgYmFzZWQgb24gd2hhdA0KLQkJCSAqIHRoaXMgcGFydGljdWxh
ciBpb2QgaGFzLiAgdGhlIGxhcmdlc3Qgb2YgdGhlc2Ugc2l6ZXMNCi0JCQkg
KiBpcyB0aGUgYWN0dWFsIGZpbGUgc2l6ZSwgdGFraW5nIGludG8gYWNjb3Vu
dCBzcGFyc2UNCi0JCQkgKiBpc3N1ZXMuDQotCQkJICoNCi0JCQkgKiB0aGVy
ZSBhcmUgZm91ciBjb21wb25lbnRzIHRvIHRoZSBjYWxjdWxhdGlvbjoNCi0J
CQkgKg0KLQkJCSAqIHNvZmYgPSBzaG91bGQgYmUgMCBzaW5jZSBpdCBpc24n
dCBpbXBsZW1lbnRlZCA6KQ0KLQkJCSAqDQotCQkJICogbnJfc3RyaXBzICog
c3RyaXBlX3N6ID0gdGhpcyBpcyBhIGNhbGN1bGF0aW9uIG9mIGhvdyBtYW55
DQotCQkJICogICBjb21wbGV0ZSBzdHJpcGVzIGFyZSBwcmVzZW50LiAgbm90
ZSB0aGF0IGFueSBwYXJ0aWFsIHN0cmlwDQotCQkJICogICBvciB0aGUgbGFz
dCBjb21wbGV0ZSBzdHJpcCAoaWYgdGhlcmUgYXJlIG5vIHBhcnRpYWxzKQ0K
LQkJCSAqICAgbWF5IG5vdCBiZSBwYXJ0IG9mIGEgd2hvbGUgc3RyaXBlICh0
aHVzIHRoZSBpZigpIGJlbG93KS4NCi0JCQkgKg0KLQkJCSAqIGkgKiBzdHJp
cF9zeiA9IHRoaXMgYWNjb3VudHMgZm9yIGZ1bGwgc3RyaXBzIHRoYXQgc2hv
dWxkIGJlDQotCQkJICogICBwcmVzZW50IG9uIGlvZHMgdGhhdCBjb21lIGJl
Zm9yZSB1cyBpbiB0aGUgaW9kIG9yZGVyaW5nDQotCQkJICoNCi0JCQkgKiBs
ZWZ0b3ZlcnMgPSB0aGUgbGFzdCByZW1haW5pbmcgYnl0ZXMNCi0JCQkgKi8N
Ci0JCQlucl9zdHJpcHMgPSBpb2RfZmlsZV9zeiAvIHN0cmlwX3N6Ow0KLQkJ
CWxlZnRvdmVycyA9IGlvZF9maWxlX3N6ICUgc3RyaXBfc3o7DQotCQkJDQot
CQkJaWYgKGxlZnRvdmVycyA9PSAwKSB7DQotCQkJCW5yX3N0cmlwcy0tOw0K
LQkJCQlsZWZ0b3ZlcnMgKz0gc3RyaXBfc3o7DQotCQkJfQ0KLQkJCXRtcF9m
aWxlX3N6ID0gbnJfc3RyaXBzICogc3RyaXBlX3N6ICsgaSAqIHN0cmlwX3N6
ICsNCi0JCQkJCQkJICBsZWZ0b3ZlcnM7DQotCQkJaWYgKHRtcF9maWxlX3N6
ID4gcmVhbF9maWxlX3N6KSByZWFsX2ZpbGVfc3ogPSB0bXBfZmlsZV9zejsN
Ci0JCX0NCi0NCi0JCS8qIHdlJ3JlIGFkZGluZyBhIDY0LWJpdCBzaXplIGZp
ZWxkIGluIGFkZGl0aW9uIHRvIHRoZSBzdF9zaXplIA0KLQkJICogbGF0ZXIg
aSdsbCByZW1vdmUgdGhlIGFkZGl0aW9uIGludG8gc3Rfc2l6ZSBwcm9iYWJs
eQ0KLQkJICogaSdtIGxlYXZpbmcgaXQgZm9yIG5vdw0KLQkJICovDQotCQlh
Y2tfcC0+YWNrLnN0YXQubWV0YS51X3N0YXQuc3Rfc2l6ZSA9IHJlYWxfZmls
ZV9zejsNCi0JCWFja19wLT5hY2suc3RhdC5tZXRhLmZzaXplID0gcmVhbF9m
aWxlX3N6Ow0KLQl9DQotCWVsc2UgaWYoU19JU0xOSyhhY2tfcC0+YWNrLnN0
YXQubWV0YS51X3N0YXQuc3RfbW9kZSkpIHsNCi0JCS8qIGZpbGwgdXAgdGhl
IHNpemUgb2YgdGhlIGxpbmsgZmlsZSBoZXJlICovDQotCQlhY2tfcC0+YWNr
LnN0YXQubWV0YS5mc2l6ZSA9IGFja19wLT5hY2suc3RhdC5tZXRhLnVfc3Rh
dC5zdF9zaXplOw0KLQl9DQotDQotCWlmICghYWNrX3AtPnN0YXR1cykgcmV0
dXJuKGJzZW5kKHNvY2ssIGFja19wLCBzaXplb2YobWFjaykpKTsNCi0JZWxz
ZSBzZW5kX2Vycm9yKC0xLCBhY2tfcC0+ZW5vLCBzb2NrLCBhY2tfcCk7DQot
DQotCWlmICghZXJybm8pIGVycm5vID0gYWNrX3AtPmVubzsgLyogcmV0dXJu
IHRoZSBvbGQgZXJyb3IgKi8NCi0JcmV0dXJuKC0xKTsNCi19IC8qIGVuZCBv
ZiBkb19sc3RhdCgpICovDQotDQorLyogZG9fc3RhdCgpIC0gYWxzbyBmaWxs
cyBpbiBmb3IgZG9fbHN0YXQuICB0aGlzIGlzIGRvbmUgYnkgY2hlY2tpbmcN
CisgKiB0aGUgcmVxdWVzdCB0eXBlOyBzZWUgYmVsb3cuDQorICovDQogaW50
IGRvX3N0YXQoaW50IHNvY2ssIG1yZXFfcCByZXFfcCwgdm9pZCAqZGF0YV9w
LCBtYWNrX3AgYWNrX3ApIHsNCiAJaW50IHJldCwgaTsNCiAJZnNpbmZvX3Ag
ZnNfcDsNCkBAIC05MjIsNyArODI0LDcgQEANCiAJfQkNCiANCiAJLyogV2Ug
YWxsb3cgYSBzdGF0IHRvIGZvbGxvdyBhIHN5bWJvbGljIGxpbmsgKi8NCi0J
aWYgKChyZXQgPSBtZF9zdGF0KGRhdGFfcCwgcmVxX3AsICYoYWNrX3AtPmFj
ay5zdGF0Lm1ldGEpLCBGT0xMT1dfTElOSykpICE9IDApIHsNCisJaWYgKChy
ZXQgPSBtZF9zdGF0KGRhdGFfcCwgcmVxX3AsICYoYWNrX3AtPmFjay5zdGF0
Lm1ldGEpLCByZXFfcC0+dHlwZSA9PSBNR1JfTFNUQVQgPyBOT0ZPTExPV19M
SU5LIDpGT0xMT1dfTElOSykpICE9IDApIHsNCiAJCXJldHVybihzZW5kX2Vy
cm9yKHJldCwgZXJybm8sIHNvY2ssIGFja19wKSk7DQogCX0NCiANCkBAIC0x
MDIwLDYgKzkyMiwxMSBAQA0KIAkJCQkJfQ0KIAkJCQl9DQogI2VuZGlmDQor
CQkJfQ0KKwkJCWVsc2UgaWYoU19JU0xOSyhhY2tfcC0+YWNrLnN0YXQubWV0
YS51X3N0YXQuc3RfbW9kZSkgJiYgcmVxX3AtPnR5cGUgPT0gTUdSX0xTVEFU
KSB7DQorCQkJCS8qIGZpbGwgdXAgdGhlIHNpemUgb2YgdGhlIGxpbmsgZmls
ZSBoZXJlICovDQorCQkJCS8qaXMgdGhpcyBldmVuIG5lY2Vzc2FyeT8/PyAq
Lw0KKwkJCQlhY2tfcC0+YWNrLnN0YXQubWV0YS5mc2l6ZSA9IGFja19wLT5h
Y2suc3RhdC5tZXRhLnVfc3RhdC5zdF9zaXplOw0KIAkJCX0NCiAjaWZkZWYg
TUdSX1VTRV9DQUNIRURfRklMRV9TSVpFDQogCQl9IC8qIGlmIG9wZW4gb3Ig
emVyby4uLiAqLw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpQYXRjaFNldCA2
NTkgDQpEYXRlOiAyMDA0LzAxLzE1IDE0OjQ3OjA3DQpBdXRob3I6IHJicm9z
cw0KQnJhbmNoOiBIRUFEDQpUYWc6IChub25lKSANCkxvZzoNCkFwcGxpZWQg
RG9uIFBvcnRlcidzIGVubyBwYXRjaC4NCg0KTWVtYmVyczogDQoJbWdyL21n
ci5jOjEuODgtPjEuODkgDQoNCkluZGV4OiBwdmZzL21nci9tZ3IuYw0KZGlm
ZiAtdSBwdmZzL21nci9tZ3IuYzoxLjg4IHB2ZnMvbWdyL21nci5jOjEuODkN
Ci0tLSBwdmZzL21nci9tZ3IuYzoxLjg4CVRodSBKYW4gMTUgMDk6NDA6NTkg
MjAwNA0KKysrIHB2ZnMvbWdyL21nci5jCVRodSBKYW4gMTUgMDk6NDc6MDcg
MjAwNA0KQEAgLTMyMCw2ICszMjAsNyBAQA0KIAkJCWFjay50eXBlICAgICAg
ID0gcmVxLnR5cGU7IC8qIGV2ZXJ5dGhpbmcgZWxzZSBpcyBmaWxsZWQgaW4g
aW4gcmVxZm4oKSAqLw0KIAkJCWFjay5zdGF0dXMgICAgID0gMDsNCiAJCQlh
Y2suZHNpemUgICAgICA9IDA7DQorCQkJYWNrLmVubyAgICAgICAgPSAwOw0K
IAkJCUxPRzIoInJlcTogJXMgb24gJWRcbiIsIHJlcXRleHRbcmVxLnR5cGVd
LCBzb2NrKTsNCiAJCQlyZXQgPSAocmVxZm5bcmVxLnR5cGVdKShzb2NrLCAm
cmVxLCBidWZfcCwgJmFjayk7IC8qIGhhbmRsZSByZXF1ZXN0ICovDQogCQkJ
Y29udGludWU7DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0NClBhdGNoU2V0IDY2
MCANCkRhdGU6IDIwMDQvMDEvMTUgMTQ6NDk6NTANCkF1dGhvcjogcmJyb3Nz
DQpCcmFuY2g6IEhFQUQNClRhZzogKG5vbmUpIA0KTG9nOg0KQXBwbGllZCBE
b24gUG9ydGVyJ3MgY29ycmVjdGlvbiB0byBrZWVwIGNvcnJlY3QgY2FjaGVk
IGZpbGUgc2l6ZSBvbiB0cnVuY2F0ZSwgcGx1cyBwZXJtaXNzaW9uIGNoZWNr
Lg0KDQpNZW1iZXJzOiANCgltZ3IvbWdyLmM6MS44OS0+MS45MCANCg0KSW5k
ZXg6IHB2ZnMvbWdyL21nci5jDQpkaWZmIC11IHB2ZnMvbWdyL21nci5jOjEu
ODkgcHZmcy9tZ3IvbWdyLmM6MS45MA0KLS0tIHB2ZnMvbWdyL21nci5jOjEu
ODkJVGh1IEphbiAxNSAwOTo0NzowNyAyMDA0DQorKysgcHZmcy9tZ3IvbWdy
LmMJVGh1IEphbiAxNSAwOTo0OTo1MCAyMDA0DQpAQCAtNTM5LDEzICs1Mzks
MTIgQEANCiAJLyogZ2V0IG1ldGFkYXRhLCBjaGVjayBwZXJtaXNzaW9uIHRv
IHdyaXRlIHRvIGZpbGUgKi8NCiAJaWYgKChmZCA9IG1ldGFfb3BlbihkYXRh
X3AsIE9fUkRPTkxZKSkgPCAwDQogCXx8IChtZXRhX3JlYWQoZmQsICZtZXRh
KSA8IDApDQorICAgfHwgKChtZXRhX2FjY2VzcyhmZCwgZGF0YV9wLCByZXFf
cC0+dWlkLCByZXFfcC0+Z2lkLCBXX09LKSkgPCAwKQ0KIAl8fCAobWV0YV9j
bG9zZShmZCkgPCAwKSkNCiAJew0KIAkJcmV0dXJuKHNlbmRfZXJyb3IoLTEs
IGVycm5vLCBzb2NrLCBhY2tfcCkpOw0KIAl9DQogDQotCS8qIGZvciB0aGUg
bW9tZW50IHBlcm1pc3Npb25zIGFyZW4ndCBjaGVja2VkLi4uICovDQotDQog
CS8qIGJ1aWxkIHJlcXVlc3QgZm9yIGlvZHMsIHNlbmQgaXQgKi8NCiAJbWVt
c2V0KCZpb2RyZXEsIDAsIHNpemVvZihpb2RyZXEpKTsNCiAJaW9kcmVxLm1h
amlrX25yID0gSU9EX01BSklLX05SOw0KQEAgLTU2Miw2ICs1NjEsMjEgQEAN
CiAJew0KIAkJcmV0dXJuKHNlbmRfZXJyb3IocmV0LCBlcnJubywgc29jaywg
YWNrX3ApKTsNCiAJfQkNCisNCisjaWZkZWYgRkFTVF9TVEFUUw0KKwltZXRh
LnVfc3RhdC5zdF9zaXplID0gcmVxX3AtPnJlcS50cnVuY2F0ZS5sZW5ndGg7
DQorCW1ldGEuZnNpemUgPSByZXFfcC0+cmVxLnRydW5jYXRlLmxlbmd0aDsN
CisNCisJLyogd3JpdGUgbWV0YWRhdGEqLw0KKwlpZiAoKGZkID0gbWV0YV9v
cGVuKGRhdGFfcCwgT19SRE9OTFkpKSA8IDANCisJfHwgKG1ldGFfd3JpdGUo
ZmQsICZtZXRhKSA8IDApDQorCXx8IChtZXRhX2Nsb3NlKGZkKSA8IDApKQ0K
Kwl7DQorCQlyZXR1cm4oc2VuZF9lcnJvcigtMSwgZXJybm8sIHNvY2ssIGFj
a19wKSk7DQorCX0NCisJDQorI2VuZGlmDQorDQogCWlmIChzb2NrID49IDAp
IC8qIHJlYWwgc29ja2V0IG51bWJlciwgc2VuZCB0aGUgYWNrICovIHsNCiAJ
CXJldCA9IGJzZW5kKHNvY2ssIGFja19wLCBzaXplb2YobWFjaykpOw0KIAkJ
aWYgKHJldCA8IDApIHJldHVybigtMSk7DQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0NClBhdGNoU2V0IDY2MSANCkRhdGU6IDIwMDQvMDEvMTUgMTQ6NTg6MjEN
CkF1dGhvcjogcGNhcm5zDQpCcmFuY2g6IEhFQUQNClRhZzogKG5vbmUpIA0K
TG9nOg0KcmVtb3ZlZCB0aGUgdXNlIG9mIGJ2cmVjdigpIHRvIHB1bGwgaW4g
Ym90aCB0aGUgYWNrIGFuZCB0cmFpbGluZyBkYXRhIGZyb20NCnRoZSBtZ3Ig
YXQgdGhlIHNhbWUgdGltZSwgYW5kIGJyb2tlIGludG8gdHdvIHNlcGVyYXRl
IGJyZWN2KCkgY2FsbHMuICBUaGlzDQpnaXZlcyB1cyB0aGUgY2hhbmNlIHRv
IGNoZWNrIHRoZSBhY2sgc3RhdHVzIGJlZm9yZSBjb21taXRpbmcgdG8gdHJ5
aW5nDQp0byBncmFiIG1vcmUgZGF0YSBvdXQgb2YgdGhlIHNvY2tldA0KDQpN
ZW1iZXJzOiANCglsaWIvbWdyY29tbS5jOjEuMjMtPjEuMjQgDQoNCkluZGV4
OiBwdmZzL2xpYi9tZ3Jjb21tLmMNCmRpZmYgLXUgcHZmcy9saWIvbWdyY29t
bS5jOjEuMjMgcHZmcy9saWIvbWdyY29tbS5jOjEuMjQNCi0tLSBwdmZzL2xp
Yi9tZ3Jjb21tLmM6MS4yMwlXZWQgT2N0IDIyIDA3OjE3OjQ2IDIwMDMNCisr
KyBwdmZzL2xpYi9tZ3Jjb21tLmMJVGh1IEphbiAxNSAwOTo1ODoyMSAyMDA0
DQpAQCAtMTc1LDU1ICsxNzUsMjIgQEANCiAJCQlyZXR1cm4oLTEpOw0KIAkJ
fQ0KIAl9DQotCS8qIERvIHRoaW5ncyBkaWZmZXJlbnRseSBpZiBpdCBpcyBh
IG9wZW4gcmVxdWVzdCB3aXRoIGFja2RzaXplICE9IDAgKi8NCi0JaWYocmVx
X3AtPnR5cGUgPT0gTUdSX09QRU4NCi0JCQkmJiAoYWNrZHNpemUgPSByZXFf
cC0+cmVxLm9wZW4uYWNrZHNpemUpICE9IDApIHsNCi0JCWludCBidnJlY3Zy
ZXQgPSAwOw0KLQkJaWYocmVjdl9wID09IE5VTEwpIHsNCi0JCQljbG9zZShm
ZCk7DQotCQkJaWYgKCFuZXdjb25uKSB7DQotCQkJCWJhZG1ncmZkKGZkKTsN
Ci0JCQkJZ290byBtYWtlX25ld19jb25uOyAvKiB0cnkgdG8gcmVvcGVuIGNv
bm5lY3Rpb24gKi8NCi0JCQl9DQotCQkJZXJybm8gPSBFRkFVTFQ7DQotCQkJ
UEVSUk9SKCJzZW5kX21yZXFfc2FkZHIgKHJlY2VpdmluZyBhY2sgd2l0aCBi
dnJlY3YpIik7DQotCQkJcmV0dXJuIC0xOw0KLQkJfQ0KLQkJLyogcmVjdiBh
Y2sgYW5kIHRyYWlsaW5nIGRhdGEgd2l0aCBhIHNpbmdsZSBjYWxsICovDQot
CQl2ZWNbMF0uaW92X2Jhc2UgPSBhY2tfcDsNCi0JCXZlY1swXS5pb3ZfbGVu
ID0gc2l6ZW9mKG1hY2spOw0KLQkJdmVjWzFdLmlvdl9iYXNlID0gcmVjdl9w
Ow0KLQkJdmVjWzFdLmlvdl9sZW4gPSBhY2tkc2l6ZTsNCi0JCWJ2cmVjdnJl
dCA9IGJ2cmVjdihmZCwgdmVjLCAyKTsNCi0JCWlmKGJ2cmVjdnJldCA8IChz
aXplb2YobWFjaykgKyBhY2tkc2l6ZSkpIHsNCi0JCQllcnIgPSBlcnJubzsN
Ci0JCQlQRVJST1IoInNlbmRfbXJlcV9zYWRkciAocmVjZWl2aW5nIGFjayB3
aXRoIGJ2cmVjdikiKTsNCi0JCQljbG9zZShmZCk7DQotCQkJaWYgKCFuZXdj
b25uKSB7DQotCQkJCWJhZG1ncmZkKGZkKTsNCi0JCQkJZ290byBtYWtlX25l
d19jb25uOyAvKiB0cnkgdG8gcmVvcGVuIGNvbm5lY3Rpb24gKi8NCi0JCQl9
DQotCQkJZXJybm8gPSBlcnI7DQotCQkJcmV0dXJuKC0xKTsNCi0JCX0NCi0J
fQ0KLQllbHNlIHsNCi0JCS8qIHJlY2VpdmUgYWNrLiAgR2l2ZSB1cCBpZiBp
dCBkb2VzIG5vdCBoYXBwZW4gaW4gcmVhc29uYWJsZSBhbW91bnQNCi0JCSAq
IG9mIHRpbWUuDQotCQkgKi8NCi0JCWlmKGJyZWN2X3RpbWVvdXQoZmQsIGFj
a19wLCBzaXplb2YobWFjayksIE1HUkNPTU1fQlJFQ1ZfVElNRU9VVF9TRUNT
KSANCi0JCQk8IChpbnQpc2l6ZW9mKG1hY2spKXsNCi0JCQllcnIgPSBlcnJu
bzsNCi0JCQlQRVJST1IoInNlbmRfbXJlcV9zYWRkciAocmVjZWl2aW5nIGFj
aykiKTsNCi0JCQljbG9zZShmZCk7DQotCQkJaWYoIW5ld2Nvbm4pew0KLQkJ
CQliYWRtZ3JmZChmZCk7DQotCQkJCWdvdG8gbWFrZV9uZXdfY29ubjsgLyog
dHJ5IHRvIHJlb3BlbiBjb25uZWN0aW9uICovDQotCQkJfQ0KLQkJCWVycm5v
ID0gZXJyOw0KLQkJCXJldHVybigtMSk7DQorCS8qIHJlY2VpdmUgYWNrLiAg
R2l2ZSB1cCBpZiBpdCBkb2VzIG5vdCBoYXBwZW4gaW4gcmVhc29uYWJsZSBh
bW91bnQNCisJICogb2YgdGltZS4NCisJICovDQorCWlmKGJyZWN2X3RpbWVv
dXQoZmQsIGFja19wLCBzaXplb2YobWFjayksIE1HUkNPTU1fQlJFQ1ZfVElN
RU9VVF9TRUNTKSANCisJCTwgKGludClzaXplb2YobWFjaykpew0KKwkJZXJy
ID0gZXJybm87DQorCQlQRVJST1IoInNlbmRfbXJlcV9zYWRkciAocmVjZWl2
aW5nIGFjaykiKTsNCisJCWNsb3NlKGZkKTsNCisJCWlmKCFuZXdjb25uKXsN
CisJCQliYWRtZ3JmZChmZCk7DQorCQkJZ290byBtYWtlX25ld19jb25uOyAv
KiB0cnkgdG8gcmVvcGVuIGNvbm5lY3Rpb24gKi8NCiAJCX0NCisJCWVycm5v
ID0gZXJyOw0KKwkJcmV0dXJuKC0xKTsNCiAJfQ0KKw0KIAlpZiAoYWNrX3At
Pm1hamlrX25yICE9IE1HUl9NQUpJS19OUikgLyogc2VyaW91cyBlcnJvciAt
LSBub25zZW5zZSBhY2sgKi8gew0KIAkJY2xvc2UoZmQpOw0KIAkJaWYgKCFu
ZXdjb25uKSBiYWRtZ3JmZChmZCk7DQpAQCAtMjUwLDYgKzIxNywzNSBAQA0K
IAkJZXJybm8gPSBhY2tfcC0+ZW5vOw0KIAkJcmV0dXJuKC0xKTsNCiAJfQ0K
KwkNCisJLyogaWYgYWNrZHNpemUgIT0gMCBvbiBhIE1HUl9PUEVOIHJlcXVl
c3QsIHRoZW4gaXQgaW5kaWNhdGVzIHRoYXQgd2UNCisJICogbmVlZCB0byBw
dWxsIGluIHNvbWUgdHJhaWxpbmcgZGF0YSBhcyB3ZWxsDQorCSAqLw0KKwlp
ZihyZXFfcC0+dHlwZSA9PSBNR1JfT1BFTg0KKwkJCSYmIChhY2tkc2l6ZSA9
IHJlcV9wLT5yZXEub3Blbi5hY2tkc2l6ZSkgIT0gMCkgew0KKwkJLyogbWFr
ZSBzdXJlIHRoYXQgd2Ugd2VyZSBnaXZlbiBhIGJ1ZmZlciBmb3IgdHJhaWxp
bmcgZGF0YSAqLw0KKwkJaWYocmVjdl9wID09IE5VTEwpIHsNCisJCQljbG9z
ZShmZCk7DQorCQkJZXJybm8gPSBFRkFVTFQ7DQorCQkJUEVSUk9SKCJzZW5k
X21yZXFfc2FkZHIgKHJlY2VpdmluZyBhY2sgd2l0aCBidnJlY3YpIik7DQor
CQkJcmV0dXJuIC0xOw0KKwkJfQ0KKwkJLyogcmVjdiB0cmFpbGluZyBkYXRh
LCB0aW1lb3V0IGlmIHdlIGRvbid0IGdldCBpdCBpbiB0aW1lICovDQorCQlp
ZihicmVjdl90aW1lb3V0KGZkLCByZWN2X3AsIGFja2RzaXplLCBNR1JDT01N
X0JSRUNWX1RJTUVPVVRfU0VDUykNCisJCQk8IGFja2RzaXplKQ0KKwkJew0K
KwkJCWVyciA9IGVycm5vOw0KKwkJCVBFUlJPUigic2VuZF9tcmVxX3NhZGRy
IChyZWNlaXZpbmcgdHJhaWxpbmcgZGF0YSB3aXRoIGJyZWN2KSIpOw0KKwkJ
CWNsb3NlKGZkKTsNCisJCQlpZiAoIW5ld2Nvbm4pIHsNCisJCQkJYmFkbWdy
ZmQoZmQpOw0KKwkJCQlnb3RvIG1ha2VfbmV3X2Nvbm47IC8qIHRyeSB0byBy
ZW9wZW4gY29ubmVjdGlvbiAqLw0KKwkJCX0NCisJCQllcnJubyA9IGVycjsN
CisJCQlyZXR1cm4oLTEpOw0KKwkJfQ0KKwl9DQorDQogCXJldHVybihmZCk7
DQogfSAvKiBlbmQgb2Ygc2VuZF9tcmVxX3NhZGRyKCkgKi8NCiANCg==
---578009845-1078231104-1075431016=:20187--