[PATCH] bio walking for 2.5.68-bk6

Bartlomiej Zolnierkiewicz (B.Zolnierkiewicz@elka.pw.edu.pl)
Sat, 26 Apr 2003 00:09:55 +0200 (MET DST)


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-13686-1051308682-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi,

I have updated and reworked bio traversal patch.

Main idea is now reversed - instead of introducing rq->hard_bio as
pointer for bio to be completed and using rq->bio as pointer for bio
to be submitted, rq->cbio is introduced for submissions and rq->bio
is used for completions.

This minimizes changes to block layer and assures that all existing
block users are not affected by this patch.

Please check it and forward to Linus, or tell what changes you
need to find this code acceptable.

--
Bartlomiej

--=_courier-13686-1051308682-0001-2 Content-Type: text/plain; charset=us-ascii; name="bio_walking-b0.diff" Content-Transfer-Encoding: base64 Content-ID: <Pine.SOL.4.30.0304260009550.21393@mion.elka.pw.edu.pl> Content-Description: Content-Disposition: attachment; filename="bio_walking-b0.diff"

IyBiaW8gd2Fsa2luZyAoc2VwYXJhdGUgc3VibWl0dGlvbiAvIGNvbXBsZXRp b24gYmlvIHBvaW50ZXJzKS4NCiMNCiMgT3JpZ2luYWxseSBieSBTdXBhcm5h IEJoYXR0YWNoYXJ5YS4NCiMNCiMgQmFydGxvbWllaiBab2xuaWVya2lld2lj eiA8YnpvbG5pZXJAZWxrYS5wdy5lZHUucGw+DQoNCmRpZmYgLXVOciBsaW51 eC0yLjUuNjgtYms2L2RyaXZlcnMvYmxvY2svbGxfcndfYmxrLmMgbGludXgv ZHJpdmVycy9ibG9jay9sbF9yd19ibGsuYw0KLS0tIGxpbnV4LTIuNS42OC1i azYvZHJpdmVycy9ibG9jay9sbF9yd19ibGsuYwlGcmkgQXByIDI1IDE2OjA4 OjUyIDIwMDMNCisrKyBsaW51eC9kcml2ZXJzL2Jsb2NrL2xsX3J3X2Jsay5j CUZyaSBBcHIgMjUgMjI6MDA6MTggMjAwMw0KQEAgLTE2ODQsNyArMTY4NCw4 IEBADQogDQogCXNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOw0KIAlucl9zZWN0 b3JzID0gYmlvX3NlY3RvcnMoYmlvKTsNCi0JY3VyX25yX3NlY3RvcnMgPSBi aW9faW92ZWMoYmlvKS0+YnZfbGVuID4+IDk7DQorCWN1cl9ucl9zZWN0b3Jz ID0gYmlvX2N1cl9zZWN0b3JzKGJpbyk7DQorDQogCXJ3ID0gYmlvX2RhdGFf ZGlyKGJpbyk7DQogDQogCS8qDQpAQCAtMTc0MCw3ICsxNzQxLDEwIEBADQog CQkJfQ0KIA0KIAkJCWJpby0+YmlfbmV4dCA9IHJlcS0+YmlvOw0KLQkJCXJl cS0+YmlvID0gYmlvOw0KKwkJCXJlcS0+Y2JpbyA9IHJlcS0+YmlvID0gYmlv Ow0KKwkJCXJlcS0+bnJfY2Jpb19zZWdtZW50cyA9IGJpb19zZWdtZW50cyhi aW8pOw0KKwkJCXJlcS0+bnJfY2Jpb19zZWN0b3JzID0gYmlvX3NlY3RvcnMo YmlvKTsNCisNCiAJCQkvKg0KIAkJCSAqIG1heSBub3QgYmUgdmFsaWQuIGlm IHRoZSBsb3cgbGV2ZWwgZHJpdmVyIHNhaWQNCiAJCQkgKiBpdCBkaWRuJ3Qg bmVlZCBhIGJvdW5jZSBidWZmZXIgdGhlbiBpdCBiZXR0ZXINCkBAIC0xODA4 LDkgKzE4MTIsMTEgQEANCiAJcmVxLT5jdXJyZW50X25yX3NlY3RvcnMgPSBy ZXEtPmhhcmRfY3VyX3NlY3RvcnMgPSBjdXJfbnJfc2VjdG9yczsNCiAJcmVx LT5ucl9waHlzX3NlZ21lbnRzID0gYmlvX3BoeXNfc2VnbWVudHMocSwgYmlv KTsNCiAJcmVxLT5ucl9od19zZWdtZW50cyA9IGJpb19od19zZWdtZW50cyhx LCBiaW8pOw0KKwlyZXEtPm5yX2NiaW9fc2VnbWVudHMgPSBiaW9fc2VnbWVu dHMoYmlvKTsNCisJcmVxLT5ucl9jYmlvX3NlY3RvcnMgPSBiaW9fc2VjdG9y cyhiaW8pOw0KIAlyZXEtPmJ1ZmZlciA9IGJpb19kYXRhKGJpbyk7CS8qIHNl ZSAtPmJ1ZmZlciBjb21tZW50IGFib3ZlICovDQogCXJlcS0+d2FpdGluZyA9 IE5VTEw7DQotCXJlcS0+YmlvID0gcmVxLT5iaW90YWlsID0gYmlvOw0KKwly ZXEtPmNiaW8gPSByZXEtPmJpbyA9IHJlcS0+YmlvdGFpbCA9IGJpbzsNCiAJ cmVxLT5ycV9kaXNrID0gYmlvLT5iaV9iZGV2LT5iZF9kaXNrOw0KIAlyZXEt PnN0YXJ0X3RpbWUgPSBqaWZmaWVzOw0KIAlhZGRfcmVxdWVzdChxLCByZXEs IGluc2VydF9oZXJlKTsNCkBAIC0xOTgxLDYgKzE5ODcsODEgQEANCiAJcmV0 dXJuIDE7DQogfQ0KIA0KKy8qKg0KKyAqIGJsa19ycV9uZXh0X3NlZ21lbnQN CisgKiBAcnE6CQl0aGUgcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQNCisgKg0K KyAqIERlc2NyaXB0aW9uOg0KKyAqCVBvaW50cyB0byB0aGUgbmV4dCBzZWdt ZW50IGluIHRoZSByZXF1ZXN0IGlmIHRoZSBjdXJyZW50IHNlZ21lbnQNCisg KglpcyBjb21wbGV0ZS4gTGVhdmVzIHRoaW5ncyB1bmNoYW5nZWQgaWYgdGhp cyBzZWdtZW50IGlzIG5vdCBvdmVyDQorICoJb3IgaWYgbm8gbW9yZSBzZWdt ZW50cyBhcmUgbGVmdCBpbiB0aGlzIHJlcXVlc3QuDQorICoNCisgKglNZWFu dCB0byBiZSB1c2VkIGZvciBiaW8gdHJhdmVyc2FsIGR1cmluZyBJL08gc3Vi bWlzc2lvbg0KKyAqCURvZXMgbm90IGFmZmVjdCBhbnkgSS9PIGNvbXBsZXRp b25zIG9yIHVwZGF0ZSBjb21wbGV0aW9uIHN0YXRlDQorICoJaW4gdGhlIHJl cXVlc3QsIGFuZCBkb2VzIG5vdCBtb2RpZnkgYW55IGJpbyBmaWVsZHMuDQor ICoNCisgKglEZWNyZW1lbnRpbmcgcnEtPm5yX3NlY3RvcnMsIHJxLT5jdXJy ZW50X25yX3NlY3RvcnMgYW5kDQorICoJcnEtPm5yX2NiaW9fc2VjdG9ycyBh cyBkYXRhIGlzIHRyYW5zZmVycmVkIGlzIHRoZSBjYWxsZXIncw0KKyAqCXJl c3BvbnNpYmlsaXR5IGFuZCBzaG91bGQgYmUgZG9uZSBiZWZvcmUgY2FsbGlu ZyB0aGlzIHJvdXRpbmUuDQorICoqLw0KK3ZvaWQgYmxrX3JxX25leHRfc2Vn bWVudChzdHJ1Y3QgcmVxdWVzdCAqcnEpDQorew0KKwlpZiAocnEtPmN1cnJl bnRfbnJfc2VjdG9ycyA+IDApDQorCQlyZXR1cm47DQorDQorCWlmIChycS0+ bnJfY2Jpb19zZWN0b3JzID4gMCkgew0KKwkJLS1ycS0+bnJfY2Jpb19zZWdt ZW50czsNCisJCXJxLT5jdXJyZW50X25yX3NlY3RvcnMgPSBibGtfcnFfdmVj KHJxKS0+YnZfbGVuID4+IDk7DQorCX0gZWxzZSB7DQorCQlpZiAoKHJxLT5j YmlvID0gcnEtPmNiaW8tPmJpX25leHQpKSB7DQorCQkJcnEtPm5yX2NiaW9f c2VnbWVudHMgPSBiaW9fc2VnbWVudHMocnEtPmNiaW8pOw0KKwkJCXJxLT5u cl9jYmlvX3NlY3RvcnMgPSBiaW9fc2VjdG9ycyhycS0+Y2Jpbyk7DQorIAkJ CXJxLT5jdXJyZW50X25yX3NlY3RvcnMgPSBiaW9fY3VyX3NlY3RvcnMocnEt PmNiaW8pOw0KKwkJfQ0KKyAJfQ0KKw0KKwkvKiByZW1lbWJlciB0aGUgc2l6 ZSBvZiB0aGlzIHNlZ21lbnQgYmVmb3JlIHdlIHN0YXJ0IEkvTyAqLw0KKwly cS0+aGFyZF9jdXJfc2VjdG9ycyA9IHJxLT5jdXJyZW50X25yX3NlY3RvcnM7 DQorfQ0KKw0KKy8qKg0KKyAqIHByb2Nlc3NfdGhhdF9yZXF1ZXN0X2ZpcnN0 CS0JcHJvY2VzcyBwYXJ0aWFsIHJlcXVlc3Qgc3VibWlzc2lvbg0KKyAqIEBy ZXE6CXRoZSByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZA0KKyAqIEBucl9zZWN0 b3JzOgludW1iZXIgb2Ygc2VjdG9ycyBJL08gaGFzIGJlZW4gc3VibWl0dGVk IG9uDQorICoNCisgKiBEZXNjcmlwdGlvbjoNCisgKglNYXkgYmUgdXNlZCBm b3IgcHJvY2Vzc2luZyBiaW8ncyB3aGlsZSBzdWJtaXR0aW5nIEkvTyB3aXRo b3V0DQorICoJc2lnbmFsbGluZyBjb21wbGV0aW9uLiBGYWlscyBpZiBtb3Jl IGRhdGEgaXMgcmVxdWVzdGVkIHRoYW4gaXMNCisgKglhdmFpbGFibGUgaW4g dGhlIHJlcXVlc3QgaW4gd2hpY2ggY2FzZSBpdCBkb2Vzbid0IGFkdmFuY2Ug YW55DQorICoJcG9pbnRlcnMuDQorICoNCisgKglBc3N1bWVzIGEgcmVxdWVz dCBpcyBjb3JyZWN0bHkgc2V0IHVwLiBObyBzYW5pdHkgY2hlY2tzLg0KKyAq DQorICogUmV0dXJuOg0KKyAqCTAgLSBubyBtb3JlIGRhdGEgbGVmdCB0byBz dWJtaXQgKG5vdCBwcm9jZXNzZWQpDQorICoJMSAtIGRhdGEgYXZhaWxhYmxl IHRvIHN1Ym1pdCBmb3IgdGhpcyByZXF1ZXN0IChwcm9jZXNzZWQpDQorICoq Lw0KK2ludCBwcm9jZXNzX3RoYXRfcmVxdWVzdF9maXJzdChzdHJ1Y3QgcmVx dWVzdCAqcmVxLCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycykNCit7DQorCXVu c2lnbmVkIGludCBuc2VjdDsNCisNCisJaWYgKHJlcS0+bnJfc2VjdG9ycyA8 IG5yX3NlY3RvcnMpDQorCQlyZXR1cm4gMDsNCisNCisJcmVxLT5ucl9zZWN0 b3JzIC09IG5yX3NlY3RvcnM7DQorCXJlcS0+c2VjdG9yICs9IG5yX3NlY3Rv cnM7DQorCXdoaWxlIChucl9zZWN0b3JzKSB7DQorCQluc2VjdCA9IG1pbl90 KHVuc2lnbmVkLCByZXEtPmN1cnJlbnRfbnJfc2VjdG9ycywgbnJfc2VjdG9y cyk7DQorCQlyZXEtPmN1cnJlbnRfbnJfc2VjdG9ycyAtPSBuc2VjdDsNCisJ CW5yX3NlY3RvcnMgLT0gbnNlY3Q7DQorCQlpZiAocmVxLT5jYmlvKSB7DQor CQkJcmVxLT5ucl9jYmlvX3NlY3RvcnMgLT0gbnNlY3Q7DQorCQkJYmxrX3Jx X25leHRfc2VnbWVudChyZXEpOw0KKwkJfQ0KKwl9DQorCXJldHVybiAxOw0K K30NCisNCiB2b2lkIGJsa19yZWNhbGNfcnFfc2VnbWVudHMoc3RydWN0IHJl cXVlc3QgKnJxKQ0KIHsNCiAJc3RydWN0IGJpbyAqYmlvOw0KQEAgLTE5ODks OCArMjA3MCw2IEBADQogCWlmICghcnEtPmJpbykNCiAJCXJldHVybjsNCiAN Ci0JcnEtPmJ1ZmZlciA9IGJpb19kYXRhKHJxLT5iaW8pOw0KLQ0KIAlucl9w aHlzX3NlZ3MgPSBucl9od19zZWdzID0gMDsNCiAJcnFfZm9yX2VhY2hfYmlv KGJpbywgcnEpIHsNCiAJCS8qIEZvcmNlIGJpbyBody9waHlzIHNlZ3MgdG8g YmUgcmVjYWxjdWxhdGVkLiAqLw0KQEAgLTIwMDgsMTEgKzIwODcsMjQgQEAN CiB7DQogCWlmIChibGtfZnNfcmVxdWVzdChycSkpIHsNCiAJCXJxLT5oYXJk X3NlY3RvciArPSBuc2VjdDsNCi0JCXJxLT5ucl9zZWN0b3JzID0gcnEtPmhh cmRfbnJfc2VjdG9ycyAtPSBuc2VjdDsNCi0JCXJxLT5zZWN0b3IgPSBycS0+ aGFyZF9zZWN0b3I7DQorCQlycS0+aGFyZF9ucl9zZWN0b3JzIC09IG5zZWN0 Ow0KIA0KLQkJcnEtPmN1cnJlbnRfbnJfc2VjdG9ycyA9IGJpb19pb3ZlYyhy cS0+YmlvKS0+YnZfbGVuID4+IDk7DQotCQlycS0+aGFyZF9jdXJfc2VjdG9y cyA9IHJxLT5jdXJyZW50X25yX3NlY3RvcnM7DQorCQkvKg0KKwkJICogTW92 ZSB0aGUgSS9PIHN1Ym1pc3Npb24gcG9pbnRlcnMgYWhlYWQgaWYgcmVxdWly ZWQsDQorCQkgKiBpLmUuIGZvciBkcml2ZXJzIG5vdCBhd2FyZSBvZiBycS0+ Y2Jpby4NCisJCSAqLw0KKwkJaWYgKChycS0+bnJfc2VjdG9ycyA+PSBycS0+ aGFyZF9ucl9zZWN0b3JzKSAmJg0KKwkJICAgIChycS0+c2VjdG9yIDw9IHJx LT5oYXJkX3NlY3RvcikpIHsNCisJCQlycS0+c2VjdG9yID0gcnEtPmhhcmRf c2VjdG9yOw0KKwkJCXJxLT5ucl9zZWN0b3JzID0gcnEtPmhhcmRfbnJfc2Vj dG9yczsNCisJCQlycS0+aGFyZF9jdXJfc2VjdG9ycyA9IGJpb19jdXJfc2Vj dG9ycyhycS0+YmlvKTsNCisJCQlycS0+Y3VycmVudF9ucl9zZWN0b3JzID0g cnEtPmhhcmRfY3VyX3NlY3RvcnM7DQorCQkJcnEtPm5yX2NiaW9fc2VnbWVu dHMgPSBiaW9fc2VnbWVudHMocnEtPmJpbyk7DQorCQkJcnEtPm5yX2NiaW9f c2VjdG9ycyA9IGJpb19zZWN0b3JzKHJxLT5iaW8pOw0KKwkJCXJxLT5idWZm ZXIgPSBiaW9fZGF0YShycS0+YmlvKTsNCisNCisJCQlycS0+Y2JpbyA9IHJx LT5iaW87DQorCQl9DQogDQogCQkvKg0KIAkJICogaWYgdG90YWwgbnVtYmVy IG9mIHNlY3RvcnMgaXMgbGVzcyB0aGFuIHRoZSBmaXJzdCBzZWdtZW50DQpA QCAtMjIwNiw5ICsyMjk4LDExIEBADQogCXJxLT5jdXJyZW50X25yX3NlY3Rv cnMgPSBiaW9fY3VyX3NlY3RvcnMoYmlvKTsNCiAJcnEtPmhhcmRfY3VyX3Nl Y3RvcnMgPSBycS0+Y3VycmVudF9ucl9zZWN0b3JzOw0KIAlycS0+aGFyZF9u cl9zZWN0b3JzID0gcnEtPm5yX3NlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8p Ow0KKwlycS0+bnJfY2Jpb19zZWdtZW50cyA9IGJpb19zZWdtZW50cyhiaW8p Ow0KKwlycS0+bnJfY2Jpb19zZWN0b3JzID0gYmlvX3NlY3RvcnMoYmlvKTsN CiAJcnEtPmJ1ZmZlciA9IGJpb19kYXRhKGJpbyk7DQogDQotCXJxLT5iaW8g PSBycS0+YmlvdGFpbCA9IGJpbzsNCisJcnEtPmNiaW8gPSBycS0+YmlvID0g cnEtPmJpb3RhaWwgPSBiaW87DQogfQ0KIA0KIGludCBfX2luaXQgYmxrX2Rl dl9pbml0KHZvaWQpDQpAQCAtMjI1MCw2ICsyMzQ0LDcgQEANCiAJcmV0dXJu IDA7DQogfTsNCiANCitFWFBPUlRfU1lNQk9MKHByb2Nlc3NfdGhhdF9yZXF1 ZXN0X2ZpcnN0KTsNCiBFWFBPUlRfU1lNQk9MKGVuZF90aGF0X3JlcXVlc3Rf Zmlyc3QpOw0KIEVYUE9SVF9TWU1CT0woZW5kX3RoYXRfcmVxdWVzdF9jaHVu ayk7DQogRVhQT1JUX1NZTUJPTChlbmRfdGhhdF9yZXF1ZXN0X2xhc3QpOw0K ZGlmZiAtdU5yIGxpbnV4LTIuNS42OC1iazYvaW5jbHVkZS9saW51eC9iaW8u aCBsaW51eC9pbmNsdWRlL2xpbnV4L2Jpby5oDQotLS0gbGludXgtMi41LjY4 LWJrNi9pbmNsdWRlL2xpbnV4L2Jpby5oCVN1biBBcHIgMjAgMDQ6NTA6MzUg MjAwMw0KKysrIGxpbnV4L2luY2x1ZGUvbGludXgvYmlvLmgJRnJpIEFwciAy NSAyMjozMjoxNyAyMDAzDQpAQCAtMTMxLDYgKzEzMSw3IEBADQogI2RlZmlu ZSBiaW9faW92ZWMoYmlvKQkJYmlvX2lvdmVjX2lkeCgoYmlvKSwgKGJpbykt PmJpX2lkeCkNCiAjZGVmaW5lIGJpb19wYWdlKGJpbykJCWJpb19pb3ZlYygo YmlvKSktPmJ2X3BhZ2UNCiAjZGVmaW5lIGJpb19vZmZzZXQoYmlvKQkJYmlv X2lvdmVjKChiaW8pKS0+YnZfb2Zmc2V0DQorI2RlZmluZSBiaW9fc2VnbWVu dHMoYmlvKQkoKGJpbyktPmJpX3ZjbnQgLSAoYmlvKS0+YmlfaWR4KQ0KICNk ZWZpbmUgYmlvX3NlY3RvcnMoYmlvKQkoKGJpbyktPmJpX3NpemUgPj4gOSkN CiAjZGVmaW5lIGJpb19jdXJfc2VjdG9ycyhiaW8pCShiaW9faW92ZWMoYmlv KS0+YnZfbGVuID4+IDkpDQogI2RlZmluZSBiaW9fZGF0YShiaW8pCQkocGFn ZV9hZGRyZXNzKGJpb19wYWdlKChiaW8pKSkgKyBiaW9fb2Zmc2V0KChiaW8p KSkNCkBAIC0yMjYsMTIgKzIyNywxMiBAQA0KICNpZmRlZiBDT05GSUdfSElH SE1FTQ0KIC8qDQogICogcmVtZW1iZXIgdG8gYWRkIG9mZnNldCEgYW5kIG5l dmVyIGV2ZXIgcmVlbmFibGUgaW50ZXJydXB0cyBiZXR3ZWVuIGENCi0gKiBi aW9fa21hcF9pcnEgYW5kIGJpb19rdW5tYXBfaXJxISENCisgKiBidmVjX2tt YXBfaXJxIGFuZCBidmVjX2t1bm1hcF9pcnEhIQ0KICAqDQogICogVGhpcyBm dW5jdGlvbiBNVVNUIGJlIGlubGluZWQgLSBpdCBwbGF5cyB3aXRoIHRoZSBD UFUgaW50ZXJydXB0IGZsYWdzLg0KICAqIEhlbmNlIHRoZSBgZXh0ZXJuIGlu bGluZScuDQogICovDQotZXh0ZXJuIGlubGluZSBjaGFyICpiaW9fa21hcF9p cnEoc3RydWN0IGJpbyAqYmlvLCB1bnNpZ25lZCBsb25nICpmbGFncykNCitl eHRlcm4gaW5saW5lIGNoYXIgKmJ2ZWNfa21hcF9pcnEoc3RydWN0IGJpb192 ZWMgKmJ2ZWMsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKQ0KIHsNCiAJdW5zaWdu ZWQgbG9uZyBhZGRyOw0KIA0KQEAgLTI0MCwxNSArMjQxLDE1IEBADQogCSAq IGJhbGFuY2luZyBpcyBhIGxvdCBuaWNlciB0aGlzIHdheQ0KIAkgKi8NCiAJ bG9jYWxfaXJxX3NhdmUoKmZsYWdzKTsNCi0JYWRkciA9ICh1bnNpZ25lZCBs b25nKSBrbWFwX2F0b21pYyhiaW9fcGFnZShiaW8pLCBLTV9CSU9fU1JDX0lS USk7DQorCWFkZHIgPSAodW5zaWduZWQgbG9uZykga21hcF9hdG9taWMoYnZl Yy0+YnZfcGFnZSwgS01fQklPX1NSQ19JUlEpOw0KIA0KIAlpZiAoYWRkciAm IH5QQUdFX01BU0spDQogCQlCVUcoKTsNCiANCi0JcmV0dXJuIChjaGFyICop IGFkZHIgKyBiaW9fb2Zmc2V0KGJpbyk7DQorCXJldHVybiAoY2hhciAqKSBh ZGRyICsgYnZlYy0+YnZfb2Zmc2V0Ow0KIH0NCiANCi1leHRlcm4gaW5saW5l IHZvaWQgYmlvX2t1bm1hcF9pcnEoY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBs b25nICpmbGFncykNCitleHRlcm4gaW5saW5lIHZvaWQgYnZlY19rdW5tYXBf aXJxKGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpDQogew0K IAl1bnNpZ25lZCBsb25nIHB0ciA9ICh1bnNpZ25lZCBsb25nKSBidWZmZXIg JiBQQUdFX01BU0s7DQogDQpAQCAtMjU3LDggKzI1OCwxOSBAQA0KIH0NCiAN CiAjZWxzZQ0KLSNkZWZpbmUgYmlvX2ttYXBfaXJxKGJpbywgZmxhZ3MpCShi aW9fZGF0YShiaW8pKQ0KLSNkZWZpbmUgYmlvX2t1bm1hcF9pcnEoYnVmLCBm bGFncykJZG8geyAqKGZsYWdzKSA9IDA7IH0gd2hpbGUgKDApDQorI2RlZmlu ZSBidmVjX2ttYXBfaXJxKGJ2ZWMsIGZsYWdzKQkocGFnZV9hZGRyZXNzKChi dmVjKS0+YnZfcGFnZSkgKyAoYnZlYyktPmJ2X29mZnNldCkNCisjZGVmaW5l IGJ2ZWNfa3VubWFwX2lycShidWYsIGZsYWdzKQlkbyB7ICooZmxhZ3MpID0g MDsgfSB3aGlsZSAoMCkNCiAjZW5kaWYNCiANCitleHRlcm4gaW5saW5lIGNo YXIgKl9fYmlvX2ttYXBfaXJxKHN0cnVjdCBiaW8gKmJpbywgdW5zaWduZWQg c2hvcnQgaWR4LA0KKwkJCQkgICB1bnNpZ25lZCBsb25nICpmbGFncykNCit7 DQorCXJldHVybiBidmVjX2ttYXBfaXJxKGJpb19pb3ZlY19pZHgoYmlvLCBp ZHgpLCBmbGFncyk7DQorfQ0KKyNkZWZpbmUgX19iaW9fa3VubWFwX2lycShi dWYsIGZsYWdzKQlidmVjX2t1bm1hcF9pcnEoYnVmLCBmbGFncykNCisNCisj ZGVmaW5lIGJpb19rbWFwX2lycShiaW8sIGZsYWdzKSBcDQorCV9fYmlvX2tt YXBfaXJxKChiaW8pLCAoYmlvKS0+YmlfaWR4LCAoZmxhZ3MpKQ0KKyNkZWZp bmUgYmlvX2t1bm1hcF9pcnEoYnVmLGZsYWdzKQlfX2Jpb19rdW5tYXBfaXJx KGJ1ZiwgZmxhZ3MpDQorDQogI2VuZGlmIC8qIF9fTElOVVhfQklPX0ggKi8N CmRpZmYgLXVOciBsaW51eC0yLjUuNjgtYms2L2luY2x1ZGUvbGludXgvYmxr LmggbGludXgvaW5jbHVkZS9saW51eC9ibGsuaA0KLS0tIGxpbnV4LTIuNS42 OC1iazYvaW5jbHVkZS9saW51eC9ibGsuaAlGcmkgQXByIDI1IDE2OjA4OjUz IDIwMDMNCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L2Jsay5oCUZyaSBBcHIg MjUgMjE6Mzg6MDcgMjAwMw0KQEAgLTIyLDYgKzIyLDcgQEANCiAgKiBjb2Rl IGR1cGxpY2F0aW9uIGluIGRyaXZlcnMuDQogICovDQogDQorZXh0ZXJuIGlu dCBwcm9jZXNzX3RoYXRfcmVxdWVzdF9maXJzdChzdHJ1Y3QgcmVxdWVzdCAq LCB1bnNpZ25lZCBpbnQpOw0KIGV4dGVybiBpbnQgZW5kX3RoYXRfcmVxdWVz dF9maXJzdChzdHJ1Y3QgcmVxdWVzdCAqLCBpbnQsIGludCk7DQogZXh0ZXJu IGludCBlbmRfdGhhdF9yZXF1ZXN0X2NodW5rKHN0cnVjdCByZXF1ZXN0ICos IGludCwgaW50KTsNCiBleHRlcm4gdm9pZCBlbmRfdGhhdF9yZXF1ZXN0X2xh c3Qoc3RydWN0IHJlcXVlc3QgKik7DQpkaWZmIC11TnIgbGludXgtMi41LjY4 LWJrNi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGxpbnV4L2luY2x1ZGUvbGlu dXgvYmxrZGV2LmgNCi0tLSBsaW51eC0yLjUuNjgtYms2L2luY2x1ZGUvbGlu dXgvYmxrZGV2LmgJRnJpIEFwciAyNSAxNjowODo1MyAyMDAzDQorKysgbGlu dXgvaW5jbHVkZS9saW51eC9ibGtkZXYuaAlGcmkgQXByIDI1IDIyOjMzOjE1 IDIwMDMNCkBAIC0xMCw2ICsxMCw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3Bh Z2VtYXAuaD4NCiAjaW5jbHVkZSA8bGludXgvYmFja2luZy1kZXYuaD4NCiAj aW5jbHVkZSA8bGludXgvd2FpdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9iaW8u aD4NCiANCiAjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+DQogDQpAQCAt MzMsMjUgKzM0LDM1IEBADQogCQkJCSAgICAgKiBibGtkZXZfZGVxdWV1ZV9y ZXF1ZXN0ISAqLw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOwkJLyogc2VlIFJF UV8gYml0cyBiZWxvdyAqLw0KIA0KLQlzZWN0b3JfdCBzZWN0b3I7DQotCXVu c2lnbmVkIGxvbmcgbnJfc2VjdG9yczsNCisJLyogTWFpbnRhaW4gYmlvIHRy YXZlcnNhbCBzdGF0ZSBmb3IgcGFydCBieSBwYXJ0IEkvTyBzdWJtaXNzaW9u Lg0KKwkgKiBoYXJkXyogYXJlIGJsb2NrIGxheWVyIGludGVybmFscywgbm8g ZHJpdmVyIHNob3VsZCB0b3VjaCB0aGVtIQ0KKwkgKi8NCisNCisJc2VjdG9y X3Qgc2VjdG9yOwkJLyogbmV4dCBzZWN0b3IgdG8gc3VibWl0ICovDQorCXVu c2lnbmVkIGxvbmcgbnJfc2VjdG9yczsJLyogbm8uIG9mIHNlY3RvcnMgbGVm dCB0byBzdWJtaXQgKi8NCisJLyogbm8uIG9mIHNlY3RvcnMgbGVmdCB0byBz dWJtaXQgaW4gdGhlIGN1cnJlbnQgc2VnbWVudCAqLw0KIAl1bnNpZ25lZCBp bnQgY3VycmVudF9ucl9zZWN0b3JzOw0KIA0KKwlzZWN0b3JfdCBoYXJkX3Nl Y3RvcjsJCS8qIG5leHQgc2VjdG9yIHRvIGNvbXBsZXRlICovDQorCXVuc2ln bmVkIGxvbmcgaGFyZF9ucl9zZWN0b3JzOwkvKiBuby4gb2Ygc2VjdG9ycyBs ZWZ0IHRvIGNvbXBsZXRlICovDQorCS8qIG5vLiBvZiBzZWN0b3JzIGxlZnQg dG8gY29tcGxldGUgaW4gdGhlIGN1cnJlbnQgc2VnbWVudCAqLw0KKwl1bnNp Z25lZCBpbnQgaGFyZF9jdXJfc2VjdG9yczsNCisNCisJLyogbm8uIG9mIHNl Z21lbnRzIGxlZnQgdG8gc3VibWl0IGluIHRoZSBjdXJyZW50IGJpbyAqLw0K Kwl1bnNpZ25lZCBzaG9ydCBucl9jYmlvX3NlZ21lbnRzOw0KKwkvKiBuby4g b2Ygc2VjdG9ycyBsZWZ0IHRvIHN1Ym1pdCBpbiB0aGUgY3VycmVudCBiaW8g Ki8NCisJdW5zaWduZWQgbG9uZyBucl9jYmlvX3NlY3RvcnM7DQorDQorCXN0 cnVjdCBiaW8gKmNiaW87CQkvKiBuZXh0IGJpbyB0byBzdWJtaXQgKi8NCisJ c3RydWN0IGJpbyAqYmlvOwkJLyogbmV4dCB1bmZpbmlzaGVkIGJpbyB0byBj b21wbGV0ZSAqLw0KKwlzdHJ1Y3QgYmlvICpiaW90YWlsOw0KKw0KIAl2b2lk ICplbGV2YXRvcl9wcml2YXRlOw0KIA0KIAlpbnQgcnFfc3RhdHVzOwkvKiBz aG91bGQgc3BsaXQgdGhpcyBpbnRvIGEgZmV3IHN0YXR1cyBiaXRzICovDQog CXN0cnVjdCBnZW5kaXNrICpycV9kaXNrOw0KIAlpbnQgZXJyb3JzOw0KIAl1 bnNpZ25lZCBsb25nIHN0YXJ0X3RpbWU7DQotCXNlY3Rvcl90IGhhcmRfc2Vj dG9yOwkJLyogdGhlIGhhcmRfKiBhcmUgYmxvY2sgbGF5ZXINCi0JCQkJCSAq IGludGVybmFscywgbm8gZHJpdmVyIHNob3VsZA0KLQkJCQkJICogdG91Y2gg dGhlbQ0KLQkJCQkJICovDQotCXVuc2lnbmVkIGxvbmcgaGFyZF9ucl9zZWN0 b3JzOw0KLQl1bnNpZ25lZCBpbnQgaGFyZF9jdXJfc2VjdG9yczsNCi0NCi0J c3RydWN0IGJpbyAqYmlvOw0KLQlzdHJ1Y3QgYmlvICpiaW90YWlsOw0KIA0K IAkvKiBOdW1iZXIgb2Ygc2NhdHRlci1nYXRoZXIgRE1BIGFkZHIrbGVuIHBh aXJzIGFmdGVyDQogCSAqIHBoeXNpY2FsIGFkZHJlc3MgY29hbGVzY2luZyBp cyBwZXJmb3JtZWQuDQpAQCAtMjgxLDYgKzI5MiwzMiBAQA0KICAqLw0KICNk ZWZpbmUgYmxrX3F1ZXVlX2hlYWRhY3RpdmUocSwgaGVhZF9hY3RpdmUpDQog DQorLyogY3VycmVudCBpbmRleCBpbnRvIGJpbyBiZWluZyBwcm9jZXNzZWQg Zm9yIHN1Ym1pc3Npb24gKi8NCisjZGVmaW5lIGJsa19ycV9pZHgocnEpCSgo cnEpLT5jYmlvLT5iaV92Y250IC0gKHJxKS0+bnJfY2Jpb19zZWdtZW50cykN CisNCisvKiBjdXJyZW50IGJpbyB2ZWN0b3IgYmVpbmcgcHJvY2Vzc2VkICov DQorI2RlZmluZSBibGtfcnFfdmVjKHJxKQkoYmlvX2lvdmVjX2lkeCgocnEp LT5jYmlvLCBibGtfcnFfaWR4KHJxKSkpDQorDQorLyogY3VycmVudCBvZmZz ZXQgd2l0aCByZXNwZWN0IHRvIHN0YXJ0IG9mIHRoZSBzZWdtZW50IGJlaW5n IHN1Ym1pdHRlZCAqLw0KKyNkZWZpbmUgYmxrX3JxX29mZnNldChycSkgXA0K KwkoKChycSktPmhhcmRfY3VyX3NlY3RvcnMgLSAocnEpLT5jdXJyZW50X25y X3NlY3RvcnMpIDw8IDkpDQorDQorLyoNCisgKiB0ZW1wb3JhcmlseSBtYXBw aW5nIGEgKHBvc3NpYmxlKSBoaWdobWVtIGJpbyAodHlwaWNhbGx5IGZvciBQ SU8gdHJhbnNmZXIpDQorICovDQorDQorLyogQXNzdW1lcyBycS0+Y2JpbyAh PSBOVUxMICovDQorc3RhdGljIGlubGluZSBjaGFyICogcnFfbWFwX2J1ZmZl cihzdHJ1Y3QgcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGxvbmcgKmZsYWdzKQ0K K3sNCisJcmV0dXJuIChfX2Jpb19rbWFwX2lycShycS0+Y2JpbywgYmxrX3Jx X2lkeChycSksIGZsYWdzKQ0KKwkJKyBibGtfcnFfb2Zmc2V0KHJxKSk7DQor fQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBycV91bm1hcF9idWZmZXIoY2hh ciAqYnVmZmVyLCB1bnNpZ25lZCBsb25nICpmbGFncykNCit7DQorCV9fYmlv X2t1bm1hcF9pcnEoYnVmZmVyLCBmbGFncyk7DQorfQ0KKw0KIC8qDQogICog cS0+cHJlcF9ycV9mbiByZXR1cm4gdmFsdWVzDQogICovDQo= --=_courier-13686-1051308682-0001-2--