From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758671Ab2EBD5t (ORCPT ); Tue, 1 May 2012 23:57:49 -0400 Received: from mx2.netapp.com ([216.240.18.37]:38654 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755679Ab2EBD5r (ORCPT ); Tue, 1 May 2012 23:57:47 -0400 X-IronPort-AV: E=Sophos;i="4.75,514,1330934400"; d="scan'208";a="644659968" From: "Myklebust, Trond" To: Linus Torvalds CC: Linux NFS mailing list , "Linux Kernel mailing list" Subject: [GIT PULL] Please pull NFS client bugfixes Thread-Topic: [GIT PULL] Please pull NFS client bugfixes Thread-Index: AQHNKBexPsmxPhS6uUCVKnX7EVV/Mw== Date: Wed, 2 May 2012 03:57:27 +0000 Message-ID: <1335931053.4390.2.camel@lade.trondhjem.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.104.60.116] Content-Type: text/plain; charset="utf-8" Content-ID: <6E0D7464304CA04B9A109DB909EF413E@tahoe.netapp.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id q423vwS4018026 Hi Linus, Please pull from the signed tag "nfs-for-3.4-4" in the repository at git pull git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tags/nfs-for-3.4-4 This will update the following files through the appended changesets. Cheers, Trond ---- fs/nfs/blocklayout/blocklayout.c | 4 +- fs/nfs/client.c | 5 +- fs/nfs/idmap.c | 4 + fs/nfs/internal.h | 8 +- fs/nfs/namespace.c | 93 +++++++------------------ fs/nfs/nfs4_fs.h | 10 ++- fs/nfs/nfs4filelayoutdev.c | 2 +- fs/nfs/nfs4namespace.c | 86 +++++++++++++++++++++-- fs/nfs/nfs4proc.c | 142 +++++++++++++++++++++++++++---------- fs/nfs/nfs4xdr.c | 44 ++++++++---- fs/nfs/objlayout/objlayout.c | 2 - fs/nfs/pnfs.c | 2 +- fs/nfs/super.c | 4 +- net/sunrpc/clnt.c | 50 ++++++++++--- net/sunrpc/rpc_pipe.c | 3 +- 15 files changed, 308 insertions(+), 151 deletions(-) commit 3617e5031b3acec04efaa36566a8111ac8f07325 Author: Trond Myklebust Date: Mon Apr 30 12:04:58 2012 -0400 NFSv4.1: Use the correct hostname in the client identifier string We need to use the hostname of the process that created the nfs_client. That hostname is now stored in the rpc_client->cl_nodename. Also remove the utsname()->domainname component. There is no reason to include the NIS/YP domainname in a client identifier string. Signed-off-by: Trond Myklebust commit cbbb34498f8b2b26cbdc79532c8a2ee5cd1e756a Author: Trond Myklebust Date: Mon Apr 30 11:52:40 2012 -0400 SUNRPC: RPC client must use the current utsname hostname string Now that the rpc client is namespace aware, it needs to use the utsname of the process that created it instead of using the init_utsname. Both rpc_new_client and rpc_clone_client need to be fixed. Signed-off-by: Trond Myklebust Cc: Stanislav Kinsbursky commit 71dfc5fa5160bb73752f0731539404569a77faca Author: Stanislav Kinsbursky Date: Sat Apr 28 19:32:21 2012 +0400 NFS: get module in idmap PipeFS notifier callback This is bug fix. Notifier callback is called from SUNRPC module. So before dereferencing NFS module we have to make sure, that it's alive. Signed-off-by: Stanislav Kinsbursky Signed-off-by: Trond Myklebust commit e245d4250d0326cfcf7c816a2081b6ab2ea810be Author: Bryan Schumaker Date: Fri Apr 27 13:27:43 2012 -0400 NFS: Remove unused function nfs_lookup_with_sec() This fixes a compiler warning. Signed-off-by: Bryan Schumaker Signed-off-by: Trond Myklebust commit 7e6eb683d260d9325f0d1bd911518d5ed3cb4f0c Author: Bryan Schumaker Date: Fri Apr 27 13:27:42 2012 -0400 NFS: Honor the authflavor set in the clone mount data The authflavor is set in an nfs_clone_mount structure and passed to the xdev_mount() functions where it was promptly ignored. Instead, use it to initialize an rpc_clnt for the cloned server. Signed-off-by: Bryan Schumaker Signed-off-by: Trond Myklebust commit f05d147f7e3cf0d86b3a4bd5603029a7cb109633 Author: Bryan Schumaker Date: Fri Apr 27 13:27:41 2012 -0400 NFS: Fix following referral mount points with different security I create a new proc_lookup_mountpoint() to use when submounting an NFS v4 share. This function returns an rpc_clnt to use for performing an fs_locations() call on a referral's mountpoint. Signed-off-by: Bryan Schumaker Signed-off-by: Trond Myklebust commit 72de53ec4bca39c26709122a8f78bfefe7b6bca4 Author: Bryan Schumaker Date: Fri Apr 27 13:27:40 2012 -0400 NFS: Do secinfo as part of lookup Whenever lookup sees wrongsec do a secinfo and retry the lookup to find attributes of the file or directory, such as "is this a referral mountpoint?". This also allows me to remove handling -NFS4ERR_WRONSEC as part of getattr xdr decoding. Signed-off-by: Bryan Schumaker Signed-off-by: Trond Myklebust commit db0a9593d52f935c80085d8993bdcead1ad30b0c Author: Bryan Schumaker Date: Fri Apr 27 13:27:39 2012 -0400 NFS: Handle exceptions coming out of nfs4_proc_fs_locations() We don't want to return -NFS4ERR_WRONGSEC to the VFS because it could cause the kernel to oops. Signed-off-by: Bryan Schumaker Signed-off-by: Trond Myklebust commit 31e4dda4747713de13889f7c79c7aec341fea61b Author: Bryan Schumaker Date: Fri Apr 27 13:27:38 2012 -0400 NFS: Fix SECINFO_NO_NAME I was using the same decoder function for SECINFO and SECINFO_NO_NAME, so it was returning an error when it tried to decode an OP_SECINFO_NO_NAME header as OP_SECINFO. Signed-off-by: Bryan Schumaker Signed-off-by: Trond Myklebust commit ea8cfa06795bb30d2ea61f503ef129284492c06a Author: Stanislav Kinsbursky Date: Fri Apr 27 13:00:17 2012 +0400 SUNRPC: traverse clients tree on PipeFS event v2: recursion was replaced by loop If client is a clone, then it's parent can not be in the list. But parent's Pipefs dentries have to be created and destroyed. Note: event skip helper for clients introduced Signed-off-by: Stanislav Kinsbursky Signed-off-by: Trond Myklebust commit 37629b572cc4e80fc24b4139a24df1a89415d534 Author: Stanislav Kinsbursky Date: Fri Apr 20 18:19:56 2012 +0400 SUNRPC: set per-net PipeFS superblock before notification There can be a case, when on MOUNT event RPC client (after it's dentries were created) is not longer hold by anyone except notification callback. I.e. on release this client will be destoroyed. And it's dentries have to be destroyed as well. Which in turn requires per-net PipeFS superblock to be set. Signed-off-by: Stanislav Kinsbursky Signed-off-by: Trond Myklebust commit 7aab449e5a2ebfa9c5116e87e16536bc4195e4de Author: Stanislav Kinsbursky Date: Fri Apr 20 18:19:18 2012 +0400 SUNRPC: skip clients with program without PipeFS entries 1) This is sane. 2) Otherwise there will be soft lockup: do { rpc_get_client_for_event (clnt->cl_dentry == NULL ==> choose) __rpc_pipefs_event (clnt->cl_program->pipe_dir_name == NULL ==> return) } while (1) Signed-off-by: Stanislav Kinsbursky Signed-off-by: Trond Myklebust commit a4dff1bc492ee4a2184d384ae8b5bcab5859e150 Author: Stanislav Kinsbursky Date: Fri Apr 20 18:11:02 2012 +0400 SUNRPC: skip dead but not buried clients on PipeFS events These clients can't be safely dereferenced if their counter in 0. Signed-off-by: Stanislav Kinsbursky Signed-off-by: Trond Myklebust commit 5794d21ef4639f0e33440927bb903f9598c21e92 Author: Sachin Prabhu Date: Tue Apr 17 14:36:40 2012 +0100 Avoid beyond bounds copy while caching ACL When attempting to cache ACLs returned from the server, if the bitmap size + the ACL size is greater than a PAGE_SIZE but the ACL size itself is smaller than a PAGE_SIZE, we can read past the buffer page boundary. Signed-off-by: Sachin Prabhu Reported-by: Jian Li Signed-off-by: Trond Myklebust commit 5a00689930ab975fdd1b37b034475017e460cf2a Author: Sachin Prabhu Date: Tue Apr 17 14:35:39 2012 +0100 Avoid reading past buffer when calling GETACL Bug noticed in commit bf118a342f10dafe44b14451a1392c3254629a1f When calling GETACL, if the size of the bitmap array, the length attribute and the acl returned by the server is greater than the allocated buffer(args.acl_len), we can Oops with a General Protection fault at _copy_from_pages() when we attempt to read past the pages allocated. This patch allocates an extra PAGE for the bitmap and checks to see that the bitmap + attribute_length + ACLs don't exceed the buffer space allocated to it. Signed-off-by: Sachin Prabhu Reported-by: Jian Li [Trond: Fixed a size_t vs unsigned int printk() warning] Signed-off-by: Trond Myklebust commit 10bd295a0b6488ebe634b72a11d8986bd3af3819 Author: Jim Rees Date: Mon Apr 9 22:33:39 2012 -0400 fix page number calculation bug for block layout decode buffer Signed-off-by: Jim Rees Suggested-by: Andy Adamson Suggested-by: Fred Isaman Signed-off-by: Trond Myklebust commit e5265a0c587423bbd21a6b39a572cecff16b9346 Author: Andy Adamson Date: Sat Apr 14 03:56:35 2012 -0400 NFSv4.1 fix page number calculation bug for filelayout decode buffers Signed-off-by: Andy Adamson Signed-off-by: Trond Myklebust commit 9526b2b6d6b9f183b66cf21c4afa6e79d5a14f44 Author: Sachin Bhamare Date: Fri Mar 30 14:29:59 2012 -0700 pnfs-obj: Remove unused variable from objlayout_get_deviceinfo() Local variable 'sb' was not being used in objlayout_get_deviceinfo(). Signed-off-by: Sachin Bhamare Signed-off-by: Boaz Harrosh Signed-off-by: Trond Myklebust commit 1aba1567637b93eee32253b42deaaad381c3175b Author: Weston Andros Adamson Date: Tue Apr 24 16:50:37 2012 -0400 nfs4: fix referrals on mounts that use IPv6 addrs All referrals (IPv4 addr, IPv6 addr, and DNS) are broken on mounts of IPv6 addresses, because validation code uses a path that is parsed from the dev_name (":") by splitting on the first colon and colons are used in IPv6 addrs. This patch ignores colons within IPv6 addresses that are escaped by '[' and ']'. Signed-off-by: Weston Andros Adamson Signed-off-by: Trond Myklebust -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx2.netapp.com ([216.240.18.37]:38654 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755679Ab2EBD5r (ORCPT ); Tue, 1 May 2012 23:57:47 -0400 From: "Myklebust, Trond" To: Linus Torvalds CC: Linux NFS mailing list , "Linux Kernel mailing list" Subject: [GIT PULL] Please pull NFS client bugfixes Date: Wed, 2 May 2012 03:57:27 +0000 Message-ID: <1335931053.4390.2.camel@lade.trondhjem.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org List-ID: SGkgTGludXMsDQoNClBsZWFzZSBwdWxsIGZyb20gdGhlIHNpZ25lZCB0YWcgIm5mcy1mb3ItMy40 LTQiIGluIHRoZSByZXBvc2l0b3J5IGF0DQoNCiAgIGdpdCBwdWxsIGdpdDovL2dpdC5saW51eC1u ZnMub3JnL3Byb2plY3RzL3Ryb25kbXkvbGludXgtbmZzLmdpdCB0YWdzL25mcy1mb3ItMy40LTQN Cg0KVGhpcyB3aWxsIHVwZGF0ZSB0aGUgZm9sbG93aW5nIGZpbGVzIHRocm91Z2ggdGhlIGFwcGVu ZGVkIGNoYW5nZXNldHMuDQoNCiAgQ2hlZXJzLA0KICAgIFRyb25kDQoNCi0tLS0NCiBmcy9uZnMv YmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQuYyB8ICAgIDQgKy0NCiBmcy9uZnMvY2xpZW50LmMgICAg ICAgICAgICAgICAgICB8ICAgIDUgKy0NCiBmcy9uZnMvaWRtYXAuYyAgICAgICAgICAgICAgICAg ICB8ICAgIDQgKw0KIGZzL25mcy9pbnRlcm5hbC5oICAgICAgICAgICAgICAgIHwgICAgOCArLQ0K IGZzL25mcy9uYW1lc3BhY2UuYyAgICAgICAgICAgICAgIHwgICA5MyArKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tDQogZnMvbmZzL25mczRfZnMuaCAgICAgICAgICAgICAgICAgfCAgIDEwICsrLQ0K IGZzL25mcy9uZnM0ZmlsZWxheW91dGRldi5jICAgICAgIHwgICAgMiArLQ0KIGZzL25mcy9uZnM0 bmFtZXNwYWNlLmMgICAgICAgICAgIHwgICA4NiArKysrKysrKysrKysrKysrKysrKystLQ0KIGZz L25mcy9uZnM0cHJvYy5jICAgICAgICAgICAgICAgIHwgIDE0MiArKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tDQogZnMvbmZzL25mczR4ZHIuYyAgICAgICAgICAgICAgICAgfCAg IDQ0ICsrKysrKysrLS0tLQ0KIGZzL25mcy9vYmpsYXlvdXQvb2JqbGF5b3V0LmMgICAgIHwgICAg MiAtDQogZnMvbmZzL3BuZnMuYyAgICAgICAgICAgICAgICAgICAgfCAgICAyICstDQogZnMvbmZz L3N1cGVyLmMgICAgICAgICAgICAgICAgICAgfCAgICA0ICstDQogbmV0L3N1bnJwYy9jbG50LmMg ICAgICAgICAgICAgICAgfCAgIDUwICsrKysrKysrKystLS0NCiBuZXQvc3VucnBjL3JwY19waXBl LmMgICAgICAgICAgICB8ICAgIDMgKy0NCiAxNSBmaWxlcyBjaGFuZ2VkLCAzMDggaW5zZXJ0aW9u cygrKSwgMTUxIGRlbGV0aW9ucygtKQ0KDQpjb21taXQgMzYxN2U1MDMxYjNhY2VjMDRlZmFhMzY1 NjZhODExMWFjOGYwNzMyNQ0KQXV0aG9yOiBUcm9uZCBNeWtsZWJ1c3QgPFRyb25kLk15a2xlYnVz dEBuZXRhcHAuY29tPg0KRGF0ZTogICBNb24gQXByIDMwIDEyOjA0OjU4IDIwMTIgLTA0MDANCg0K ICAgIE5GU3Y0LjE6IFVzZSB0aGUgY29ycmVjdCBob3N0bmFtZSBpbiB0aGUgY2xpZW50IGlkZW50 aWZpZXIgc3RyaW5nDQogICAgDQogICAgV2UgbmVlZCB0byB1c2UgdGhlIGhvc3RuYW1lIG9mIHRo ZSBwcm9jZXNzIHRoYXQgY3JlYXRlZCB0aGUgbmZzX2NsaWVudC4NCiAgICBUaGF0IGhvc3RuYW1l IGlzIG5vdyBzdG9yZWQgaW4gdGhlIHJwY19jbGllbnQtPmNsX25vZGVuYW1lLg0KICAgIA0KICAg IEFsc28gcmVtb3ZlIHRoZSB1dHNuYW1lKCktPmRvbWFpbm5hbWUgY29tcG9uZW50LiBUaGVyZSBp cyBubyByZWFzb24NCiAgICB0byBpbmNsdWRlIHRoZSBOSVMvWVAgZG9tYWlubmFtZSBpbiBhIGNs aWVudCBpZGVudGlmaWVyIHN0cmluZy4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBUcm9uZCBN eWtsZWJ1c3QgPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KDQpjb21taXQgY2JiYjM0NDk4 ZjhiMmIyNmNiZGM3OTUzMmM4YTJlZTVjZDFlNzU2YQ0KQXV0aG9yOiBUcm9uZCBNeWtsZWJ1c3Qg PFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KRGF0ZTogICBNb24gQXByIDMwIDExOjUyOjQw IDIwMTIgLTA0MDANCg0KICAgIFNVTlJQQzogUlBDIGNsaWVudCBtdXN0IHVzZSB0aGUgY3VycmVu dCB1dHNuYW1lIGhvc3RuYW1lIHN0cmluZw0KICAgIA0KICAgIE5vdyB0aGF0IHRoZSBycGMgY2xp ZW50IGlzIG5hbWVzcGFjZSBhd2FyZSwgaXQgbmVlZHMgdG8gdXNlIHRoZQ0KICAgIHV0c25hbWUg b2YgdGhlIHByb2Nlc3MgdGhhdCBjcmVhdGVkIGl0IGluc3RlYWQgb2YgdXNpbmcgdGhlDQogICAg aW5pdF91dHNuYW1lLiBCb3RoIHJwY19uZXdfY2xpZW50IGFuZCBycGNfY2xvbmVfY2xpZW50IG5l ZWQgdG8NCiAgICBiZSBmaXhlZC4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBUcm9uZCBNeWts ZWJ1c3QgPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KICAgIENjOiBTdGFuaXNsYXYgS2lu c2J1cnNreSA8c2tpbnNidXJza3lAcGFyYWxsZWxzLmNvbT4NCg0KY29tbWl0IDcxZGZjNWZhNTE2 MGJiNzM3NTJmMDczMTUzOTQwNDU2OWE3N2ZhY2ENCkF1dGhvcjogU3RhbmlzbGF2IEtpbnNidXJz a3kgPHNraW5zYnVyc2t5QHBhcmFsbGVscy5jb20+DQpEYXRlOiAgIFNhdCBBcHIgMjggMTk6MzI6 MjEgMjAxMiArMDQwMA0KDQogICAgTkZTOiBnZXQgbW9kdWxlIGluIGlkbWFwIFBpcGVGUyBub3Rp ZmllciBjYWxsYmFjaw0KICAgIA0KICAgIFRoaXMgaXMgYnVnIGZpeC4NCiAgICBOb3RpZmllciBj YWxsYmFjayBpcyBjYWxsZWQgZnJvbSBTVU5SUEMgbW9kdWxlLiBTbyBiZWZvcmUgZGVyZWZlcmVu Y2luZyBORlMNCiAgICBtb2R1bGUgd2UgaGF2ZSB0byBtYWtlIHN1cmUsIHRoYXQgaXQncyBhbGl2 ZS4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYgS2luc2J1cnNreSA8c2tpbnNi dXJza3lAcGFyYWxsZWxzLmNvbT4NCiAgICBTaWduZWQtb2ZmLWJ5OiBUcm9uZCBNeWtsZWJ1c3Qg PFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KDQpjb21taXQgZTI0NWQ0MjUwZDAzMjZjZmNm N2M4MTZhMjA4MWI2YWIyZWE4MTBiZQ0KQXV0aG9yOiBCcnlhbiBTY2h1bWFrZXIgPGJqc2NodW1h QG5ldGFwcC5jb20+DQpEYXRlOiAgIEZyaSBBcHIgMjcgMTM6Mjc6NDMgMjAxMiAtMDQwMA0KDQog ICAgTkZTOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9uIG5mc19sb29rdXBfd2l0aF9zZWMoKQ0KICAg IA0KICAgIFRoaXMgZml4ZXMgYSBjb21waWxlciB3YXJuaW5nLg0KICAgIA0KICAgIFNpZ25lZC1v ZmYtYnk6IEJyeWFuIFNjaHVtYWtlciA8YmpzY2h1bWFAbmV0YXBwLmNvbT4NCiAgICBTaWduZWQt b2ZmLWJ5OiBUcm9uZCBNeWtsZWJ1c3QgPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KDQpj b21taXQgN2U2ZWI2ODNkMjYwZDkzMjVmMGQxYmQ5MTE1MThkNWVkM2NiNGYwYw0KQXV0aG9yOiBC cnlhbiBTY2h1bWFrZXIgPGJqc2NodW1hQG5ldGFwcC5jb20+DQpEYXRlOiAgIEZyaSBBcHIgMjcg MTM6Mjc6NDIgMjAxMiAtMDQwMA0KDQogICAgTkZTOiBIb25vciB0aGUgYXV0aGZsYXZvciBzZXQg aW4gdGhlIGNsb25lIG1vdW50IGRhdGENCiAgICANCiAgICBUaGUgYXV0aGZsYXZvciBpcyBzZXQg aW4gYW4gbmZzX2Nsb25lX21vdW50IHN0cnVjdHVyZSBhbmQgcGFzc2VkIHRvIHRoZQ0KICAgIHhk ZXZfbW91bnQoKSBmdW5jdGlvbnMgd2hlcmUgaXQgd2FzIHByb21wdGx5IGlnbm9yZWQuICBJbnN0 ZWFkLCB1c2UgaXQNCiAgICB0byBpbml0aWFsaXplIGFuIHJwY19jbG50IGZvciB0aGUgY2xvbmVk IHNlcnZlci4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBTY2h1bWFrZXIgPGJqc2No dW1hQG5ldGFwcC5jb20+DQogICAgU2lnbmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0IDxUcm9u ZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbT4NCg0KY29tbWl0IGYwNWQxNDdmN2UzY2YwZDg2YjNhNGJk NTYwMzAyOWE3Y2IxMDk2MzMNCkF1dGhvcjogQnJ5YW4gU2NodW1ha2VyIDxianNjaHVtYUBuZXRh cHAuY29tPg0KRGF0ZTogICBGcmkgQXByIDI3IDEzOjI3OjQxIDIwMTIgLTA0MDANCg0KICAgIE5G UzogRml4IGZvbGxvd2luZyByZWZlcnJhbCBtb3VudCBwb2ludHMgd2l0aCBkaWZmZXJlbnQgc2Vj dXJpdHkNCiAgICANCiAgICBJIGNyZWF0ZSBhIG5ldyBwcm9jX2xvb2t1cF9tb3VudHBvaW50KCkg dG8gdXNlIHdoZW4gc3VibW91bnRpbmcgYW4gTkZTDQogICAgdjQgc2hhcmUuICBUaGlzIGZ1bmN0 aW9uIHJldHVybnMgYW4gcnBjX2NsbnQgdG8gdXNlIGZvciBwZXJmb3JtaW5nIGFuDQogICAgZnNf bG9jYXRpb25zKCkgY2FsbCBvbiBhIHJlZmVycmFsJ3MgbW91bnRwb2ludC4NCiAgICANCiAgICBT aWduZWQtb2ZmLWJ5OiBCcnlhbiBTY2h1bWFrZXIgPGJqc2NodW1hQG5ldGFwcC5jb20+DQogICAg U2lnbmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0IDxUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNv bT4NCg0KY29tbWl0IDcyZGU1M2VjNGJjYTM5YzI2NzA5MTIyYThmNzhiZmVmZTdiNmJjYTQNCkF1 dGhvcjogQnJ5YW4gU2NodW1ha2VyIDxianNjaHVtYUBuZXRhcHAuY29tPg0KRGF0ZTogICBGcmkg QXByIDI3IDEzOjI3OjQwIDIwMTIgLTA0MDANCg0KICAgIE5GUzogRG8gc2VjaW5mbyBhcyBwYXJ0 IG9mIGxvb2t1cA0KICAgIA0KICAgIFdoZW5ldmVyIGxvb2t1cCBzZWVzIHdyb25nc2VjIGRvIGEg c2VjaW5mbyBhbmQgcmV0cnkgdGhlIGxvb2t1cCB0byBmaW5kDQogICAgYXR0cmlidXRlcyBvZiB0 aGUgZmlsZSBvciBkaXJlY3RvcnksIHN1Y2ggYXMgImlzIHRoaXMgYSByZWZlcnJhbA0KICAgIG1v dW50cG9pbnQ/Ii4gIFRoaXMgYWxzbyBhbGxvd3MgbWUgdG8gcmVtb3ZlIGhhbmRsaW5nIC1ORlM0 RVJSX1dST05TRUMNCiAgICBhcyBwYXJ0IG9mIGdldGF0dHIgeGRyIGRlY29kaW5nLg0KICAgIA0K ICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFNjaHVtYWtlciA8YmpzY2h1bWFAbmV0YXBwLmNvbT4N CiAgICBTaWduZWQtb2ZmLWJ5OiBUcm9uZCBNeWtsZWJ1c3QgPFRyb25kLk15a2xlYnVzdEBuZXRh cHAuY29tPg0KDQpjb21taXQgZGIwYTk1OTNkNTJmOTM1YzgwMDg1ZDg5OTNiZGNlYWQxYWQzMGIw Yw0KQXV0aG9yOiBCcnlhbiBTY2h1bWFrZXIgPGJqc2NodW1hQG5ldGFwcC5jb20+DQpEYXRlOiAg IEZyaSBBcHIgMjcgMTM6Mjc6MzkgMjAxMiAtMDQwMA0KDQogICAgTkZTOiBIYW5kbGUgZXhjZXB0 aW9ucyBjb21pbmcgb3V0IG9mIG5mczRfcHJvY19mc19sb2NhdGlvbnMoKQ0KICAgIA0KICAgIFdl IGRvbid0IHdhbnQgdG8gcmV0dXJuIC1ORlM0RVJSX1dST05HU0VDIHRvIHRoZSBWRlMgYmVjYXVz ZSBpdCBjb3VsZA0KICAgIGNhdXNlIHRoZSBrZXJuZWwgdG8gb29wcy4NCiAgICANCiAgICBTaWdu ZWQtb2ZmLWJ5OiBCcnlhbiBTY2h1bWFrZXIgPGJqc2NodW1hQG5ldGFwcC5jb20+DQogICAgU2ln bmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0IDxUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbT4N Cg0KY29tbWl0IDMxZTRkZGE0NzQ3NzEzZGUxMzg4OWY3Yzc5YzdhZWMzNDFmZWE2MWINCkF1dGhv cjogQnJ5YW4gU2NodW1ha2VyIDxianNjaHVtYUBuZXRhcHAuY29tPg0KRGF0ZTogICBGcmkgQXBy IDI3IDEzOjI3OjM4IDIwMTIgLTA0MDANCg0KICAgIE5GUzogRml4IFNFQ0lORk9fTk9fTkFNRQ0K ICAgIA0KICAgIEkgd2FzIHVzaW5nIHRoZSBzYW1lIGRlY29kZXIgZnVuY3Rpb24gZm9yIFNFQ0lO Rk8gYW5kIFNFQ0lORk9fTk9fTkFNRSwNCiAgICBzbyBpdCB3YXMgcmV0dXJuaW5nIGFuIGVycm9y IHdoZW4gaXQgdHJpZWQgdG8gZGVjb2RlIGFuIE9QX1NFQ0lORk9fTk9fTkFNRQ0KICAgIGhlYWRl ciBhcyBPUF9TRUNJTkZPLg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFNjaHVtYWtl ciA8YmpzY2h1bWFAbmV0YXBwLmNvbT4NCiAgICBTaWduZWQtb2ZmLWJ5OiBUcm9uZCBNeWtsZWJ1 c3QgPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KDQpjb21taXQgZWE4Y2ZhMDY3OTViYjMw ZDJlYTYxZjUwM2VmMTI5Mjg0NDkyYzA2YQ0KQXV0aG9yOiBTdGFuaXNsYXYgS2luc2J1cnNreSA8 c2tpbnNidXJza3lAcGFyYWxsZWxzLmNvbT4NCkRhdGU6ICAgRnJpIEFwciAyNyAxMzowMDoxNyAy MDEyICswNDAwDQoNCiAgICBTVU5SUEM6IHRyYXZlcnNlIGNsaWVudHMgdHJlZSBvbiBQaXBlRlMg ZXZlbnQNCiAgICANCiAgICB2MjogcmVjdXJzaW9uIHdhcyByZXBsYWNlZCBieSBsb29wDQogICAg DQogICAgSWYgY2xpZW50IGlzIGEgY2xvbmUsIHRoZW4gaXQncyBwYXJlbnQgY2FuIG5vdCBiZSBp biB0aGUgbGlzdC4NCiAgICBCdXQgcGFyZW50J3MgUGlwZWZzIGRlbnRyaWVzIGhhdmUgdG8gYmUg Y3JlYXRlZCBhbmQgZGVzdHJveWVkLg0KICAgIA0KICAgIE5vdGU6IGV2ZW50IHNraXAgaGVscGVy IGZvciBjbGllbnRzIGludHJvZHVjZWQNCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNs YXYgS2luc2J1cnNreSA8c2tpbnNidXJza3lAcGFyYWxsZWxzLmNvbT4NCiAgICBTaWduZWQtb2Zm LWJ5OiBUcm9uZCBNeWtsZWJ1c3QgPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KDQpjb21t aXQgMzc2MjliNTcyY2M0ZTgwZmMyNGI0MTM5YTI0ZGYxYTg5NDE1ZDUzNA0KQXV0aG9yOiBTdGFu aXNsYXYgS2luc2J1cnNreSA8c2tpbnNidXJza3lAcGFyYWxsZWxzLmNvbT4NCkRhdGU6ICAgRnJp IEFwciAyMCAxODoxOTo1NiAyMDEyICswNDAwDQoNCiAgICBTVU5SUEM6IHNldCBwZXItbmV0IFBp cGVGUyBzdXBlcmJsb2NrIGJlZm9yZSBub3RpZmljYXRpb24NCiAgICANCiAgICBUaGVyZSBjYW4g YmUgYSBjYXNlLCB3aGVuIG9uIE1PVU5UIGV2ZW50IFJQQyBjbGllbnQgKGFmdGVyIGl0J3MgZGVu dHJpZXMgd2VyZQ0KICAgIGNyZWF0ZWQpIGlzIG5vdCBsb25nZXIgaG9sZCBieSBhbnlvbmUgZXhj ZXB0IG5vdGlmaWNhdGlvbiBjYWxsYmFjay4NCiAgICBJLmUuIG9uIHJlbGVhc2UgdGhpcyBjbGll bnQgd2lsbCBiZSBkZXN0b3JveWVkLiBBbmQgaXQncyBkZW50cmllcyBoYXZlIHRvIGJlDQogICAg ZGVzdHJveWVkIGFzIHdlbGwuIFdoaWNoIGluIHR1cm4gcmVxdWlyZXMgcGVyLW5ldCBQaXBlRlMg c3VwZXJibG9jayB0byBiZSBzZXQuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2 IEtpbnNidXJza3kgPHNraW5zYnVyc2t5QHBhcmFsbGVscy5jb20+DQogICAgU2lnbmVkLW9mZi1i eTogVHJvbmQgTXlrbGVidXN0IDxUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbT4NCg0KY29tbWl0 IDdhYWI0NDllNWEyZWJmYTljNTExNmU4N2UxNjUzNmJjNDE5NWU0ZGUNCkF1dGhvcjogU3Rhbmlz bGF2IEtpbnNidXJza3kgPHNraW5zYnVyc2t5QHBhcmFsbGVscy5jb20+DQpEYXRlOiAgIEZyaSBB cHIgMjAgMTg6MTk6MTggMjAxMiArMDQwMA0KDQogICAgU1VOUlBDOiBza2lwIGNsaWVudHMgd2l0 aCBwcm9ncmFtIHdpdGhvdXQgUGlwZUZTIGVudHJpZXMNCiAgICANCiAgICAxKSBUaGlzIGlzIHNh bmUuDQogICAgMikgT3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUgc29mdCBsb2NrdXA6DQogICAgDQog ICAgZG8gew0KICAgIAlycGNfZ2V0X2NsaWVudF9mb3JfZXZlbnQgKGNsbnQtPmNsX2RlbnRyeSA9 PSBOVUxMID09PiBjaG9vc2UpDQogICAgCV9fcnBjX3BpcGVmc19ldmVudCAoY2xudC0+Y2xfcHJv Z3JhbS0+cGlwZV9kaXJfbmFtZSA9PSBOVUxMID09PiByZXR1cm4pDQogICAgfSB3aGlsZSAoMSkN CiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYgS2luc2J1cnNreSA8c2tpbnNidXJz a3lAcGFyYWxsZWxzLmNvbT4NCiAgICBTaWduZWQtb2ZmLWJ5OiBUcm9uZCBNeWtsZWJ1c3QgPFRy b25kLk15a2xlYnVzdEBuZXRhcHAuY29tPg0KDQpjb21taXQgYTRkZmYxYmM0OTJlZTRhMjE4NGQz ODRhZThiNWJjYWI1ODU5ZTE1MA0KQXV0aG9yOiBTdGFuaXNsYXYgS2luc2J1cnNreSA8c2tpbnNi dXJza3lAcGFyYWxsZWxzLmNvbT4NCkRhdGU6ICAgRnJpIEFwciAyMCAxODoxMTowMiAyMDEyICsw NDAwDQoNCiAgICBTVU5SUEM6IHNraXAgZGVhZCBidXQgbm90IGJ1cmllZCBjbGllbnRzIG9uIFBp cGVGUyBldmVudHMNCiAgICANCiAgICBUaGVzZSBjbGllbnRzIGNhbid0IGJlIHNhZmVseSBkZXJl ZmVyZW5jZWQgaWYgdGhlaXIgY291bnRlciBpbiAwLg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6 IFN0YW5pc2xhdiBLaW5zYnVyc2t5IDxza2luc2J1cnNreUBwYXJhbGxlbHMuY29tPg0KICAgIFNp Z25lZC1vZmYtYnk6IFRyb25kIE15a2xlYnVzdCA8VHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20+ DQoNCmNvbW1pdCA1Nzk0ZDIxZWY0NjM5ZjBlMzM0NDA5MjdiYjkwM2Y5NTk4YzIxZTkyDQpBdXRo b3I6IFNhY2hpbiBQcmFiaHUgPHNwcmFiaHVAcmVkaGF0LmNvbT4NCkRhdGU6ICAgVHVlIEFwciAx NyAxNDozNjo0MCAyMDEyICswMTAwDQoNCiAgICBBdm9pZCBiZXlvbmQgYm91bmRzIGNvcHkgd2hp bGUgY2FjaGluZyBBQ0wNCiAgICANCiAgICBXaGVuIGF0dGVtcHRpbmcgdG8gY2FjaGUgQUNMcyBy ZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIsIGlmIHRoZSBiaXRtYXANCiAgICBzaXplICsgdGhlIEFD TCBzaXplIGlzIGdyZWF0ZXIgdGhhbiBhIFBBR0VfU0laRSBidXQgdGhlIEFDTCBzaXplIGl0c2Vs Zg0KICAgIGlzIHNtYWxsZXIgdGhhbiBhIFBBR0VfU0laRSwgd2UgY2FuIHJlYWQgcGFzdCB0aGUg YnVmZmVyIHBhZ2UgYm91bmRhcnkuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogU2FjaGluIFBy YWJodSA8c3ByYWJodUByZWRoYXQuY29tPg0KICAgIFJlcG9ydGVkLWJ5OiBKaWFuIExpIDxqaWFs aUByZWRoYXQuY29tPg0KICAgIFNpZ25lZC1vZmYtYnk6IFRyb25kIE15a2xlYnVzdCA8VHJvbmQu TXlrbGVidXN0QG5ldGFwcC5jb20+DQoNCmNvbW1pdCA1YTAwNjg5OTMwYWI5NzVmZGQxYjM3YjAz NDQ3NTAxN2U0NjBjZjJhDQpBdXRob3I6IFNhY2hpbiBQcmFiaHUgPHNwcmFiaHVAcmVkaGF0LmNv bT4NCkRhdGU6ICAgVHVlIEFwciAxNyAxNDozNTozOSAyMDEyICswMTAwDQoNCiAgICBBdm9pZCBy ZWFkaW5nIHBhc3QgYnVmZmVyIHdoZW4gY2FsbGluZyBHRVRBQ0wNCiAgICANCiAgICBCdWcgbm90 aWNlZCBpbiBjb21taXQNCiAgICBiZjExOGEzNDJmMTBkYWZlNDRiMTQ0NTFhMTM5MmMzMjU0NjI5 YTFmDQogICAgDQogICAgV2hlbiBjYWxsaW5nIEdFVEFDTCwgaWYgdGhlIHNpemUgb2YgdGhlIGJp dG1hcCBhcnJheSwgdGhlIGxlbmd0aA0KICAgIGF0dHJpYnV0ZSBhbmQgdGhlIGFjbCByZXR1cm5l ZCBieSB0aGUgc2VydmVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUNCiAgICBhbGxvY2F0ZWQgYnVmZmVy KGFyZ3MuYWNsX2xlbiksIHdlIGNhbiBPb3BzIHdpdGggYSBHZW5lcmFsIFByb3RlY3Rpb24NCiAg ICBmYXVsdCBhdCBfY29weV9mcm9tX3BhZ2VzKCkgd2hlbiB3ZSBhdHRlbXB0IHRvIHJlYWQgcGFz dCB0aGUgcGFnZXMNCiAgICBhbGxvY2F0ZWQuDQogICAgDQogICAgVGhpcyBwYXRjaCBhbGxvY2F0 ZXMgYW4gZXh0cmEgUEFHRSBmb3IgdGhlIGJpdG1hcCBhbmQgY2hlY2tzIHRvIHNlZSB0aGF0DQog ICAgdGhlIGJpdG1hcCArIGF0dHJpYnV0ZV9sZW5ndGggKyBBQ0xzIGRvbid0IGV4Y2VlZCB0aGUg YnVmZmVyIHNwYWNlDQogICAgYWxsb2NhdGVkIHRvIGl0Lg0KICAgIA0KICAgIFNpZ25lZC1vZmYt Ynk6IFNhY2hpbiBQcmFiaHUgPHNwcmFiaHVAcmVkaGF0LmNvbT4NCiAgICBSZXBvcnRlZC1ieTog SmlhbiBMaSA8amlhbGlAcmVkaGF0LmNvbT4NCiAgICBbVHJvbmQ6IEZpeGVkIGEgc2l6ZV90IHZz IHVuc2lnbmVkIGludCBwcmludGsoKSB3YXJuaW5nXQ0KICAgIFNpZ25lZC1vZmYtYnk6IFRyb25k IE15a2xlYnVzdCA8VHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20+DQoNCmNvbW1pdCAxMGJkMjk1 YTBiNjQ4OGViZTYzNGI3MmExMWQ4OTg2YmQzYWYzODE5DQpBdXRob3I6IEppbSBSZWVzIDxyZWVz QHVtaWNoLmVkdT4NCkRhdGU6ICAgTW9uIEFwciA5IDIyOjMzOjM5IDIwMTIgLTA0MDANCg0KICAg IGZpeCBwYWdlIG51bWJlciBjYWxjdWxhdGlvbiBidWcgZm9yIGJsb2NrIGxheW91dCBkZWNvZGUg YnVmZmVyDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogSmltIFJlZXMgPHJlZXNAdW1pY2guZWR1 Pg0KICAgIFN1Z2dlc3RlZC1ieTogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCiAg ICBTdWdnZXN0ZWQtYnk6IEZyZWQgSXNhbWFuIDxpaXNhbWFuQG5ldGFwcC5jb20+DQogICAgU2ln bmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0IDxUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbT4N Cg0KY29tbWl0IGU1MjY1YTBjNTg3NDIzYmJkMjFhNmIzOWE1NzJjZWNmZjE2YjkzNDYNCkF1dGhv cjogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCkRhdGU6ICAgU2F0IEFwciAxNCAw Mzo1NjozNSAyMDEyIC0wNDAwDQoNCiAgICBORlN2NC4xIGZpeCBwYWdlIG51bWJlciBjYWxjdWxh dGlvbiBidWcgZm9yIGZpbGVsYXlvdXQgZGVjb2RlIGJ1ZmZlcnMNCiAgICANCiAgICBTaWduZWQt b2ZmLWJ5OiBBbmR5IEFkYW1zb24gPGFuZHJvc0BuZXRhcHAuY29tPg0KICAgIFNpZ25lZC1vZmYt Ynk6IFRyb25kIE15a2xlYnVzdCA8VHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20+DQoNCmNvbW1p dCA5NTI2YjJiNmQ2YjlmMTgzYjY2Y2YyMWM0YWZhNmU3OWQ1YTE0ZjQ0DQpBdXRob3I6IFNhY2hp biBCaGFtYXJlIDxzYmhhbWFyZUBwYW5hc2FzLmNvbT4NCkRhdGU6ICAgRnJpIE1hciAzMCAxNDoy OTo1OSAyMDEyIC0wNzAwDQoNCiAgICBwbmZzLW9iajogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBm cm9tIG9iamxheW91dF9nZXRfZGV2aWNlaW5mbygpDQogICAgDQogICAgTG9jYWwgdmFyaWFibGUg J3NiJyB3YXMgbm90IGJlaW5nIHVzZWQgaW4gb2JqbGF5b3V0X2dldF9kZXZpY2VpbmZvKCkuDQog ICAgDQogICAgU2lnbmVkLW9mZi1ieTogU2FjaGluIEJoYW1hcmUgPHNiaGFtYXJlQHBhbmFzYXMu Y29tPg0KICAgIFNpZ25lZC1vZmYtYnk6IEJvYXogSGFycm9zaCA8YmhhcnJvc2hAcGFuYXNhcy5j b20+DQogICAgU2lnbmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0IDxUcm9uZC5NeWtsZWJ1c3RA bmV0YXBwLmNvbT4NCg0KY29tbWl0IDFhYmExNTY3NjM3YjkzZWVlMzIyNTNiNDJkZWFhYWQzODFj MzE3NWINCkF1dGhvcjogV2VzdG9uIEFuZHJvcyBBZGFtc29uIDxkcm9zQG5ldGFwcC5jb20+DQpE YXRlOiAgIFR1ZSBBcHIgMjQgMTY6NTA6MzcgMjAxMiAtMDQwMA0KDQogICAgbmZzNDogZml4IHJl ZmVycmFscyBvbiBtb3VudHMgdGhhdCB1c2UgSVB2NiBhZGRycw0KICAgIA0KICAgIEFsbCByZWZl cnJhbHMgKElQdjQgYWRkciwgSVB2NiBhZGRyLCBhbmQgRE5TKSBhcmUgYnJva2VuIG9uIG1vdW50 cyBvZg0KICAgIElQdjYgYWRkcmVzc2VzLCBiZWNhdXNlIHZhbGlkYXRpb24gY29kZSB1c2VzIGEg cGF0aCB0aGF0IGlzIHBhcnNlZA0KICAgIGZyb20gdGhlIGRldl9uYW1lICgiPHNlcnZlcj46PHBh dGg+IikgYnkgc3BsaXR0aW5nIG9uIHRoZSBmaXJzdCBjb2xvbiBhbmQNCiAgICBjb2xvbnMgYXJl IHVzZWQgaW4gSVB2NiBhZGRycy4NCiAgICBUaGlzIHBhdGNoIGlnbm9yZXMgY29sb25zIHdpdGhp biBJUHY2IGFkZHJlc3NlcyB0aGF0IGFyZSBlc2NhcGVkIGJ5ICdbJyBhbmQgJ10nLg0KICAgIA0K ICAgIFNpZ25lZC1vZmYtYnk6IFdlc3RvbiBBbmRyb3MgQWRhbXNvbiA8ZHJvc0BuZXRhcHAuY29t Pg0KICAgIFNpZ25lZC1vZmYtYnk6IFRyb25kIE15a2xlYnVzdCA8VHJvbmQuTXlrbGVidXN0QG5l dGFwcC5jb20+DQoNCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFp bnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQp3d3cubmV0YXBw LmNvbQ0KDQo=