Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp412027pxu; Tue, 1 Dec 2020 14:38:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJxPOnOhYYPt1F/qCsQ/GpEHhQ4YX0TNVqEq4zjI0pLGe4ku+9NqTIX5is+6MVKgCvANqYJm X-Received: by 2002:a17:906:f6c4:: with SMTP id jo4mr5169500ejb.145.1606862305199; Tue, 01 Dec 2020 14:38:25 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1606862305; cv=pass; d=google.com; s=arc-20160816; b=YbKbv1bS9RA11gdEpvcjz8Ey4w9UwYjtfw6jK2criBJM6+kYuT2TdhnCuIR8dbqXL+ Zd9c7NSLw0pVenBpNGxFzrWxlEdKRa9N1js6yWvg7iaSt55JTJwKloQj3NyaCkFmCrSk T7rtmu4hq5tyNrYG/Xf1YdcYuqshT24GiZSTUvY9MxejAjL963PiDrBeiFSaOjk/dtkU joxQlgFcWsVb8RO/4Lki/ABgMEGcSbv0CeKX2B4FGAD8qlNSEJo3Ozon98VhLX+WSvjW JoO3aMYg+deK6Igb7LVtfk2qSTnpDEY3KRYWa0pi+Pz0fuM3TCn2IDhTPsZe/5cwHmLz LeTQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=hgcOGzWLSE8cirqHu49HYS+rydkrVFa2+efJjwXQVCw=; b=sOtBNDWoPeAakg8rzNaZ3+lYGfGy39qLVUnEOiqrR86tZl73vd0ge+4LKnup6JvE3i e7yHf8Jt7rHRMeT4JEx7FnLn2vd7ALAbXtu/2FYiplDoOYF6fURdjp7w4999oXkW/aap JAIZMc0xLW5FijzICGnyUsuPK4sjGG/ME9FIJlcSWmGWh7Ak0vAeaPL8KsXqdAp8za5K XZsxpp5VxOv38wrjDW4kZMhSBiPcJVhkHv/kE8dFNWJVn85NMDgoL27zg3xoKWSioBkW rfxi3Khr0SxwtR2dRHrib9DoqbTS2hDJ91uB+lvuL2FBGDDxBgBFhUl1odoonsgfMGLP +2Yg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=CTCyv3DR; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r4si811700edm.79.2020.12.01.14.37.50; Tue, 01 Dec 2020 14:38:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=CTCyv3DR; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726126AbgLAWQm (ORCPT + 99 others); Tue, 1 Dec 2020 17:16:42 -0500 Received: from mail-mw2nam10on2120.outbound.protection.outlook.com ([40.107.94.120]:12673 "EHLO NAM10-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725987AbgLAWQm (ORCPT ); Tue, 1 Dec 2020 17:16:42 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m3pFXTWWPMm0WaTrp0+7cuOdFvlcDXnnF+7LGMMFVBj8nbjP+Jehhx8IJ4eR2YF8u2uuPGWmS3Xc9VitnKMgRDKTXnIymHlqgagcsx/1WxmKFGDJqix82aFuxiIW1ufFUR/5Azf/1pYa3LqxojJpCIgXVCmJInyLRHLz5d9aDqAf5KjaM0veS1UM0Ne2GufRWSYUCXaBqbH8lksbr6ibrngVRPOqpNLku06e45MyUYntRMtkkmgDVvupPoXzcpvo02cQZBXrDz7QO/3eBwFSyW3xIVMGQmGywZWzD/gS7HVcO5++5PvEkdtw7kDacaa7W9HmvPQt8mZk+6WnZIu82A== 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-SenderADCheck; bh=hgcOGzWLSE8cirqHu49HYS+rydkrVFa2+efJjwXQVCw=; b=JhUJuYGbTkQQTN+lXweowMxYiqKqQ4xBrLcP/QgYvbt0FeVfJ/RE+zpqlsE51IpGIQQvwsfVcZdTYMwTL7G/fyQtTUzdgpE5AH9RjXTh9Q5i1fQ3jEJ/zzkYXLtDxz5KxAYhIMl4tXntSp0RNhwiqj5jw30X3vl6uMf6P4PLexXizH+6dzUTzmjAnDIPx+bMVgH+aBk1DfpdgP4WNWHqQ57wr3HHH2pzMznXUiMJ97632BEpXdcDXZlAn9/DZ8jsFUdhDRKL/YBhBp71LzlzkkGv0yqdDNSm/veXUkxY8RmGq0SbsH25pMFlKTL3RGCIPOg7savFsNBEtHXoXVmAdA== 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=hgcOGzWLSE8cirqHu49HYS+rydkrVFa2+efJjwXQVCw=; b=CTCyv3DR0VUFetgeyE7JLS6ILyWSl8qAAXQ2vRdOC760BxkpRISwEUNY2cNB47cKd6s9KpSEJaZ8bCVtreiKgPuMfHq0n6go1X61DGvxK8Hh+urdSMpJHcXsC4w3LtfiSO0pQdhVJzvd0jerSNX8myGu9eOh7nPAn7QgLzyGhMc= Received: from MN2PR13MB3957.namprd13.prod.outlook.com (2603:10b6:208:263::11) by MN2PR13MB3232.namprd13.prod.outlook.com (2603:10b6:208:13b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3632.6; Tue, 1 Dec 2020 22:15:48 +0000 Received: from MN2PR13MB3957.namprd13.prod.outlook.com ([fe80::e989:f666:131a:e210]) by MN2PR13MB3957.namprd13.prod.outlook.com ([fe80::e989:f666:131a:e210%9]) with mapi id 15.20.3632.016; Tue, 1 Dec 2020 22:15:48 +0000 From: Trond Myklebust To: "fllinden@amazon.com" , "linux-nfs@vger.kernel.org" , "anna.schumaker@netapp.com" CC: "aglo@umich.edu" , "chuck.lever@oracle.com" Subject: Re: [PATCH] NFSv4.2: improve page handling for GETXATTR Thread-Topic: [PATCH] NFSv4.2: improve page handling for GETXATTR Thread-Index: AQHWyCss3TGmZBfjG0qhdRw6cFjXJKnizrEA Date: Tue, 1 Dec 2020 22:15:47 +0000 Message-ID: References: <20201201213128.13624-1-fllinden@amazon.com> In-Reply-To: <20201201213128.13624-1-fllinden@amazon.com> Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: amazon.com; dkim=none (message not signed) header.d=none;amazon.com; dmarc=none action=none header.from=hammerspace.com; x-originating-ip: [68.36.133.222] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4118e7f9-e962-44fc-6a7e-08d89646a7e3 x-ms-traffictypediagnostic: MN2PR13MB3232: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0eWuhSg9HUPdDJItgx7Ae7ykpUZWbOVvoJQkCfOLQuIBNCLwiFSNxNGRHjnhPwiTEQPOW2nI15rXuGt+L6KOUJ9onOWXtc8T4tPFZlJbnyaMUtjU5PHLBrDuG+mmfnQcmbFn3XPZwi6C/NouOy9peEVtWDNBjmUFN28xKA/XGfPedU1PpQgnpgdkLgd95MGrazW04nyyxpBd1u00+FVArSxD6jbYVjKqx762fEqHNjJNuy7bkLB78QYuGRcuWnUVUfNweECGeypP735d8+aIB34WVQukrcAam0HOHfhjkX4/gmO4nSpvqc8Zfm1Vui6a7TnQZF1Rm5GyKyvYzDsnJQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR13MB3957.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(39830400003)(136003)(376002)(366004)(346002)(54906003)(316002)(4326008)(2616005)(66446008)(66946007)(64756008)(66556008)(26005)(91956017)(66476007)(76116006)(5660300002)(6512007)(6486002)(186003)(71200400001)(2906002)(110136005)(478600001)(8936002)(83380400001)(8676002)(86362001)(36756003)(6506007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?VWlZRlExYWNsc0g4Z2pWMlBEUEhmNDNzMXFTdXF5WjZoVFRlaGkveXNIdGE0?= =?utf-8?B?ckpOKzZTWXVLemhwTGJHTnp4K2VnckgwZjFyR3crS0lyRHdPU2JnZ3ZrK0k5?= =?utf-8?B?ZDJEK1VRMVVQd3p1SWNQbVY1Y2NkVkdaZlpQYlBpamt6ZnFMV2prSHc0M1p1?= =?utf-8?B?U1NFUXg0eUJlbVdxZmt1bGR0bTFDcDRKeG5OTnZVa0h4OWVtUERLRzZMNldF?= =?utf-8?B?WHVpQU8xajlGQUtLVm9EREZjS01yRTFGSHZIcWJodThENVBITm43eGh4Z0RE?= =?utf-8?B?enRONHBUYldnWHNDcFRmeEhJS01YTzJ6Nk1NRkpZdXltcmljY1hQOUpxVWF3?= =?utf-8?B?NGJZRTlaS3FldVFSV2tnTXhYZWtBU0hMSmdwL3o1bUxsMThaTndNcjJYakpQ?= =?utf-8?B?RUtTSUF0VWVHa0xWRGYweXhzUkZ5QzMxUmp2Syt3cWNTTit3aERqbk1tZkZG?= =?utf-8?B?aVdRc0JTQU5kUkhRcE5QZGpIMXVDdlZ0dnN3dC9kMkQydnhDckVEZVlteUhS?= =?utf-8?B?T3VTUTJBNFRuTVA3SzRyWkNrL05pNnpMQkRkUlNnZE5RS0NJTkUzT3pIZTFN?= =?utf-8?B?eXpQQytOaDgyQ2duZFhVVzJ0UWUzeHkyVEhNeFloQWNDWC9XN3dXUXZNajFL?= =?utf-8?B?SENGTEc5SndhMUEweXJvQ20vY25yN055aFhmSDhFSHpyajFDWlVjSit5Nlkr?= =?utf-8?B?U1lSdnNKWEF4NldybmRuRXdkK3pkejdteUg1dWZUZ3k4L0lIN3JHaFB4T0hQ?= =?utf-8?B?TkhTeXRqSTVyUWJQaGpSUzQwcUkvRWpWUWF5b3hqUlVHQlExTDQ5THZMRVRZ?= =?utf-8?B?eWh5OEE3dWwzNVlEUjBxOXJPdHpTK0tWcHBFSVNVR3Z0SWdNZk1OdjRHaC9u?= =?utf-8?B?QkdXL2krdUovTmpLTTAwRlpTakhsVEVBeDhMR0pNa1pjVnBKS1VxNS8yZ1hF?= =?utf-8?B?aXV6ZnZkRFhUNHM4UDBSOHBVTElHZkZYLzJVSjlrSE8xVEdHZ2s5ZlJjUTZZ?= =?utf-8?B?K2d4NWFoUnV6OVhlQWQzM3VqOFhLbkdlOEVwMU5idnd6bERHRDhwZEpVZVdi?= =?utf-8?B?SjI1Y3lhTUNmaVFuM1ZRaUk0NXNEVE1MWStFdzBLQVZNLy9wRlQyZFBReGJr?= =?utf-8?B?VTlSRDI2Zy8wS2h1aGRYUUFRM2JZRGlLWEp0RGtTTW8zcnNURDN0VEZrTTBD?= =?utf-8?B?WDN2Sk4zekN3bTBZNkpsTzZleFZVZkZHQmtSY0lZcE1ZbHhzb3BhNTFNRkpy?= =?utf-8?B?cU92QXl6VEFFOFRWdWxUL1kvQTRFN2J1ZWFXWjVwRlJ6ZTBWM1pzR2I2bGl3?= =?utf-8?Q?vcwrgv+Y87Xd14fYhkzPUl8b13KQzxRW1c?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <8CD381F2DDE48F4F87B29C31B0D404B5@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: MN2PR13MB3957.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4118e7f9-e962-44fc-6a7e-08d89646a7e3 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Dec 2020 22:15:48.0017 (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: /ASNSX9GYkqb8ro9TqOCnKUWxo3+yHxQeAxKOqVhs7GNQeIpFrgrlp2LTAES14XdtXSy8Yx/wUW/2z7VMALgbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB3232 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gVHVlLCAyMDIwLTEyLTAxIGF0IDIxOjMxICswMDAwLCBGcmFuayB2YW4gZGVyIExpbmRlbiB3 cm90ZToNCj4gWERSQlVGX1NQQVJTRV9QQUdFUyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHRoZSBS RE1BIHRyYW5zcG9ydCwNCj4gYW5kIGl0J3MgZWFzeSBlbm91Z2ggdG8gYWxsb2NhdGUgZW5vdWdo IHBhZ2VzIGZvciB0aGUgcmVxdWVzdA0KPiB1cCBmcm9udCwgc28gZG8gdGhhdC4NCj4gDQo+IEFs c28sIHNpbmNlIHdlJ3ZlIGFsbG9jYXRlZCB0aGUgcGFnZXMgYW55d2F5LCB1c2UgdGhlIGZ1bGwN Cj4gcGFnZSBhbGlnbmVkIGxlbmd0aCBmb3IgdGhlIHJlY2VpdmUgYnVmZmVyLiBUaGlzIHdpbGwg YWxsb3cNCj4gY2FjaGluZyBvZiB2YWxpZCByZXBsaWVzIHRoYXQgYXJlIHRvbyBsYXJnZSBmb3Ig dGhlIGNhbGxlciwNCj4gYnV0IHRoYXQgc3RpbGwgZml0IGluIHRoZSBhbGxvY2F0ZWQgcGFnZXMu DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBGcmFuayB2YW4gZGVyIExpbmRlbiA8ZmxsaW5kZW5AYW1h em9uLmNvbT4NCj4gLS0tDQo+IMKgZnMvbmZzL25mczQycHJvYy5jIHwgMzkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tDQo+IMKgZnMvbmZzL25mczQyeGRyLmPCoCB8IDIy ICsrKysrKysrKysrKysrKysrLS0tLS0NCj4gwqAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0MnBy b2MuYyBiL2ZzL25mcy9uZnM0MnByb2MuYw0KPiBpbmRleCAyYjIyMTFkMTIzNGUuLmJmZTE1YWM3 N2JkOSAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL25mczQycHJvYy5jDQo+ICsrKyBiL2ZzL25mcy9u ZnM0MnByb2MuYw0KPiBAQCAtMTE3NiwxMSArMTE3Niw5IEBAIHN0YXRpYyBzc2l6ZV90IF9uZnM0 Ml9wcm9jX2dldHhhdHRyKHN0cnVjdA0KPiBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUs DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2b2lkICpidWYsIHNpemVfdCBidWZsZW4pDQo+IMKgew0KPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IG5mc19zZXJ2ZXIgKnNlcnZlciA9IE5GU19TRVJWRVIoaW5vZGUpOw0KPiAt wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGFnZSAqcGFnZXNbTkZTNFhBVFRSX01BWFBBR0VTXSA9IHt9 Ow0KPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGFnZSAqKnBhZ2VzOw0KPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IG5mczQyX2dldHhhdHRyYXJncyBhcmcgPSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLmZowqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IE5GU19GSChpbm9k ZSksDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAueGF0dHJfcGFnZXPCoMKgwqDC oD0gcGFnZXMsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAueGF0dHJfbGVuwqDC oMKgwqDCoMKgPSBidWZsZW4sDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnhh dHRyX25hbWXCoMKgwqDCoMKgPSBuYW1lLA0KPiDCoMKgwqDCoMKgwqDCoMKgfTsNCj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBuZnM0Ml9nZXR4YXR0cnJlcyByZXM7DQo+IEBAIC0xMTg5LDEyICsx MTg3LDMxIEBAIHN0YXRpYyBzc2l6ZV90IF9uZnM0Ml9wcm9jX2dldHhhdHRyKHN0cnVjdA0KDQpX aHkgY2FuJ3Qgd2Ugc2V0IHVwIHRoZSBwYWdlIGFycmF5IGluIG5mczQyX3Byb2NfZ2V0eGF0dHIo KT8gVGhpcyBtZWFucw0KdGhhdCBpZiB3ZSBnZXQgYSByZXRyeWFibGUgZXJyb3IgZnJvbSB0aGUg c2VydmVyLCB0aGVuIHdlIHBlcmZvcm0NCm11bHRpcGxlIGFsbG9jYXRpb25zIG9mIHRoZSBzYW1l IGJ1ZmZlci4NCg0KPiBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUsDQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJwY19hcmdwwqDCoMKgwqDCoMKgwqA9ICZhcmcsDQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJwY19yZXNwwqDCoMKgwqDCoMKgwqA9 ICZyZXMsDQo+IMKgwqDCoMKgwqDCoMKgwqB9Ow0KPiAtwqDCoMKgwqDCoMKgwqBpbnQgcmV0LCBu cDsNCj4gK8KgwqDCoMKgwqDCoMKgc3NpemVfdCByZXQsIG5wLCBpOw0KPiArDQo+ICvCoMKgwqDC oMKgwqDCoGFyZy54YXR0cl9sZW4gPSBidWZsZW4gPzogWEFUVFJfU0laRV9NQVg7DQo+ICsNCj4g K8KgwqDCoMKgwqDCoMKgcmV0ID0gLUVOT01FTTsNCj4gK8KgwqDCoMKgwqDCoMKgbnAgPSBESVZf Uk9VTkRfVVAoYXJnLnhhdHRyX2xlbiwgUEFHRV9TSVpFKTsNCg0KUGxlYXNlIGp1c3QgdXNlIG5m c19wYWdlX2FycmF5X2xlbigpLiBJdCBzaG91bGQgYmUgbW9yZSBlZmZpY2llbnQgdGhhbg0KdGhl IGFib3ZlLg0KDQo+ICsNCj4gK8KgwqDCoMKgwqDCoMKgcGFnZXMgPSBrY2FsbG9jKG5wLCBzaXpl b2Yoc3RydWN0IHBhZ2UgKiksIEdGUF9LRVJORUwpOw0KDQpQZXJoYXBzIGRvIHRoaXMgYXMga21h bGxvY19hcnJheSgpIHNvIHdlIGRvbid0IGhhdmUgdG8gemVybyBvdXQgdGhlDQphcnJheT8gSWYg dGhlIGFsbG9jX3BhZ2UoKSBmYWlscyBiZWxvdywgeW91IGNhbiBhbHdheXMganVzdCB0cnVuY2F0 ZQ0KdGhlIHZhbHVlIG9mICducCcgYmVmb3JlIGp1bXBpbmcgdG8gJ291dF9mcmVlJy4NCg0KQWxz byBub3RlIHRoYXQgd2UgcHJlZmVyIHRvIHVzZSAnc2l6ZW9mKCpwYWdlcyknIHJhdGhlciB0aGFu DQpzaXplb2Yoc3RydWN0IHBhZ2UgKikuDQoNCj4gK8KgwqDCoMKgwqDCoMKgaWYgKHBhZ2VzID09 IE5VTEwpDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Ow0KPiAr DQo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBucDsgaSsrKSB7DQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYWdlc1tpXSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7 DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIXBhZ2VzW2ldKQ0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2ZyZWU7 DQo+ICvCoMKgwqDCoMKgwqDCoH0NCj4gKw0KPiArwqDCoMKgwqDCoMKgwqBhcmcueGF0dHJfcGFn ZXMgPSBwYWdlczsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoHJldCA9IG5mczRfY2FsbF9zeW5j KHNlcnZlci0+Y2xpZW50LCBzZXJ2ZXIsICZtc2csDQo+ICZhcmcuc2VxX2FyZ3MsDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJnJlcy5zZXFfcmVzLCAwKTsNCj4gwqDCoMKgwqDCoMKgwqDCoGlm IChyZXQgPCAwKQ0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsN Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2ZyZWU7DQo+ICsNCj4g K8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVzLnhhdHRyX2xlbjsNCj4gwqANCj4gwqDCoMKgwqDCoMKg wqDCoC8qDQo+IMKgwqDCoMKgwqDCoMKgwqAgKiBOb3JtYWxseSwgdGhlIGNhY2hpbmcgaXMgZG9u ZSBvbmUgbGF5ZXIgdXAsIGJ1dCBmb3INCj4gc3VjY2Vzc2Z1bA0KPiBAQCAtMTIwOSwxNiArMTIy NiwyMCBAQCBzdGF0aWMgc3NpemVfdCBfbmZzNDJfcHJvY19nZXR4YXR0cihzdHJ1Y3QNCj4gaW5v ZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLA0KPiDCoMKgwqDCoMKgwqDCoMKgbmZzNF94YXR0 cl9jYWNoZV9hZGQoaW5vZGUsIG5hbWUsIE5VTEwsIHBhZ2VzLA0KPiByZXMueGF0dHJfbGVuKTsN Cj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChidWZsZW4pIHsNCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChyZXMueGF0dHJfbGVuID4gYnVmbGVuKQ0KPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRVJBTkdFOw0KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJlcy54YXR0cl9sZW4gPiBidWZsZW4p IHsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQg PSAtRVJBTkdFOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGdvdG8gb3V0X2ZyZWU7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgX2NvcHlfZnJvbV9wYWdlcyhidWYsIHBh Z2VzLCAwLCByZXMueGF0dHJfbGVuKTsNCj4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gwqANCj4gLcKg wqDCoMKgwqDCoMKgbnAgPSBESVZfUk9VTkRfVVAocmVzLnhhdHRyX2xlbiwgUEFHRV9TSVpFKTsN Cj4gK291dF9mcmVlOg0KPiDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKC0tbnAgPj0gMCkNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBfX2ZyZWVfcGFnZShwYWdlc1tucF0pOw0KPiDC oA0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gcmVzLnhhdHRyX2xlbjsNCj4gK8KgwqDCoMKgwqDC oMKga2ZyZWUocGFnZXMpOw0KPiArDQo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7DQo+IMKg fQ0KPiDCoA0KPiDCoHN0YXRpYyBzc2l6ZV90IF9uZnM0Ml9wcm9jX2xpc3R4YXR0cnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZA0KPiAqYnVmLA0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczQy eGRyLmMgYi9mcy9uZnMvbmZzNDJ4ZHIuYw0KPiBpbmRleCA2ZTA2MGE4OGY5OGMuLjhkZmU2NzRk MTMwMSAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL25mczQyeGRyLmMNCj4gKysrIGIvZnMvbmZzL25m czQyeGRyLmMNCj4gQEAgLTQ4OSw2ICs0ODksMTIgQEAgc3RhdGljIGludCBkZWNvZGVfZ2V0eGF0 dHIoc3RydWN0IHhkcl9zdHJlYW0NCj4gKnhkciwNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gLUVJTzsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoGxlbiA9IGJlMzJf dG9fY3B1cChwKTsNCj4gKw0KPiArwqDCoMKgwqDCoMKgwqAvKg0KPiArwqDCoMKgwqDCoMKgwqAg KiBPbmx5IGNoZWNrIGFnYWluc3QgdGhlIHBhZ2UgbGVuZ3RoIGhlcmUuIFRoZSBhY3R1YWwNCj4g K8KgwqDCoMKgwqDCoMKgICogcmVxdWVzdGVkIGxlbmd0aCBtYXkgYmUgc21hbGxlciwgYnV0IHRo YXQgaXMgb25seQ0KPiArwqDCoMKgwqDCoMKgwqAgKiBjaGVja2VkIGFnYWluc3QgYWZ0ZXIgcG9z c2libHkgY2FjaGluZyBhIHZhbGlkIHJlcGx5Lg0KPiArwqDCoMKgwqDCoMKgwqAgKi8NCj4gwqDC oMKgwqDCoMKgwqDCoGlmIChsZW4gPiByZXEtPnJxX3Jjdl9idWYucGFnZV9sZW4pDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FUkFOR0U7DQo+IMKgDQo+IEBAIC0x NDgzLDExICsxNDg5LDE3IEBAIHN0YXRpYyB2b2lkIG5mczRfeGRyX2VuY19nZXR4YXR0cihzdHJ1 Y3QNCj4gcnBjX3Jxc3QgKnJlcSwgc3RydWN0IHhkcl9zdHJlYW0gKnhkciwNCj4gwqDCoMKgwqDC oMKgwqDCoGVuY29kZV9wdXRmaCh4ZHIsIGFyZ3MtPmZoLCAmaGRyKTsNCj4gwqDCoMKgwqDCoMKg wqDCoGVuY29kZV9nZXR4YXR0cih4ZHIsIGFyZ3MtPnhhdHRyX25hbWUsICZoZHIpOw0KPiDCoA0K PiAtwqDCoMKgwqDCoMKgwqBwbGVuID0gYXJncy0+eGF0dHJfbGVuID8gYXJncy0+eGF0dHJfbGVu IDogWEFUVFJfU0laRV9NQVg7DQo+IC0NCj4gLcKgwqDCoMKgwqDCoMKgcnBjX3ByZXBhcmVfcmVw bHlfcGFnZXMocmVxLCBhcmdzLT54YXR0cl9wYWdlcywgMCwgcGxlbiwNCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgIGhkci5yZXBsZW4pOw0KPiAtwqDCoMKgwqDCoMKgwqByZXEtPnJxX3Jjdl9idWYu ZmxhZ3MgfD0gWERSQlVGX1NQQVJTRV9QQUdFUzsNCj4gK8KgwqDCoMKgwqDCoMKgLyoNCj4gK8Kg wqDCoMKgwqDCoMKgICogVGhlIEdFVFhBVFRSIG9wIGhhcyBubyBsZW5ndGggZmllbGQgaW4gdGhl IGNhbGwsIGFuZCB0aGUNCj4gK8KgwqDCoMKgwqDCoMKgICogeGF0dHIgZGF0YSBpcyBhdCB0aGUg ZW5kIG9mIHRoZSByZXBseS4NCj4gK8KgwqDCoMKgwqDCoMKgICoNCj4gK8KgwqDCoMKgwqDCoMKg ICogU2luY2UgdGhlIHBhZ2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCwgdGhlcmUgaXMg bm8NCj4gK8KgwqDCoMKgwqDCoMKgICogZG93bnNpZGUgaW4gdXNpbmcgdGhlIHBhZ2UtYWxpZ25l ZCBsZW5ndGguIEl0IHdpbGwgYWxsb3cNCj4gK8KgwqDCoMKgwqDCoMKgICogcmVjZWl2aW5nIGFu ZCBjYWNoaW5nIHhhdHRycyB0aGF0IGFyZSB0b28gbGFyZ2UgZm9yIHRoZQ0KPiArwqDCoMKgwqDC oMKgwqAgKiBjYWxsZXIgYnV0IHN0aWxsIGZpdCBpbiB0aGUgcGFnZS1yb3VuZGVkIHZhbHVlLg0K PiArwqDCoMKgwqDCoMKgwqAgKi8NCj4gK8KgwqDCoMKgwqDCoMKgcGxlbiA9IHJvdW5kX3VwKGFy Z3MtPnhhdHRyX2xlbiwgUEFHRV9TSVpFKTsNCg0KVGhpcyBpcyB0aGUgd3JvbmcgcGxhY2UgdG8g YmUgcmVjYWxjdWxhdGluZyBwYWdlIGJ1ZmZlciBzaXplcy4gVGhpcw0KZnVuY3Rpb24gc2hvdWxk IGhhdmUgbm8gaWRlYSB3aGF0IHdhcyBhbGxvY2F0ZWQgb3IgYnkgd2hvbS4gUGxlYXNlIGp1c3QN CnNldCB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYXJncy0+eGF0dHJfbGVuIGluIG5mczQyX3Byb2Nf Z2V0eGF0dHIoKS4NCg0KPiArwqDCoMKgwqDCoMKgwqBycGNfcHJlcGFyZV9yZXBseV9wYWdlcyhy ZXEsIGFyZ3MtPnhhdHRyX3BhZ2VzLCAwLCBwbGVuLA0KPiBoZHIucmVwbGVuKTsNCj4gwqANCj4g wqDCoMKgwqDCoMKgwqDCoGVuY29kZV9ub3BzKCZoZHIpOw0KPiDCoH0NCg0KLS0gDQpUcm9uZCBN eWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lciwgSGFtbWVyc3BhY2UNCnRyb25k Lm15a2xlYnVzdEBoYW1tZXJzcGFjZS5jb20NCg0KDQo=