From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Mullins Subject: Re: [PATCH 05/18] Add io_uring IO interface Date: Fri, 1 Feb 2019 16:57:00 +0000 Message-ID: <05cb18f7a97a6151c305cdb7240c4abc995aed59.camel@fb.com> References: <20190128213538.13486-1-axboe@kernel.dk> <20190128213538.13486-6-axboe@kernel.dk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: <7008C58A0890854990F566742E28AC3F@namprd15.prod.outlook.com> Sender: owner-linux-aio@kvack.org To: "jannh@google.com" , "axboe@kernel.dk" Cc: "linux-aio@kvack.org" , "linux-block@vger.kernel.org" , "jmoyer@redhat.com" , "linux-api@vger.kernel.org" , "hch@lst.de" , "viro@zeniv.linux.org.uk" , "linux-man@vger.kernel.org" , "avi@scylladb.com" List-Id: linux-api@vger.kernel.org T24gVHVlLCAyMDE5LTAxLTI5IGF0IDAwOjU5ICswMTAwLCBKYW5uIEhvcm4gd3JvdGU6DQo+IE9u IFR1ZSwgSmFuIDI5LCAyMDE5IGF0IDEyOjQ3IEFNIEplbnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5k az4gd3JvdGU6DQo+ID4gT24gMS8yOC8xOSAzOjMyIFBNLCBKYW5uIEhvcm4gd3JvdGU6DQo+ID4g PiBPbiBNb24sIEphbiAyOCwgMjAxOSBhdCAxMDozNSBQTSBKZW5zIEF4Ym9lIDxheGJvZUBrZXJu ZWwuZGs+IHdyb3RlOg0KPiA+ID4gPiBUaGUgc3VibWlzc2lvbiBxdWV1ZSAoU1EpIGFuZCBjb21w bGV0aW9uIHF1ZXVlIChDUSkgcmluZ3MgYXJlIHNoYXJlZA0KPiA+ID4gPiBiZXR3ZWVuIHRoZSBh cHBsaWNhdGlvbiBhbmQgdGhlIGtlcm5lbC4gVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIHRvDQo+ ID4gPiA+IGNvcHkgZGF0YSBiYWNrIGFuZCBmb3J0aCB0byBzdWJtaXQgYW5kIGNvbXBsZXRlIElP Lg0KPiA+ID4gPiANCj4gPiA+ID4gSU8gc3VibWlzc2lvbnMgdXNlIHRoZSBpb191cmluZ19zcWUg ZGF0YSBzdHJ1Y3R1cmUsIGFuZCBjb21wbGV0aW9ucw0KPiA+ID4gPiBhcmUgZ2VuZXJhdGVkIGlu IHRoZSBmb3JtIG9mIGlvX3VyaW5nX3NxZSBkYXRhIHN0cnVjdHVyZXMuIFRoZSBTUQ0KPiA+ID4g PiByaW5nIGlzIGFuIGluZGV4IGludG8gdGhlIGlvX3VyaW5nX3NxZSBhcnJheSwgd2hpY2ggbWFr ZXMgaXQgcG9zc2libGUNCj4gPiA+ID4gdG8gc3VibWl0IGEgYmF0Y2ggb2YgSU9zIHdpdGhvdXQg dGhlbSBiZWluZyBjb250aWd1b3VzIGluIHRoZSByaW5nLg0KPiA+ID4gPiBUaGUgQ1EgcmluZyBp cyBhbHdheXMgY29udGlndW91cywgYXMgY29tcGxldGlvbiBldmVudHMgYXJlIGluaGVyZW50bHkN Cj4gPiA+ID4gdW5vcmRlcmVkLCBhbmQgaGVuY2UgYW55IGlvX3VyaW5nX2NxZSBlbnRyeSBjYW4g cG9pbnQgYmFjayB0byBhbg0KPiA+ID4gPiBhcmJpdHJhcnkgc3VibWlzc2lvbi4NCj4gPiA+ID4g DQo+ID4gPiA+IFR3byBuZXcgc3lzdGVtIGNhbGxzIGFyZSBhZGRlZCBmb3IgdGhpczoNCj4gPiA+ ID4gDQo+ID4gPiA+IGlvX3VyaW5nX3NldHVwKGVudHJpZXMsIHBhcmFtcykNCj4gPiA+ID4gICAg ICAgICBTZXRzIHVwIGEgY29udGV4dCBmb3IgZG9pbmcgYXN5bmMgSU8uIE9uIHN1Y2Nlc3MsIHJl dHVybnMgYSBmaWxlDQo+ID4gPiA+ICAgICAgICAgZGVzY3JpcHRvciB0aGF0IHRoZSBhcHBsaWNh dGlvbiBjYW4gbW1hcCB0byBnYWluIGFjY2VzcyB0byB0aGUNCj4gPiA+ID4gICAgICAgICBTUSBy aW5nLCBDUSByaW5nLCBhbmQgaW9fdXJpbmdfc3Flcy4NCj4gPiA+ID4gDQo+ID4gPiA+IGlvX3Vy aW5nX2VudGVyKGZkLCB0b19zdWJtaXQsIG1pbl9jb21wbGV0ZSwgZmxhZ3MsIHNpZ3NldCwgc2ln c2V0c2l6ZSkNCj4gPiA+ID4gICAgICAgICBJbml0aWF0ZXMgSU8gYWdhaW5zdCB0aGUgcmluZ3Mg bWFwcGVkIHRvIHRoaXMgZmQsIG9yIHdhaXRzIGZvcg0KPiA+ID4gPiAgICAgICAgIHRoZW0gdG8g Y29tcGxldGUsIG9yIGJvdGguIFRoZSBiZWhhdmlvciBpcyBjb250cm9sbGVkIGJ5IHRoZQ0KPiA+ ID4gPiAgICAgICAgIHBhcmFtZXRlcnMgcGFzc2VkIGluLiBJZiAndG9fc3VibWl0JyBpcyBub24t emVybywgdGhlbiB3ZSdsbA0KPiA+ID4gPiAgICAgICAgIHRyeSBhbmQgc3VibWl0IG5ldyBJTy4g SWYgSU9SSU5HX0VOVEVSX0dFVEVWRU5UUyBpcyBzZXQsIHRoZQ0KPiA+ID4gPiAgICAgICAgIGtl cm5lbCB3aWxsIHdhaXQgZm9yICdtaW5fY29tcGxldGUnIGV2ZW50cywgaWYgdGhleSBhcmVuJ3QN Cj4gPiA+ID4gICAgICAgICBhbHJlYWR5IGF2YWlsYWJsZS4gSXQncyB2YWxpZCB0byBzZXQgSU9S SU5HX0VOVEVSX0dFVEVWRU5UUw0KPiA+ID4gPiAgICAgICAgIGFuZCAnbWluX2NvbXBsZXRlJyA9 PSAwIGF0IHRoZSBzYW1lIHRpbWUsIHRoaXMgYWxsb3dzIHRoZQ0KPiA+ID4gPiAgICAgICAgIGtl cm5lbCB0byByZXR1cm4gYWxyZWFkeSBjb21wbGV0ZWQgZXZlbnRzIHdpdGhvdXQgd2FpdGluZw0K PiA+ID4gPiAgICAgICAgIGZvciB0aGVtLiBUaGlzIGlzIHVzZWZ1bCBvbmx5IGZvciBwb2xsaW5n LCBhcyBmb3IgSVJRDQo+ID4gPiA+ICAgICAgICAgZHJpdmVuIElPLCB0aGUgYXBwbGljYXRpb24g Y2FuIGp1c3QgY2hlY2sgdGhlIENRIHJpbmcNCj4gPiA+ID4gICAgICAgICB3aXRob3V0IGVudGVy aW5nIHRoZSBrZXJuZWwuDQo+ID4gPiA+IA0KPiA+ID4gPiBXaXRoIHRoaXMgc2V0dXAsIGl0J3Mg cG9zc2libGUgdG8gZG8gYXN5bmMgSU8gd2l0aCBhIHNpbmdsZSBzeXN0ZW0NCj4gPiA+ID4gY2Fs bC4gRnV0dXJlIGRldmVsb3BtZW50cyB3aWxsIGVuYWJsZSBwb2xsZWQgSU8gd2l0aCB0aGlzIGlu dGVyZmFjZSwNCj4gPiA+ID4gYW5kIHBvbGxlZCBzdWJtaXNzaW9uIGFzIHdlbGwuIFRoZSBsYXR0 ZXIgd2lsbCBlbmFibGUgYW4gYXBwbGljYXRpb24NCj4gPiA+ID4gdG8gZG8gSU8gd2l0aG91dCBk b2luZyBBTlkgc3lzdGVtIGNhbGxzIGF0IGFsbC4NCj4gPiA+ID4gDQo+ID4gPiA+IEZvciBJUlEg ZHJpdmVuIElPLCBhbiBhcHBsaWNhdGlvbiBvbmx5IG5lZWRzIHRvIGVudGVyIHRoZSBrZXJuZWwg Zm9yDQo+ID4gPiA+IGNvbXBsZXRpb25zIGlmIGl0IHdhbnRzIHRvIHdhaXQgZm9yIHRoZW0gdG8g b2NjdXIuDQo+ID4gPiA+IA0KPiA+ID4gPiBFYWNoIGlvX3VyaW5nIGlzIGJhY2tlZCBieSBhIHdv cmtxdWV1ZSwgdG8gc3VwcG9ydCBidWZmZXJlZCBhc3luYyBJTw0KPiA+ID4gPiBhcyB3ZWxsLiBX ZSB3aWxsIG9ubHkgcHVudCB0byBhbiBhc3luYyBjb250ZXh0IGlmIHRoZSBjb21tYW5kIHdvdWxk DQo+ID4gPiA+IG5lZWQgdG8gd2FpdCBmb3IgSU8gb24gdGhlIGRldmljZSBzaWRlLiBBbnkgZGF0 YSB0aGF0IGNhbiBiZSBhY2Nlc3NlZA0KPiA+ID4gPiBkaXJlY3RseSBpbiB0aGUgcGFnZSBjYWNo ZSBpcyBkb25lIGlubGluZS4gVGhpcyBhdm9pZHMgdGhlIHNsb3duZXNzDQo+ID4gPiA+IGlzc3Vl IG9mIHVzdWFsIHRocmVhZHBvb2xzLCBzaW5jZSBjYWNoZWQgZGF0YSBpcyBhY2Nlc3NlZCBhcyBx dWlja2x5DQo+ID4gPiA+IGFzIGEgc3luYyBpbnRlcmZhY2UuDQo+ID4gPiA+IA0KPiA+ID4gPiBT YW1wbGUgYXBwbGljYXRpb246IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91 cmw/dT1odHRwLTNBX19naXQua2VybmVsLmRrX2NnaXRfZmlvX3BsYWluX3RfaW8tNUZ1cmluZy5j JmQ9RHdJQmFRJmM9NVZEMFJUdE5sVGgzeWNkNDFiM01VdyZyPXBxTS1lTzRBMmhORmhJRmlYLTdl R2cmbT1NR3IxNHBPek5iQzdaLThfZFY0R01pSDNBYmtrSDBSU1FvUTg5NFR1MHljJnM9bWdiY3Vi ek9NaUNwRnBud1ctSEEzZXkwWURZUGtnTUlaN0JteTR3NkNoYyZlPQ0KPiA+ID4gDQo+ID4gPiBb Li4uXQ0KPiA+ID4gPiArc3RhdGljIGludCBpb19wcmVwX3J3KHN0cnVjdCBpb19raW9jYiAqcmVx LCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUsDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICBib29sIGZvcmNlX25vbmJsb2NrKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICAgICAg IHN0cnVjdCBraW9jYiAqa2lvY2IgPSAmcmVxLT5ydzsNCj4gPiA+ID4gKyAgICAgICBpbnQgcmV0 Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAga2lvY2ItPmtpX2ZpbHAgPSBmZ2V0KHNxZS0+ ZmQpOw0KPiA+ID4gPiArICAgICAgIGlmICh1bmxpa2VseSgha2lvY2ItPmtpX2ZpbHApKQ0KPiA+ ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FQkFERjsNCj4gPiA+ID4gKyAgICAgICBraW9j Yi0+a2lfcG9zID0gc3FlLT5vZmY7DQo+ID4gPiA+ICsgICAgICAga2lvY2ItPmtpX2ZsYWdzID0g aW9jYl9mbGFncyhraW9jYi0+a2lfZmlscCk7DQo+ID4gPiA+ICsgICAgICAga2lvY2ItPmtpX2hp bnQgPSBraV9oaW50X3ZhbGlkYXRlKGZpbGVfd3JpdGVfaGludChraW9jYi0+a2lfZmlscCkpOw0K PiA+ID4gPiArICAgICAgIGlmIChzcWUtPmlvcHJpbykgew0KPiA+ID4gPiArICAgICAgICAgICAg ICAgcmV0ID0gaW9wcmlvX2NoZWNrX2NhcChzcWUtPmlvcHJpbyk7DQo+ID4gPiA+ICsgICAgICAg ICAgICAgICBpZiAocmV0KQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91 dF9mcHV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBraW9jYi0+a2lfaW9w cmlvID0gc3FlLT5pb3ByaW87DQo+ID4gPiA+ICsgICAgICAgfSBlbHNlDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICBraW9jYi0+a2lfaW9wcmlvID0gZ2V0X2N1cnJlbnRfaW9wcmlvKCk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgICAgICByZXQgPSBraW9jYl9zZXRfcndfZmxhZ3Moa2lvY2IsIHNx ZS0+cndfZmxhZ3MpOw0KPiA+ID4gPiArICAgICAgIGlmICh1bmxpa2VseShyZXQpKQ0KPiA+ID4g PiArICAgICAgICAgICAgICAgZ290byBvdXRfZnB1dDsNCj4gPiA+ID4gKyAgICAgICBpZiAoZm9y Y2Vfbm9uYmxvY2spIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGtpb2NiLT5raV9mbGFncyB8 PSBJT0NCX05PV0FJVDsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJlcS0+ZmxhZ3MgfD0gUkVR X0ZfRk9SQ0VfTk9OQkxPQ0s7DQo+ID4gPiA+ICsgICAgICAgfQ0KPiA+ID4gPiArICAgICAgIGlm IChraW9jYi0+a2lfZmxhZ3MgJiBJT0NCX0hJUFJJKSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgZ290byBvdXRfZnB1dDsN Cj4gPiA+ID4gKyAgICAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICBraW9jYi0+a2lf Y29tcGxldGUgPSBpb19jb21wbGV0ZV9ydzsNCj4gPiA+ID4gKyAgICAgICByZXR1cm4gMDsNCj4g PiA+ID4gK291dF9mcHV0Og0KPiA+ID4gPiArICAgICAgIGZwdXQoa2lvY2ItPmtpX2ZpbHApOw0K PiA+ID4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gPiA+ICt9DQo+ID4gPiANCj4gPiA+IFsu Li5dDQo+ID4gPiA+ICtzdGF0aWMgc3NpemVfdCBpb19yZWFkKHN0cnVjdCBpb19raW9jYiAqcmVx LCBjb25zdCBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUsDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBmb3JjZV9ub25ibG9jaykNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgICAg ICBzdHJ1Y3QgaW92ZWMgaW5saW5lX3ZlY3NbVUlPX0ZBU1RJT1ZdLCAqaW92ZWMgPSBpbmxpbmVf dmVjczsNCj4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qga2lvY2IgKmtpb2NiID0gJnJlcS0+cnc7DQo+ ID4gPiA+ICsgICAgICAgc3RydWN0IGlvdl9pdGVyIGl0ZXI7DQo+ID4gPiA+ICsgICAgICAgc3Ry dWN0IGZpbGUgKmZpbGU7DQo+ID4gPiA+ICsgICAgICAgc3NpemVfdCByZXQ7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgICAgICByZXQgPSBpb19wcmVwX3J3KHJlcSwgc3FlLCBmb3JjZV9ub25ibG9j ayk7DQo+ID4gPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJl dHVybiByZXQ7DQo+ID4gPiA+ICsgICAgICAgZmlsZSA9IGtpb2NiLT5raV9maWxwOw0KPiA+ID4g PiArDQo+ID4gPiA+ICsgICAgICAgcmV0ID0gLUVCQURGOw0KPiA+ID4gPiArICAgICAgIGlmICh1 bmxpa2VseSghKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpKSkNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgIGdvdG8gb3V0X2ZwdXQ7DQo+ID4gPiA+ICsgICAgICAgcmV0ID0gLUVJTlZBTDsNCj4g PiA+ID4gKyAgICAgICBpZiAodW5saWtlbHkoIWZpbGUtPmZfb3AtPnJlYWRfaXRlcikpDQo+ID4g PiA+ICsgICAgICAgICAgICAgICBnb3RvIG91dF9mcHV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgICAgcmV0ID0gaW9faW1wb3J0X2lvdmVjKHJlcS0+Y3R4LCBSRUFELCBzcWUsICZpb3ZlYywg Jml0ZXIpOw0KPiA+ID4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICBnb3RvIG91dF9mcHV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgcmV0ID0gcndfdmVy aWZ5X2FyZWEoUkVBRCwgZmlsZSwgJmtpb2NiLT5raV9wb3MsIGlvdl9pdGVyX2NvdW50KCZpdGVy KSk7DQo+ID4gPiA+ICsgICAgICAgaWYgKCFyZXQpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAg IHNzaXplX3QgcmV0MjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgICAgICAgLyogQ2F0 Y2ggLUVBR0FJTiByZXR1cm4gZm9yIGZvcmNlZCBub24tYmxvY2tpbmcgc3VibWlzc2lvbiAqLw0K PiA+ID4gPiArICAgICAgICAgICAgICAgcmV0MiA9IGNhbGxfcmVhZF9pdGVyKGZpbGUsIGtpb2Ni LCAmaXRlcik7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAoIWZvcmNlX25vbmJsb2NrIHx8 IHJldDIgIT0gLUVBR0FJTikNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaW9fcndf ZG9uZShraW9jYiwgcmV0Mik7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBlbHNlDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FQUdBSU47DQo+ID4gPiA+ICsgICAgICAg fQ0KPiA+ID4gPiArICAgICAgIGtmcmVlKGlvdmVjKTsNCj4gPiA+ID4gK291dF9mcHV0Og0KPiA+ ID4gPiArICAgICAgIGlmICh1bmxpa2VseShyZXQpKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAg ZnB1dChmaWxlKTsNCj4gPiA+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ID4gPiArfQ0KPiA+ ID4gDQo+ID4gPiBbLi4uXQ0KPiA+ID4gPiArc3RhdGljIGludCBfX2lvX3N1Ym1pdF9zcWUoc3Ry dWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19raW9jYiAqcmVxLA0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3FlX3N1Ym1pdCAqcywgYm9vbCBmb3JjZV9u b25ibG9jaykNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3QgaW9fdXJp bmdfc3FlICpzcWUgPSBzLT5zcWU7DQo+ID4gPiA+ICsgICAgICAgc3NpemVfdCByZXQ7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgICAgICBpZiAodW5saWtlbHkocy0+aW5kZXggPj0gY3R4LT5zcV9l bnRyaWVzKSkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ID4g PiArICAgICAgIHJlcS0+dXNlcl9kYXRhID0gc3FlLT51c2VyX2RhdGE7DQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgICAgICByZXQgPSAtRUlOVkFMOw0KPiA+ID4gPiArICAgICAgIHN3aXRjaCAoc3Fl LT5vcGNvZGUpIHsNCj4gPiA+ID4gKyAgICAgICBjYXNlIElPUklOR19PUF9OT1A6DQo+ID4gPiA+ ICsgICAgICAgICAgICAgICByZXQgPSBpb19ub3AocmVxLCBzcWUpOw0KPiA+ID4gPiArICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ICsgICAgICAgY2FzZSBJT1JJTkdfT1BfUkVBRFY6DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICByZXQgPSBpb19yZWFkKHJlcSwgc3FlLCBmb3JjZV9ub25i bG9jayk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gKyAgICAgICBj YXNlIElPUklOR19PUF9XUklURVY6DQo+ID4gPiA+ICsgICAgICAgICAgICAgICByZXQgPSBpb193 cml0ZShyZXEsIHNxZSwgZm9yY2Vfbm9uYmxvY2spOw0KPiA+ID4gPiArICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gPiA+ICsgICAgICAgZGVmYXVsdDoNCj4gPiA+ID4gKyAgICAgICAgICAgICAg IHJldCA9IC1FSU5WQUw7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4g KyAgICAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCBpb19zcV93cV9zdWJtaXRfd29y ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgICAgICAg c3RydWN0IGlvX2tpb2NiICpyZXEgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGlvX2tpb2Ni LCB3b3JrKTsNCj4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgc3FlX3N1Ym1pdCAqcyA9ICZyZXEtPnN1 Ym1pdDsNCj4gPiA+ID4gKyAgICAgICB1NjQgdXNlcl9kYXRhID0gcy0+c3FlLT51c2VyX2RhdGE7 DQo+ID4gPiA+ICsgICAgICAgc3RydWN0IGlvX3JpbmdfY3R4ICpjdHggPSByZXEtPmN0eDsNCj4g PiA+ID4gKyAgICAgICBtbV9zZWdtZW50X3Qgb2xkX2ZzID0gZ2V0X2ZzKCk7DQo+ID4gPiA+ICsg ICAgICAgc3RydWN0IGZpbGVzX3N0cnVjdCAqb2xkX2ZpbGVzOw0KPiA+ID4gPiArICAgICAgIGlu dCByZXQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgLyogRW5zdXJlIHdlIGNsZWFyIHBy ZXZpb3VzbHkgc2V0IGZvcmNlZCBub24tYmxvY2sgZmxhZyAqLw0KPiA+ID4gPiArICAgICAgIHJl cS0+ZmxhZ3MgJj0gflJFUV9GX0ZPUkNFX05PTkJMT0NLOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICAgICAgb2xkX2ZpbGVzID0gY3VycmVudC0+ZmlsZXM7DQo+ID4gPiA+ICsgICAgICAgY3VycmVu dC0+ZmlsZXMgPSBjdHgtPnNxb19maWxlczsNCj4gPiA+IA0KPiA+ID4gSSB0aGluayB5b3UncmUg bm90IHN1cHBvc2VkIHRvIHR3aWRkbGUgd2l0aCBjdXJyZW50LT5maWxlcyB3aXRob3V0DQo+ID4g PiBob2xkaW5nIHRhc2tfbG9jayhjdXJyZW50KS4NCj4gPiANCj4gPiAnY3VycmVudCcgaXMgdGhl IHdvcmsgcXVldWUgaXRlbSBpbiB0aGlzIGNhc2UsIGRvIHdlIG5lZWQgdG8gcHJvdGVjdA0KPiA+ IGFnYWluc3QgYW55dGhpbmcgZWxzZT8gSSBjYW4gYWRkIHRoZSBsb2NraW5nIGFyb3VuZCB0aGUg YXNzaWdubWVudHMNCj4gPiAoYm90aCBwbGFjZXMpLg0KPiANCj4gU3R1ZmYgbGlrZSBwcm9jX2Zk X2xpbmsoKSB1c2VzIGdldF9maWxlc19zdHJ1Y3QoKSwgd2hpY2ggZ3JhYnMgYQ0KPiByZWZlcmVu Y2UgdG8geW91ciBjdXJyZW50IGZpbGVzX3N0cnVjdCBwcm90ZWN0ZWQgb25seSBieSB0YXNrX2xv Y2soKTsNCj4gYW5kIGl0IGRvZXNuJ3QgdXNlIGFueXRoaW5nIGxpa2UgUkVBRF9PTkNFKCksIHNv IGV2ZW4gaWYgdGhlIG9iamVjdA0KPiBsaWZldGltZSBpcyBub3QgYSBwcm9ibGVtLCBnZXRfZmls ZXNfc3RydWN0KCkgY291bGQgcG90ZW50aWFsbHkgY3Jhc2gNCj4gZHVlIHRvIGEgZG91YmxlLXJl YWQgKHJlYWRpbmcgdGFzay0+ZmlsZXMgdHdpY2UgYW5kIGFzc3VtaW5nIHRoYXQgdGhlDQo+IHJl c3VsdCB3aWxsIGJlIHRoZSBzYW1lKS4gQXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoaXMgcHJvY2Zz IGNvZGUgYWxzbw0KPiB3b3JrcyBvbiBrZXJuZWwgdGhyZWFkcy4NCj4gDQo+ID4gPiA+ICsgICAg ICAgaWYgKCFtbWdldF9ub3RfemVybyhjdHgtPnNxb19tbSkpIHsNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgIHJldCA9IC1FRkFVTFQ7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBnb3RvIGVycjsN Cj4gPiA+ID4gKyAgICAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICB1c2VfbW0oY3R4 LT5zcW9fbW0pOw0KPiA+ID4gPiArICAgICAgIHNldF9mcyhVU0VSX0RTKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArICAgICAgIHJldCA9IF9faW9fc3VibWl0X3NxZShjdHgsIHJlcSwgcywgZmFsc2Up Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgc2V0X2ZzKG9sZF9mcyk7DQo+ID4gPiA+ICsg ICAgICAgdW51c2VfbW0oY3R4LT5zcW9fbW0pOw0KPiA+ID4gPiArICAgICAgIG1tcHV0KGN0eC0+ c3FvX21tKTsNCj4gPiA+ID4gK2VycjoNCj4gPiA+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4g PiA+ICsgICAgICAgICAgICAgICBpb19jcXJpbmdfYWRkX2V2ZW50KGN0eCwgdXNlcl9kYXRhLCBy ZXQsIDApOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgaW9fZnJlZV9yZXEocmVxKTsNCj4gPiA+ ID4gKyAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgY3VycmVudC0+ZmlsZXMgPSBvbGRfZmlsZXM7 DQo+ID4gPiA+ICt9DQo+ID4gPiANCj4gPiA+IFsuLi5dDQo+ID4gPiA+ICtzdGF0aWMgaW50IGlv X3NxX29mZmxvYWRfc3RhcnQoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgIGN0eC0+ c3FvX21tID0gY3VycmVudC0+bW07DQo+ID4gPiANCj4gPiA+IFdoYXQga2VlcHMgdGhpcyB0aGlu ZyBhbGl2ZT8NCj4gPiANCj4gPiBJIHRoaW5rIHdlJ3JlIGRlYWRsaW5nIHdpdGggdGhlIHNhbWUg dGhpbmcgYXMgdGhlIGZpbGVzIGJlbG93LCBJJ2xsDQo+ID4gZGVmZXIgdG8gdGhhdC4NCj4gPiAN Cj4gPiA+ID4gKyAgICAgICAvKg0KPiA+ID4gPiArICAgICAgICAqIFRoaXMgaXMgc2FmZSBzaW5j ZSAnY3VycmVudCcgaGFzIHRoZSBmZCBpbnN0YWxsZWQsIGFuZCBpZiB0aGF0IGdldHMNCj4gPiA+ ID4gKyAgICAgICAgKiBjbG9zZWQgb24gZXhpdCwgdGhlbiBmb3BzLT5yZWxlYXNlKCkgaXMgaW52 b2tlZCB3aGljaCB3YWl0cyBmb3IgdGhlDQo+ID4gPiA+ICsgICAgICAgICogYXN5bmMgY29udGV4 dHMgdG8gZmx1c2ggYW5kIGV4aXQgYmVmb3JlIGV4aXRpbmcuDQo+ID4gPiA+ICsgICAgICAgICov DQo+ID4gPiA+ICsgICAgICAgcmV0ID0gLUVCQURGOw0KPiA+ID4gPiArICAgICAgIGN0eC0+c3Fv X2ZpbGVzID0gY3VycmVudC0+ZmlsZXM7DQo+ID4gPiA+ICsgICAgICAgaWYgKCFjdHgtPnNxb19m aWxlcykNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyOw0KPiA+ID4gDQo+ID4gPiBU aGF0J3MgZ25hcmx5LiBBZGRpbmcgQWwgVmlybyB0byB0aGUgdGhyZWFkLg0KPiA+ID4gDQo+ID4g PiBJIHRoaW5rIHlvdSBtaXN1bmRlcnN0YW5kIHRoZSBzZW1hbnRpY3Mgb2YgZl9vcC0+cmVsZWFz ZS4gVGhlIC0+Zmx1c2gNCj4gPiA+IGhhbmRsZXIgaXMgaW52b2tlZCB3aGVuZXZlciBhIGZpbGUg ZGVzY3JpcHRvciBpcyBjbG9zZWQgdGhyb3VnaA0KPiA+ID4gZmlscF9jbG9zZSgpICh2aWEgZGVs ZXRpb24gb2YgdGhlIGZpbGVzX3N0cnVjdCwgc3lzX2Nsb3NlKCksDQo+ID4gPiBzeXNfZHVwMigp LCAuLi4pLCBzbyBpZiB5b3UgaGFkIHVzZWQgdGhhdCBvbmUsIF9tYXliZV8gdGhpcyB3b3VsZA0K PiA+ID4gd29yay4gQnV0IHRoZSAtPnJlbGVhc2UgaGFuZGxlciBvbmx5IHJ1bnMgd2hlbiB0aGUg X2xhc3RfIHJlZmVyZW5jZSB0bw0KPiA+ID4gYSBzdHJ1Y3QgZmlsZSBoYXMgYmVlbiBkcm9wcGVk IC0gc28geW91IGNhbiwgZm9yIGV4YW1wbGUsIGZvcmsoKSBhDQo+ID4gPiBjaGlsZCwgdGhlbiBl eGl0KCkgaW4gdGhlIHBhcmVudCwgYW5kIHRoZSAtPnJlbGVhc2UgaGFuZGxlciBpc24ndA0KPiA+ ID4gaW52b2tlZC4gU28gSSBkb24ndCBzZWUgaG93IHRoaXMgY2FuIHdvcmsuDQo+ID4gDQo+ID4g VGhlIGFub25mZCBpcyBDTE9FWEVDLiBUaGUgaWRlYSBpcyBleGFjdGx5IHRoYXQgaXQgb25seSBy dW5zIHdoZW4gdGhlDQo+ID4gbGFzdCByZWZlcmVuY2UgdG8gdGhlIGZpbGUgaGFzIGJlZW4gZHJv cHBlZC4gTm90IHN1cmUgd2h5IHlvdSB0aGluayBJDQo+ID4gbmVlZCAtPmZsdXNoKCkgaGVyZT8N Cj4gDQo+IENhbid0IEkganVzdCB1c2UgZmNudGwoZmQsIEZfU0VURkQsIGZkLCAwKSB0byBjbGVh ciB0aGUgQ0xPRVhFQyBmbGFnPw0KPiBPciBzZW5kIHRoZSBmZCB2aWEgU0NNX1JJR0hUUz8NCj4g DQo+ID4gPiBCdXQgZXZlbiBpZiB5b3UgaGFkIGFidXNlZCAtPmZsdXNoIGZvciB0aGlzIGluc3Rl YWQ6IGNsb3NlX2ZpbGVzKCkNCj4gPiA+IGN1cnJlbnRseSBoYXMgYSBjb21tZW50IGluIGl0IHRo YXQgY2xhaW1zIHRoYXQgInRoaXMgaXMgdGhlIGxhc3QNCj4gPiA+IHJlZmVyZW5jZSB0byB0aGUg ZmlsZXMgc3RydWN0dXJlIjsgdGhpcyBjaGFuZ2Ugd291bGQgbWFrZSB0aGF0IGNsYWltDQo+ID4g PiB1bnRydWUuDQo+ID4gDQo+ID4gTGV0IG1lIHNlZSBpZiBJIGNhbiBleHBsYWluIG15IGludGVu dCBiZXR0ZXIgdGhhbiB0aGF0IGNvbW1lbnQuLi4gV2UNCj4gPiBrbm93IHRoZSBwYXJlbnQgd2hv IHNldCB1cCB0aGUgaW9fdXJpbmcgaW5zdGFuY2Ugd2lsbCBiZSBhcm91bmQgZm9yIGFzDQo+ID4g bG9uZyBhcyBpb191cmluZyBpbnN0YW5jZSBwZXJzaXN0cy4NCj4gDQo+IFRoYXQncyB0aGUgcGFy dCB0aGF0IEkgdGhpbmsgaXMgd3Jvbmc6IEFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUNCj4gcGFy ZW50IGNhbiBnbyBhd2F5IGFuZCB5b3Ugd29uJ3Qgbm90aWNlLg0KPiANCj4gQWxzbywgbm90ZSB0 aGF0ICJ0aGUgcGFyZW50IiBpcyBkaWZmZXJlbnQgdGhpbmdzIGZvciAtPmZpbGVzIGFuZCAtPm1t Lg0KPiBZb3UgY2FuIGhhdmUgYSBtdWx0aXRocmVhZGVkIHByb2Nlc3Mgd2hvc2UgdGhyZWFkcyBk b24ndCBoYXZlIHRoZSBzYW1lDQo+IC0+ZmlsZXMsIG9yIG11bHRpcGxlIHByb2Nlc3MgdGhhdCBz aGFyZSAtPmZpbGVzIHdpdGhvdXQgc2hhcmluZyAtPm1tLA0KPiAuLi4NCg0KVGhpcyBoYWQgYWN0 dWFsbHkgYmVlbiBnZXRfZmlsZXNfc3RydWN0KCkgaW4gZWFybHkgdmVyc2lvbnMsIGFuZCBJIGhh ZA0KcmVwb3J0ZWQgdG8gSmVucyB0aGF0IGl0IGFsbG93cyBzb21ldGhpbmcgbGlrZQ0KDQppbnQg bWFpbigpIHsNCiAgc3RydWN0IGlvX3VyaW5nX3BhcmFtcyB1cmluZ19wYXJhbXMgPSB7DQogIAku ZmxhZ3MgPSBJT1JJTkdfU0VUVVBfU1FQT0xMLA0KICB9Ow0KICBpbnQgdXJpbmdfZmQgPSBzeXNj YWxsKDQyNSAvKiBpb191cmluZ19zZXR1cCAqLywgMTYsICZ1cmluZ19wYXJhbXMpOw0KfQ0KDQp0 byBsZWFrIGJvdGggdGhlIGZpbGVzX3N0cnVjdCBhbmQgdGhlIGt0aHJlYWQsIGFzIHRoZSBmaWxl c19zdHJ1Y3QgYW5kDQp0aGUgdXJpbmcgY29udGV4dCBmb3JtIGEgY2lyY3VsYXIgcmVmZXJlbmNl LiAgSSBoYXZlbid0IHJlYWxseSBjb21lIHVwDQp3aXRoIGEgZ29vZCB3YXkgdG8gcmVjb25jaWxl IHRoZSByZXF1aXJlbWVudHMgaGVyZTsgcGVyaGFwcyB3ZSBuZWVkIGFuDQpleGl0X3VyaW5nKCkg YWtpbiB0byBleGl0X2FpbygpPw0KDQo+ID4gV2hlbiB3ZSBhcmUgdGVhcmluZyBkb3duIHRoZQ0K PiA+IGlvX3VyaW5nLCB0aGVuIHdlIHdhaXQgZm9yIGFueSBhc3luYyBjb250ZXh0cyAobGlrZSB0 aGUgb25lIGFib3ZlKSB0bw0KPiA+IGV4aXQuIE9uY2UgdGhleSBhcmUgZXhpdGVkLCBpdCdzIHNh ZmUgdG8gcHJvY2VlZCB3aXRoIHRoZSBleGl0IGFuZA0KPiA+IHRlYXJkb3duIC0+ZmlsZXNbXS4N Cj4gDQo+IEJ1dCB5b3Ugb25seSBkbyB0aGF0IHRlYXJkb3duIG9uIC0+cmVsZWFzZSwgcmlnaHQ/ IEFuZCAtPnJlbGVhc2UNCj4gZG9lc24ndCBoYXZlIG11Y2ggdG8gZG8gd2l0aCB0aGUgcHJvY2Vz cyBsaWZldGltZS4NCj4gDQo+ID4gVGhhdCdzIHRoZSBpZGVhLi4uIE5vdCB0cnlpbmcgdG8gYmUg Y2xldmVyLCBzb21lIG9mIHRoaXMgZGF0ZXMgYmFjayB0bw0KPiA+IHRoZSBhaW8gd2VpcmRuZXNz IHdoZXJlIGl0IHdhcyBpbXBvc3NpYmxlIHRvIGhhdmUgY3Jvc3MgcmVmZXJlbmNlcyBsaWtlDQo+ ID4gdGhpcywgc2luY2UgaXQgd291bGQgbGVhZCB0byB0ZWFyZG93biBkZWFkbG9ja3Mgd2l0aCBo b3cgZXhpdF9haW8oKSBpcw0KPiA+IHVzZWQuIEkgY2FuIHByb2JhYmx5IGdyYWIgYSBzdHJ1Y3Qg ZmlsZXMgcmVmZXJlbmNlIGFib3ZlLCBidXQgY3VycmVudGx5DQo+ID4gSSBkb24ndCBzZWUgd2h5 IGl0J3MgbmVlZGVkLg0K -- To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to majordomo@kvack.org. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don't email: aart@kvack.org