Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 114D1C433F5 for ; Mon, 20 Dec 2021 18:38:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233848AbhLTSiq (ORCPT ); Mon, 20 Dec 2021 13:38:46 -0500 Received: from mail-dm6nam10lp2107.outbound.protection.outlook.com ([104.47.58.107]:26794 "EHLO NAM10-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S233831AbhLTSip (ORCPT ); Mon, 20 Dec 2021 13:38:45 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JoRqNYhg08rBt2ELIyvVNMOGhfULuhX86NasWvJHVVAAg8zX7YoeKyqaUhwaWzY9oNOhq7Au6jLgg4LDUFdxZ5FNfsa9IugzqGrVLmoWSfrkLuBwyHzk+BGNXfdqPtfOD4ZJZweZuDipbKNwXqX13FIk3efQBd2tt3mzoYIufPiPsPW915ytCHyS6Ep6Yhil94f3AhGO3horOycJfJJ0j+22NYlOxVVru5e5huBWqTEOSRmYN9+FN8OIjYOcy1Cvh9UTPjVuoOAoS6TvPAQIcfpo/sn7X9cUAVmhuUM7nq8TTxu0m102iYSXLLN2ph5D5fh1TZ627qtu1oCHkbsCTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lhF5Bd1Q2F170SSnkrbwxSinKU6qb5Kd1k5PcaHJcgg=; b=a1RaiVdvqLPAvKbwmGqOxqX5Bg83sl/ey0F8mT2V4+JbNI/fhImbSdVpS3JYhvsGYBODvq8olMEcmdSjG5j0ghQkDDJ+9ie+hG26VoNNgQqJdcorjIkVykqDGfTUxBsHBv2U6EGHMQSrxXCLJMgUd4S/US/NAtJRTHSmMhN3dGHXhV0Gf6ZhULQR1Ph4ryjoexDMYuuVxsVcjOP7xU0sB1oRYVS0folMb9GGFX4W1COF8Kfv0wYDJJl9zNte2hEm/VkOlZc9sj/eUwdAkcFKBp+z1mKPQxEsgpFDRaDiAePQNeQYod9tGv7wo47WFKGmY0mNoQIF00+gadOGgX13nA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hammerspace.com; dmarc=pass action=none header.from=hammerspace.com; dkim=pass header.d=hammerspace.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hammerspace.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lhF5Bd1Q2F170SSnkrbwxSinKU6qb5Kd1k5PcaHJcgg=; b=Gtau+lvpTLJpE3xWK7ddPiV/HM2d/uy6Y5EsejJPEJrn/Uol0ODcIAVme00H/y/CVVG9U3ZHC9kss6yKp8sm2R4eNcIJIbOY3OeruhNxWj6+oZAVwYwytuc4bJr58MYqWp/C2oP1VWP2DTeCPaw6fo7J5shAxjCumGcMCrtokYo= Received: from CH0PR13MB5084.namprd13.prod.outlook.com (2603:10b6:610:111::7) by DM6PR13MB3497.namprd13.prod.outlook.com (2603:10b6:5:1cf::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.7; Mon, 20 Dec 2021 18:38:44 +0000 Received: from CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::288c:e4f1:334a:a08]) by CH0PR13MB5084.namprd13.prod.outlook.com ([fe80::288c:e4f1:334a:a08%3]) with mapi id 15.20.4823.014; Mon, 20 Dec 2021 18:38:44 +0000 From: Trond Myklebust To: "chuck.lever@oracle.com" CC: "linux-nfs@vger.kernel.org" , "bfields@redhat.com" Subject: Re: [PATCH v2 04/10] nfsd: Distinguish between required and optional NFSv3 post-op attributes Thread-Topic: [PATCH v2 04/10] nfsd: Distinguish between required and optional NFSv3 post-op attributes Thread-Index: AQHX9HoG0pjx9MYf7kqhrTtMeLgVtaw6QAKAgAAQWYCAATyIAIAAK7wA Date: Mon, 20 Dec 2021 18:38:43 +0000 Message-ID: <7c11149ddfe853e2096b1d968c25c3ad95da03d9.camel@hammerspace.com> References: <20211219013803.324724-1-trondmy@kernel.org> <20211219013803.324724-2-trondmy@kernel.org> <20211219013803.324724-3-trondmy@kernel.org> <20211219013803.324724-4-trondmy@kernel.org> <20211219013803.324724-5-trondmy@kernel.org> <6adbcc44f48cdb0a6a96ed488d5a1959c09e13cd.camel@hammerspace.com> In-Reply-To: Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=hammerspace.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a41f4a71-4ce9-4f21-aa69-08d9c3e7f38e x-ms-traffictypediagnostic: DM6PR13MB3497:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: j58vo4SEZtWX34zODe8u1te5549yG7ioeXzRiU7VhfodFfmpJEvQWchfpSb+28X2nTK9sQPvAQWSDmD9dhlegA+VHiDShy1vneSmKbfc+For3w5IgpmaQv5QnqszOUqXc+xiZNZGf6OJtH4WKqighvqrwoQvX8kYyVk0I6e1oLUHcDdtZRyWXWTwR3n6a+eqsC3UiGCR+f8DDvDznVCQe0BpyY23exJ8fKetRxkkkMkVEQ8oKiGzaJYeJBAR65SiRt2m/SlY2iBAI9kE3bseNaWlhdT6y/b+zKpks6GBRRhaztuyJlCKuxkUIOzPbJ/1xKOOW8J8CIUUYgIHyQ7hfHXroVClWrkFBKprovgN4DkIETs6p+bAhatWsWT6mEu+8ggYA7CF+0XNgWS/RrH3c5czeUTMjexhdjpS5XmeuDJNmhHqvmBDMfPl4EobE1JzBmzq9qdLST3X5bC/JISPrQ6raZ7QxlU5GRzdgH1TmobMHOSAxhCNRryjZyYyJtXvvYt3fPVkFboEBLBkudke/hK7oZnm1Pg+lmhZowvglUW9hJmTLKzgCeaqAsD2LdJJrlhqw4ms46QtWMa2awl1Xv5wQSTLk6joY4hDGkbbYh3suRf0SmisIK2oYCJ9AfYP0aj2aIOHzQUONk3XWoUPcbVVA1yzO6xzCjLrurpS0sOY8aq+7hDSUwsVY6EVxmLMHXOruyf+W91dJ1EJ7DkyXQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR13MB5084.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(39830400003)(136003)(366004)(396003)(346002)(376002)(83380400001)(8676002)(6512007)(86362001)(2616005)(5660300002)(6486002)(53546011)(6506007)(4001150100001)(71200400001)(36756003)(64756008)(186003)(6916009)(54906003)(316002)(2906002)(508600001)(26005)(76116006)(66946007)(38100700002)(122000001)(66446008)(66476007)(66556008)(38070700005)(4326008)(8936002)(20210929001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MEljc0Y3RVdJaTZkT0F0czNpYUdVbENmekRVSjZCRmVINnIyUFVBVC9LbGZM?= =?utf-8?B?VmRJS2ZQSDVTZzhzcUZtengxd25xVURXeDFHTldGRm5LZ01vZjd4Q2E2VlRI?= =?utf-8?B?MXRFbDZNWDU3RGU1MjFGWUtJWURHb0VYNzg3MWJISWR2TGlkRUVIenVwWTIw?= =?utf-8?B?ZW5RUHdaWUh2dU82ZkM2YWl1MjFNbTNWT3pjcTE2NjBVc00raHRvM3V2dENL?= =?utf-8?B?NVVjcTV1K2VBZmw4R3FId0JvVDFCYklIb0tLSlBRMlFjOUFxN2ZYUndnSUNi?= =?utf-8?B?VkJJVjVxeGgrYUQ0dUgzbXhrNjV1MEdRMzdiZ2RiN01tcGlmV09xR3pxR2J0?= =?utf-8?B?NXJBczgwczBiSjI0TmhJdHhMNkI4SDZxeXpQTEpPTGlUczRiSWF4azNaNmVw?= =?utf-8?B?SjNmYlBHaUxkUjN4NGZLbDlJYjdMNFM3ejVvdFFmV0U2ZjQ4YzJxS2NNK3pQ?= =?utf-8?B?L2NxWFhLQkF3UnpSdyt2S3JsNHdrWTh5eS94TU9HeE1TUW9ySzFQc1p1UENj?= =?utf-8?B?OHE0YzlKLzFRSnFqWEdWNkxqNUd0bkVabVRiYUJjcGo3VytpNExUMldLNjJD?= =?utf-8?B?VTM5MlB2SXFoZzFJOVVTTDA4bGRKVjE0QStzRjF4OUZMazNZTTBBMzFRaXRC?= =?utf-8?B?cE9DMTd1WHpJZGdNd050UVR4MysyWjVXeUlTeWgvNUdScU1hSHdyNStRWGkw?= =?utf-8?B?aTlJaHR6emdmUmZVcGs2eHJQNjh5TEVBSFJURDBXRFJJNC9HbC9EVktxc2Q4?= =?utf-8?B?a1cvdUVLR2g1ZEF3QTZ0RmNwNW5uY3p4cE9NcHZhSktJS09JMk9WNjhDWDY2?= =?utf-8?B?WWh0Z2dUM3A5WFU1QTBSempYbXcyaTRGTFUzZEdvT0xBbnc1dytRNzcwU0t6?= =?utf-8?B?akxSUVBBa0hJaUJoQ0kwWm5ZMkdSMUF5Qy9IRW9KMEVuVWlRUXBnSExHZVVK?= =?utf-8?B?emxUdmxvL2dSc1V4QkZNMlFTRWFxUVE3RWlOTXlyejZJSlJtSUpIZVJsMTU3?= =?utf-8?B?NXFQUlhUd0RDL3owMHFZaUpHbUNjaDdTQk1YVnRwczRjZVVnR1VKKzU0dENZ?= =?utf-8?B?UktPN0Vkb09ZeDVKSTUxeks3ODFtVWdYUy9OeUhRNk9zTXlVeUdCN3VwU0lD?= =?utf-8?B?OEZDTURTb3pjeUNBcmhyd3RWL1FFZGN3cEEwVm9hQi9KYVJpenh3aGVCNkN1?= =?utf-8?B?cGZPSHNIZFJzY1ZmVHYrTENWSW9QbFhlOGhtVDRsUmE4NUYrZDk2RnFoOGd5?= =?utf-8?B?ejBxYkxoTjcrMEVSYk9DM2NjMTVYOTQxZlVUZWsydnk3Rzdhand6OFFGMWxI?= =?utf-8?B?YnhqaXd0VlB2dTdUdlJlRy9IZ0V5ZUxkbVlQU1RmbGpZQkNrajBpWDlCbTAr?= =?utf-8?B?dXpCNXhtemdJUzhUVUZDcDIxSXc2Mm5vYmJvRVcrMGtXWHZ6VGorejJ5QmtP?= =?utf-8?B?bE9YZXFycFhDZzZ3QlRWaFZtMU9ER0xGRWpSekR1Z1JJRWJ6cUNQbWsrY0Jn?= =?utf-8?B?ZG9TbHZLWFk4M2RuKzJQZ0V4RHpJRU55OWxFb0tLQ2ZGbEFkQ3JiWHNRb2hn?= =?utf-8?B?Z2RVbUp2YnVYMjAyQ3U5akk2K3pCVm8xZCtObTBhMHNocTVtMlEyc3RYNEJU?= =?utf-8?B?RHFjVG8zRzVuQVViUzVkNlNnaVpxZlRJbFJMeVdLQjdONk9oWWF6ZTJLZ0Z5?= =?utf-8?B?US9STGMwUXdUL2dXME4xU29HUHNWVmx3b1NPT0JNNEJubUgyYnRmaFM1dksx?= =?utf-8?B?MlhZYzNrUVZycGdDVU9OUVRwa1k2NUg2dFNNVnpRZFNnVFRlNG1sb2JiVkNC?= =?utf-8?B?cG52Yy9IbGw0WmlpUllmcmdCSHhaemZFS2dhSWtGMUhjM3RTVjJ2dkhmQUR3?= =?utf-8?B?bUdxR3UwRkpUa3pVMjY0OTBUQUc0emJ1L3NEQTI3cWJzTkZ5bWhWcmgxNGdl?= =?utf-8?B?eDdsakp2aFJDdFRPSlVvdXlJNnM4eGZNQjVtTmVpOHZ0S1c2bDdLZUtZOHdL?= =?utf-8?B?bEpIVW1JMjhxOURwcTUwT3JJOVhRSzMyUXRmK0c3SjRnbnhJTk9kT2FpWG5K?= =?utf-8?B?c1ZZQk54RzhHRWI4UjRRTThkM2xKZVRvcjllNzZwcGFQZ25WWE1VdCs3OGNj?= =?utf-8?B?NEpsTFdrN1l3RHRjNnN1dTA3eno1L1o2N3Yxczl6VWFTZE52dEF4TnpPamtO?= =?utf-8?Q?n2+mtGmj+3PVoQAN62PgDzE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <6EF1DD0360D39A4CA1216E8741851702@namprd13.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: hammerspace.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR13MB5084.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a41f4a71-4ce9-4f21-aa69-08d9c3e7f38e X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Dec 2021 18:38:43.9496 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d4fed5c-3a70-46fe-9430-ece41741f59e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Oo7jU8KNkvSE/IsOP70gjgz4izlu/9ndHPUe/LKsqqH3xHRPVHaDRFMAVld9zuZjkDsw/eZKRYFdsUKYryO3lw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB3497 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gTW9uLCAyMDIxLTEyLTIwIGF0IDE2OjAyICswMDAwLCBDaHVjayBMZXZlciBJSUkgd3JvdGU6 DQo+IA0KPiANCj4gPiBPbiBEZWMgMTksIDIwMjEsIGF0IDQ6MDkgUE0sIFRyb25kIE15a2xlYnVz dA0KPiA+IDx0cm9uZG15QGhhbW1lcnNwYWNlLmNvbT4gd3JvdGU6DQo+ID4gDQo+ID4gT24gU3Vu LCAyMDIxLTEyLTE5IGF0IDIwOjEwICswMDAwLCBDaHVjayBMZXZlciBJSUkgd3JvdGU6DQo+ID4g PiANCj4gPiA+IA0KPiA+ID4gPiBPbiBEZWMgMTgsIDIwMjEsIGF0IDg6MzcgUE0sIHRyb25kbXlA a2VybmVsLm9yZ8Kgd3JvdGU6DQo+ID4gPiA+IA0KPiA+ID4gPiBGcm9tOiBUcm9uZCBNeWtsZWJ1 c3QgPHRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5jb20+DQo+ID4gPiA+IA0KPiA+ID4gPiBU aGUgZmhwLT5maF9ub193Y2MgZmxhZyBpcyBhdXRvbWF0aWNhbGx5IHNldCBpbg0KPiA+ID4gPiBu ZnNkX3NldF9maF9kZW50cnkoKQ0KPiA+ID4gPiB3aGVuIHRoZSBFWFBPUlRfT1BfTk9XQ0MgZmxh ZyBpcyBzZXQuIEluDQo+ID4gPiA+IHN2Y3hkcl9lbmNvZGVfcG9zdF9vcF9hdHRyKCksDQo+ID4g PiA+IHRoaXMgdGhlbiBjYXVzZXMgbmZzZCB0byBza2lwIHJldHVybmluZyB0aGUgcG9zdC1vcCBh dHRyaWJ1dGVzLg0KPiA+ID4gPiANCj4gPiA+ID4gVGhlIHByb2JsZW0gaXMgdGhhdCBzb21lIG9m IHRoZXNlIHBvc3Qtb3AgYXR0cmlidXRlcyBhcmUgbm90DQo+ID4gPiA+IHJlYWxseQ0KPiA+ID4g PiBvcHRpb25hbC4gSW4gcGFydGljdWxhciwgd2UgZG8gd2FudCBMT09LVVAgdG8gYWx3YXlzIHJl dHVybg0KPiA+ID4gPiBwb3N0LW9wDQo+ID4gPiA+IGF0dHJpYnV0ZXMgZm9yIHRoZSBmaWxlIHRo YXQgaXMgYmVpbmcgbG9va2VkIHVwLg0KPiA+ID4gPiANCj4gPiA+ID4gVGhlIHNvbHV0aW9uIGlz IHRoZXJlZm9yZSB0byBleHBsaWNpdGx5IGxhYmVsIHRoZSBhdHRyaWJ1dGVzDQo+ID4gPiA+IHRo YXQNCj4gPiA+ID4gd2UgY2FuDQo+ID4gPiA+IHNhZmVseSBvcHQgb3V0IGZyb20sIGFuZCBvbmx5 IGFwcGx5IHRoZSAnZmhwLT5maF9ub193Y2MnIHRlc3QNCj4gPiA+ID4gaW4NCj4gPiA+ID4gdGhh dA0KPiA+ID4gPiBjYXNlLg0KPiA+ID4gPiANCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogVHJvbmQg TXlrbGVidXN0DQo+ID4gPiA+IDx0cm9uZC5teWtsZWJ1c3RAcHJpbWFyeWRhdGEuY29tPg0KPiA+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBMYW5jZSBTaGVsdG9uIDxsYW5jZS5zaGVsdG9uQGhhbW1lcnNw YWNlLmNvbT4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0DQo+ID4gPiA+ IDx0cm9uZC5teWtsZWJ1c3RAaGFtbWVyc3BhY2UuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4g ZnMvbmZzZC9uZnMzeGRyLmMgfCA3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tDQo+ID4gPiA+IC0tLS0NCj4gPiA+ID4gLS0tDQo+ID4gPiA+IDEgZmlsZSBjaGFuZ2Vk LCA1MSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkNCj4gPiA+ID4gDQo+ID4gPiA+IGRp ZmYgLS1naXQgYS9mcy9uZnNkL25mczN4ZHIuYyBiL2ZzL25mc2QvbmZzM3hkci5jDQo+ID4gPiA+ IGluZGV4IGMzYWMxYjZhYTNhYS4uNmFkZmM0MDcyMmZhIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9m cy9uZnNkL25mczN4ZHIuYw0KPiA+ID4gPiArKysgYi9mcy9uZnNkL25mczN4ZHIuYw0KPiA+ID4g PiBAQCAtNDE1LDE5ICs0MTUsOSBAQCBzdmN4ZHJfZW5jb2RlX3ByZV9vcF9hdHRyKHN0cnVjdA0K PiA+ID4gPiB4ZHJfc3RyZWFtDQo+ID4gPiA+ICp4ZHIsIGNvbnN0IHN0cnVjdCBzdmNfZmggKmZo cCkNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHN2Y3hkcl9lbmNvZGVfd2NjX2F0dHIo eGRyLCBmaHApOw0KPiA+ID4gPiB9DQo+ID4gPiA+IA0KPiA+ID4gPiAtLyoqDQo+ID4gPiA+IC0g KiBzdmN4ZHJfZW5jb2RlX3Bvc3Rfb3BfYXR0ciAtIEVuY29kZSBORlN2MyBwb3N0LW9wDQo+ID4g PiA+IGF0dHJpYnV0ZXMNCj4gPiA+ID4gLSAqIEBycXN0cDogQ29udGV4dCBvZiBhIGNvbXBsZXRl ZCBSUEMgdHJhbnNhY3Rpb24NCj4gPiA+ID4gLSAqIEB4ZHI6IFhEUiBzdHJlYW0NCj4gPiA+ID4g LSAqIEBmaHA6IEZpbGUgaGFuZGxlIHRvIGVuY29kZQ0KPiA+ID4gPiAtICoNCj4gPiA+ID4gLSAq IFJldHVybiB2YWx1ZXM6DQo+ID4gPiA+IC0gKsKgwqAgJWZhbHNlOiBTZW5kIGJ1ZmZlciBzcGFj ZSB3YXMgZXhoYXVzdGVkDQo+ID4gPiA+IC0gKsKgwqAgJXRydWU6IFN1Y2Nlc3MNCj4gPiA+ID4g LSAqLw0KPiA+ID4gPiAtYm9vbA0KPiA+ID4gPiAtc3ZjeGRyX2VuY29kZV9wb3N0X29wX2F0dHIo c3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0DQo+ID4gPiA+IHhkcl9zdHJlYW0gKnhkciwN Cj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnN0IHN0cnVjdCBzdmNfZmggKmZocCkNCj4gPiA+ID4gK3N0YXRpYyBib29sDQo+ID4g PiA+ICtfX3N2Y3hkcl9lbmNvZGVfcG9zdF9vcF9hdHRyKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAs IHN0cnVjdA0KPiA+ID4gPiB4ZHJfc3RyZWFtICp4ZHIsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHN2 Y19maCAqZmhwLCBib29sDQo+ID4gPiA+IGZvcmNlKQ0KPiA+ID4gPiB7DQo+ID4gPiA+IMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGZocC0+ZmhfZGVudHJ5Ow0KPiA+ID4g PiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qga3N0YXQgc3RhdDsNCj4gPiA+ID4gQEAgLTQzNyw3ICs0 MjcsNyBAQCBzdmN4ZHJfZW5jb2RlX3Bvc3Rfb3BfYXR0cihzdHJ1Y3Qgc3ZjX3Jxc3QNCj4gPiA+ ID4gKnJxc3RwLCBzdHJ1Y3QgeGRyX3N0cmVhbSAqeGRyLA0KPiA+ID4gPiDCoMKgwqDCoMKgwqDC oMKgICogc3RhbGUgZmlsZSBoYW5kbGUuIEluIHRoaXMgY2FzZSwgbm8gYXR0cmlidXRlcyBhcmUN Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHJldHVybmVkLg0KPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgICovDQo+ID4gPiA+IC3CoMKgwqDCoMKgwqAgaWYgKGZocC0+Zmhfbm9fd2NjIHx8ICFk ZW50cnkgfHwNCj4gPiA+ID4gIWRfcmVhbGx5X2lzX3Bvc2l0aXZlKGRlbnRyeSkpDQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqAgaWYgKCFmb3JjZSB8fCAhZGVudHJ5IHx8ICFkX3JlYWxseV9pc19wb3Np dGl2ZShkZW50cnkpKQ0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byBub19wb3N0X29wX2F0dHJzOw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBpZiAoZmhfZ2V0YXR0 cihmaHAsICZzdGF0KSAhPSBuZnNfb2spDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnb3RvIG5vX3Bvc3Rfb3BfYXR0cnM7DQo+ID4gPiA+IEBAIC00NTQsNiArNDQ0LDMx IEBAIHN2Y3hkcl9lbmNvZGVfcG9zdF9vcF9hdHRyKHN0cnVjdCBzdmNfcnFzdA0KPiA+ID4gPiAq cnFzdHAsIHN0cnVjdCB4ZHJfc3RyZWFtICp4ZHIsDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIHJl dHVybiB4ZHJfc3RyZWFtX2VuY29kZV9pdGVtX2Fic2VudCh4ZHIpID4gMDsNCj4gPiA+ID4gfQ0K PiA+ID4gPiANCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogc3ZjeGRyX2VuY29kZV9wb3N0X29w X2F0dHIgLSBFbmNvZGUgTkZTdjMgcG9zdC1vcA0KPiA+ID4gPiBhdHRyaWJ1dGVzDQo+ID4gPiA+ ICsgKiBAcnFzdHA6IENvbnRleHQgb2YgYSBjb21wbGV0ZWQgUlBDIHRyYW5zYWN0aW9uDQo+ID4g PiA+ICsgKiBAeGRyOiBYRFIgc3RyZWFtDQo+ID4gPiA+ICsgKiBAZmhwOiBGaWxlIGhhbmRsZSB0 byBlbmNvZGUNCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBSZXR1cm4gdmFsdWVzOg0KPiA+ID4g PiArICrCoMKgICVmYWxzZTogU2VuZCBidWZmZXIgc3BhY2Ugd2FzIGV4aGF1c3RlZA0KPiA+ID4g PiArICrCoMKgICV0cnVlOiBTdWNjZXNzDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK2Jvb2wNCj4g PiA+ID4gK3N2Y3hkcl9lbmNvZGVfcG9zdF9vcF9hdHRyKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAs IHN0cnVjdA0KPiA+ID4gPiB4ZHJfc3RyZWFtICp4ZHIsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3Qgc3ZjX2Zo ICpmaHApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIF9fc3ZjeGRy X2VuY29kZV9wb3N0X29wX2F0dHIocnFzdHAsIHhkciwgZmhwLA0KPiA+ID4gPiB0cnVlKTsNCj4g PiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGJvb2wNCj4gPiA+ID4gK3N2Y3hk cl9lbmNvZGVfcG9zdF9vcF9hdHRyX29wcG9ydHVuaXN0aWMoc3RydWN0IHN2Y19ycXN0DQo+ID4g PiA+ICpycXN0cCwNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGRyX3N0 cmVhbQ0KPiA+ID4gPiAqeGRyLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0 IHN0cnVjdCBzdmNfZmgNCj4gPiA+ID4gKmZocCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK8KgwqDC oMKgwqDCoCByZXR1cm4gX19zdmN4ZHJfZW5jb2RlX3Bvc3Rfb3BfYXR0cihycXN0cCwgeGRyLCBm aHAsDQo+ID4gPiA+ICFmaHAtDQo+ID4gPiA+ID4gZmhfbm9fd2NjKTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gDQo+ID4gPiBUaGFua3MgZm9yIHNwbGl0dGluZyB0aGlzIG91dDogdGhl ICJ3aHkiIGlzIG11Y2ggY2xlYXJlci4NCj4gPiA+IA0KPiA+ID4gV291bGRuJ3QgaXQgYmUgc2lt cGxlciB0byBleHBsaWNpdGx5IHNldCBmaF9ub193Y2MgdG8gZmFsc2UNCj4gPiA+IGluIGVhY2gg b2YgdGhlIGNhc2VzIHdoZXJlIHlvdSB3YW50IHRvIGVuc3VyZSB0aGUgc2VydmVyDQo+ID4gPiBl bWl0cyBXQ0M/IEFuZCBwZXJoYXBzIHRoYXQgc2hvdWxkIGJlIGRvbmUgaW4gbmZzM3Byb2MuYw0K PiA+ID4gaW5zdGVhZCBvZiBpbiBuZnMzeGRyLmMuDQo+ID4gPiANCj4gPiANCj4gPiBJdCBjYW4n dCBiZSBkb25lIGluIG5mczNwcm9jLmMsIGFuZCB0b2dnbGluZyB0aGUgdmFsdWUgb2YgZmhfbm9f d2NjDQo+ID4gaXMNCj4gPiBhIGxvdCBtb3JlIGN1bWJlcnNvbWUgdGhhbiB0aGlzIGFwcHJvYWNo Lg0KPiA+IA0KPiA+IFRoZSBjdXJyZW50IGNvZGUgaXMgYnJva2VuIGZvciBORlN2MyBleHBvcnRz IGJlY2F1c2UgaXQgaXMgdW5hYmxlDQo+ID4gdG8NCj4gPiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHdo YXQgaXMgYW5kIGlzbid0IG1hbmRhdG9yeSB0byByZXR1cm4gZm9yIGluDQo+ID4gdGhlDQo+ID4g c2FtZSBORlMgb3BlcmF0aW9uLiBUaGF0J3MgdGhlIHByb2JsZW0gdGhpcyBwYXRjaCBmaXhlcy4N Cj4gDQo+IFRoYXQgc3VnZ2VzdHMgdGhhdCBhIEZpeGVzOiB0YWcgaXMgYXBwcm9wcmlhdGUuIENh biB5b3UgcmVjb21tZW5kDQo+IG9uZT8NCj4gDQo+IA0KPiA+IExPT0tVUCBoYXMgdG8gcmV0dXJu IHRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgb2JqZWN0IGJlaW5nIGxvb2tlZCB1cA0KPiA+IGluDQo+ ID4gb3JkZXIgdG8gYmUgdXNlZnVsLiBJZiB0aGUgYXR0cmlidXRlcyBhcmUgbm90IHVwIHRvIGRh dGUgdGhlbiB3ZQ0KPiA+IHNob3VsZA0KPiA+IGFzayB0aGUgTkZTIGNsaWVudCB0aGF0IGlzIGJl aW5nIHJlLWV4cG9ydGVkIHRvIGdvIHRvIHRoZSBzZXJ2ZXIgdG8NCj4gPiByZXZhbGlkYXRlIGl0 cyBhdHRyaWJ1dGVzLg0KPiA+IFRoZSBzYW1lIGlzIG5vdCB0cnVlIG9mIHRoZSBkaXJlY3Rvcnkg cG9zdC1vcCBhdHRyaWJ1dGVzLiBMT09LVVANCj4gPiBkb2VzDQo+ID4gbm90IGV2ZW4gY2hhbmdl IHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5LCBhbmQgc28gd2hpbGUgaXQgaXMNCj4gPiBi ZW5lZmljaWFsIHRvIGhhdmUgdGhlIE5GUyBjbGllbnQgcmV0dXJuIHRob3NlIGF0dHJpYnV0ZXMg aWYgdGhleQ0KPiA+IGFyZQ0KPiA+IHVwIHRvIGRhdGUsIGZvcmNpbmcgaXQgdG8gZ28gdG8gdGhl IHNlcnZlciB0byByZXRyaWV2ZSB0aGVtIGlzIGxlc3MNCj4gPiB0aGFuIG9wdGltYWwgZm9yIHN5 c3RlbSBwZXJmb3JtYW5jZS4NCj4gDQo+IEkgZ2V0IGFsbCB0aGF0LCBidXQgSSBkb24ndCBzZWUg aG93IHRoaXMgaXMgY3VtYmVyc29tZSBhdCBhbGw6DQo+IA0KPiDCoDgyIHN0YXRpYyBfX2JlMzIN Cj4gwqA4MyBuZnNkM19wcm9jX2xvb2t1cChzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwKQ0KPiDCoDg0 IHsNCj4gLi4uDQo+IMKgOTbCoMKgwqDCoMKgwqDCoMKgIHJlc3AtPnN0YXR1cyA9IG5mc2RfbG9v a3VwKHJxc3RwLCAmcmVzcC0+ZGlyZmgsDQo+IMKgOTfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFyZ3AtPm5hbWUs IGFyZ3AtPmxlbiwNCj4gwqA5OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnJlc3AtPmZoKTsNCj4gwqDCoMKgICvC oMKgwqDCoMKgwqAgcmVzcC0+ZmguZmhfbm9fd2NjID0gZmFsc2U7DQo+IMKgOTnCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBycGNfc3VjY2VzczsNCj4gMTAwIH0NCj4gDQo+IFRoZW4gaW4gNS8xMCwg cGFzcyAhZmhwLT5maF9ub193Y2MgdG8gbmZzZF9nZXRhdHRyKCkuDQo+IA0KPiANCg0KVGhhdCdz IG5vdCBlcXVpdmFsZW50LiBUaGF0IHdpbGwgZm9yY2UgdGhlIE5GUyBjbGllbnQgdG8gcmV0cmll dmUgdGhlDQpsb29rdXAgb2JqZWN0IGF0dHJpYnV0ZXMgQU5EIHRoZSBkaXJlY3RvcnkgYXR0cmli dXRlcy4NCg0KQXMgSSBzYWlkIGFib3ZlLCB0aGUgbGF0dGVyIGlzIG9wdGlvbmFsLiBUaGUgZm9y bWVyIGlzIG5vdC4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFp bnRhaW5lciwgSGFtbWVyc3BhY2UNCnRyb25kLm15a2xlYnVzdEBoYW1tZXJzcGFjZS5jb20NCg0K DQo=