diff for duplicates of <1481844847.11785.3.camel@primarydata.com> diff --git a/a/1.txt b/N1/1.txt index a44d8e6..aeb114c 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,181 +1,200 @@ -SGkgTGludXMsDQoNClRoZSBmb2xsb3dpbmcgY2hhbmdlcyBzaW5jZSBjb21taXQgZTU1MTdjMmE1 -YTQ5ZWQ1ZTk5MDQ3MDA4NjI5ZjFjZDYwMjQ2ZWEwZToNCg0KICBMaW51eCA0LjktcmM3ICgyMDE2 -LTExLTI3IDEzOjA4OjA0IC0wODAwKQ0KDQphcmUgYXZhaWxhYmxlIGluIHRoZSBnaXQgcmVwb3Np -dG9yeSBhdDoNCg0KICBnaXQ6Ly9naXQubGludXgtbmZzLm9yZy9wcm9qZWN0cy90cm9uZG15L2xp -bnV4LW5mcy5naXQgdGFncy9uZnMtZm9yLTQuMTAtMQ0KDQpmb3IgeW91IHRvIGZldGNoIGNoYW5n -ZXMgdXAgdG8gMjU0OWYzMDdiNTk5N2JmNWRkOTEwNzE0MjhlODA5MGQ5ZmFhOGIxYjoNCg0KICBN -ZXJnZSB0YWcgJ25mcy1yZG1hLTQuMTAtMScgb2YgZ2l0Oi8vZ2l0LmxpbnV4LW5mcy5vcmcvcHJv -amVjdHMvYW5uYS9uZnMtcmRtYSAoMjAxNi0xMi0xMCAxMDozMTo0NCAtMDUwMCkNCg0KQ2hlZXJz -DQogIFRyb25kDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5GUyBjbGllbnQgdXBkYXRlcyBmb3IgTGludXggNC4xMA0K -DQpIaWdobGlnaHRzIGluY2x1ZGU6DQoNClN0YWJsZSBidWdmaXhlczoNCiAtIEZpeCBhIHBuZnMg -ZGVhZGxvY2sgYmV0d2VlbiByZWFkIHJlc2VuZHMgYW5kIGxheW91dHJldHVybg0KIC0gRG9uJ3Qg -aW52YWxpZGF0ZSB0aGUgbGF5b3V0IHN0YXRlaWQgd2hpbGUgYSBsYXlvdXQgcmV0dXJuIGlzIG91 -dHN0YW5kaW5nDQogLSBEb24ndCBzY2hlZHVsZSBhIGxheW91dHJldHVybiBpZiB0aGUgbGF5b3V0 -IHN0YXRlaWQgaXMgbWFya2VkIGFzIGludmFsaWQNCiAtIE9uIGEgcE5GUyBlcnJvciwgZG8gbm90 -IHNlbmQgTEFZT1VUR0VUIHVudGlsIHRoZSBMQVlPVVRSRVRVUk4gaXMgY29tcGxldGUNCiAtIFNV -TlJQQzogZml4IHJlZmNvdW50aW5nIHByb2JsZW1zIHdpdGggYXV0aF9nc3MgbWVzc2FnZXMuDQoN -CkZlYXR1cmVzOg0KIC0gQWRkIGNsaWVudCBzdXBwb3J0IGZvciB0aGUgTkZTdjQgdW1hc2sgYXR0 -cmlidXRlLg0KIC0gTkZTdjQ6IENvcnJlY3Qgc3VwcG9ydCBmb3IgZmxvY2soKSBzdGF0ZWlkcy4N -CiAtIEFkZCBhIExBWU9VVFJFVFVSTiBvcGVyYXRpb24gdG8gQ0xPU0UgYW5kIERFTEVHUkVUVVJO -IHdoZW4gcmV0dXJuLW9uLWNsb3NlDQogICBpcyBzcGVjaWZpZWQNCiAtIEFsbG93IHRoZSBwTkZT -L2ZsZXhmaWxlcyBsYXlvdXRzdGF0IGluZm9ybWF0aW9uIHRvIHBpZ2d5YmFjayBvbiBMQVlPVVRS -RVRVUk4NCiAtIE9wdGltaXNlIGF3YXkgcmVkdW5kYW50IEdFVEFUVFIgY2FsbHMgd2hlbiBkb2lu -ZyBzdGF0ZSByZWNvdmVyeSBhbmQvb3INCiAgIHdoZW4gbm90IHJlcXVpcmVkIGJ5IGNhY2hlIHJl -dmFsaWRhdGlvbiBydWxlcyBvciBjbG9zZS10by1vcGVuIGNhY2hlDQogICBjb25zaXN0ZW5jeS4N -CiAtIEF0dHJpYnV0ZSBjYWNoZSBpbXByb3ZlbWVudHMNCiAtIFJQQy9SRE1BIHN1cHBvcnQgZm9y -IFNHX0dBUCBkZXZpY2VzDQoNCkJ1Z2ZpeGVzOg0KIC0gTkZTOiBGaXggcGVyZm9ybWFuY2UgcmVn -cmVzc2lvbnMgaW4gcmVhZGRpcg0KIC0gcE5GUy9mbGV4ZmlsZXM6IEZpeCBhIGRlYWRsb2NrIG9u -IExBWU9VVEdFVA0KIC0gTkZTdjQ6IEFkZCBtaXNzaW5nIG5mc19wdXRfbG9ja19jb250ZXh0KCkN -CiAtIE5GU3Y0LjE6IEZpeCByZWdyZXNzaW9uIGluIGNhbGxiYWNrIHJldHJ5IGhhbmRsaW5nDQog -LSBGaXggZmFsc2UgcG9zaXRpdmUgTkZTdjQuMCB0cnVua2luZyBkZXRlY3Rpb24uDQogLSBwTkZT -L2ZsZXhmaWxlczogT25seSBzZW5kIGxheW91dHN0YXRzIHVwZGF0ZXMgZm9yIG1pcnJvcnMgdGhh -dCB3ZXJlIHVwZGF0ZWQNCiAtIFZhcmlvdXMgbGF5b3V0IHN0YXRlaWQgcmVsYXRlZCBidWdmaXhl -cw0KIC0gUlBDL1JETUEgYnVnZml4ZXMNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQW5kcmVhcyBHcnVlbmJhY2hlciAo -MSk6DQogICAgICBuZnM6IGFkZCBzdXBwb3J0IGZvciB0aGUgdW1hc2sgYXR0cmlidXRlDQoNCkFu -bmEgU2NodW1ha2VyICgyKToNCiAgICAgIE5GUzogUmVtb3ZlIHVudXNlZCBhdXRoZmxhdm91ciBw -YXJhbWV0ZXIgZnJvbSBuZnNfZ2V0X2NsaWVudCgpDQogICAgICBORlM6IFJlbW92ZSB1bnVzZWQg -YXJndW1lbnQgZnJvbSBuZnNfZGlyZWN0X3dyaXRlX2NvbXBsZXRlKCkNCg0KQ2h1Y2sgTGV2ZXIg -KDEyKToNCiAgICAgIHhwcnRyZG1hOiBDYXAgc2l6ZSBvZiBjYWxsYmFjayBidWZmZXIgcmVzb3Vy -Y2VzDQogICAgICB4cHJ0cmRtYTogTWFrZSBGUldSIHNlbmQgcXVldWUgZW50cnkgYWNjb3VudGlu -ZyBtb3JlIGFjY3VyYXRlDQogICAgICB4cHJ0cmRtYTogU3VwcG9ydCBmb3IgU0dfR0FQIGRldmlj -ZXMNCiAgICAgIFNVTlJQQzogUHJvcGVyIG1ldHJpYyBhY2NvdW50aW5nIHdoZW4gUlBDIGlzIG5v -dCB0cmFuc21pdHRlZA0KICAgICAgeHBydHJkbWE6IEFkZHJlc3MgY292ZXJpdHkgY29tcGxhaW50 -IGFib3V0IHdhaXRfZm9yX2NvbXBsZXRpb24oKQ0KICAgICAgeHBydHJkbWE6IEF2b2lkIGNhbGxz -IHRvIHJvX3VubWFwX3NhZmUoKQ0KICAgICAgeHBydHJkbWE6IFJlZmFjdG9yIEZSTVIgaW52YWxp -ZGF0aW9uDQogICAgICB4cHJ0cmRtYTogVXBkYXRlIGRvY3VtZW50aW5nIGNvbW1lbnQNCiAgICAg -IHhwcnRyZG1hOiBTcXVlbGNoICJtYXggc2VuZCwgbWF4IHJlY3YiIG1lc3NhZ2VzIGF0IGNvbm5l -Y3QgdGltZQ0KICAgICAgeHBydHJkbWE6IFNob3J0ZW4gUVAgYWNjZXNzIGVycm9yIG1lc3NhZ2UN -CiAgICAgIHhwcnRyZG1hOiBVcGRhdGUgZHByaW50ayBpbiBycGNyZG1hX2NvdW50X2NodW5rcw0K -ICAgICAgeHBydHJkbWE6IFJlbG9jYXRlIGNvbm5lY3Rpb24gaGVscGVyIGZ1bmN0aW9ucw0KDQpG -cmVkIElzYW1hbiAoMik6DQogICAgICBORlN2NC4xOiBGaXggcmVncmVzc2lvbiBpbiBjYWxsYmFj -ayByZXRyeSBoYW5kbGluZw0KICAgICAgcE5GUy9mbGV4ZmlsZXM6IEZpeCBhIGRlYWRsb2NrIG9u -IExBWU9VVEdFVA0KDQpKLiBCcnVjZSBGaWVsZHMgKDEpOg0KICAgICAgbmZzOiBmaXggZmFsc2Ug -cG9zaXRpdmVzIGluIG5mczQwX3dhbGtfY2xpZW50X2xpc3QoKQ0KDQpOZWlsQnJvd24gKDkpOg0K -ICAgICAgc3VucnBjOiBEb24ndCBlbmdhZ2UgZXhwb25lbnRpYWwgYmFja29mZiB3aGVuIGNvbm5l -Y3Rpb24gYXR0ZW1wdCBpcyByZWplY3RlZC4NCiAgICAgIE5GUzogcmVtb3ZlIGxfcGlkIGZpZWxk -IGZyb20gbmZzX2xvY2tvd25lcg0KICAgICAgTkZTdjQ6IGFkZCBmbG9ja19vd25lciB0byBvcGVu -IGNvbnRleHQNCiAgICAgIE5GU3Y0OiBjaGFuZ2UgbmZzNF9kb19zZXRhdHRyIHRvIHRha2UgYW4g -b3Blbl9jb250ZXh0IGluc3RlYWQgb2YgYSBuZnM0X3N0YXRlLg0KICAgICAgTkZTdjQ6IGNoYW5n -ZSBuZnM0X3NlbGVjdF9yd19zdGF0ZWlkIHRvIHRha2UgYSBsb2NrX2NvbnRleHQgaW5wbGFjZSBv -ZiBsb2NrX293bmVyDQogICAgICBORlN2NDogZW5oYW5jZSBuZnM0X2NvcHlfbG9ja19zdGF0ZWlk -IHRvIHVzZSBhIGZsb2NrIHN0YXRlaWQgaWYgdGhlcmUgaXMgb25lDQogICAgICBORlM6IGRpc2Nh -cmQgbmZzX2xvY2tvd25lciBzdHJ1Y3R1cmUuDQogICAgICBORlN2NDogQWRkIG1pc3NpbmcgbmZz -X3B1dF9sb2NrX2NvbnRleHQoKQ0KICAgICAgU1VOUlBDOiBmaXggcmVmY291bnRpbmcgcHJvYmxl -bXMgd2l0aCBhdXRoX2dzcyBtZXNzYWdlcy4NCg0KVHJvbmQgTXlrbGVidXN0ICg1NSk6DQogICAg -ICBORlN2NDogRG9uJ3QgY2hlY2sgZmlsZSBhY2Nlc3Mgd2hlbiByZWNsYWltaW5nIHN0YXRlDQog -ICAgICBORlN2NDogRG9uJ3QgYXNrIGZvciB0aGUgY2hhbmdlIGF0dHJpYnV0ZSB3aGVuIHJlY2xh -aW1pbmcgc3RhdGUNCiAgICAgIE5GU3Y0OiBEb24ndCByZXF1ZXN0IGEgR0VUQVRUUiBvbiBvcGVu -X2Rvd25ncmFkZS4NCiAgICAgIE5GU3Y0OiBEb24ndCByZXF1ZXN0IGNsb3NlLXRvLW9wZW4gYXR0 -cmlidXRlIHdoZW4gaG9sZGluZyBhIGRlbGVnYXRpb24NCiAgICAgIE5GU3Y0OiBPcHRpbWlzZSBh -d2F5IGZvcmNlZCByZXZhbGlkYXRpb24gd2hlbiB3ZSBrbm93IHRoZSBhdHRyaWJ1dGVzIGFyZSBP -Sw0KICAgICAgcE5GUzogRml4IGEgZGVhZGxvY2sgYmV0d2VlbiByZWFkIHJlc2VuZHMgYW5kIGxh -eW91dHJldHVybg0KICAgICAgcE5GUzogRG9uJ3QgY2xlYXIgdGhlIGxheW91dCBzdGF0ZWlkIGlm -IGEgbGF5b3V0IHJldHVybiBpcyBvdXRzdGFuZGluZw0KICAgICAgcE5GUzogQ2xlYXIgTkZTX0xB -WU9VVF9SRVRVUk5fUkVRVUVTVEVEIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBsYXlvdXQgc3RhdGVp -ZA0KICAgICAgcE5GUzogRm9yY2UgYSByZXRyeSBvZiBMQVlPVVRHRVQgaWYgdGhlIHN0YXRlaWQg -ZG9lc24ndCBtYXRjaCBvdXIgY2FjaGUNCiAgICAgIHBORlM6IE9uIGVycm9yLCBkbyBub3Qgc2Vu -ZCBMQVlPVVRHRVQgdW50aWwgdGhlIExBWU9VVFJFVFVSTiBoYXMgY29tcGxldGVkDQogICAgICBw -TkZTOiBGaXggcmFjZSBpbiBwbmZzX3dhaXRfb25fbGF5b3V0cmV0dXJuDQogICAgICBwTkZTOiBj -b25zb2xpZGF0ZSB0aGUgZGlmZmVyZW50IHJhbmdlIGludGVyc2VjdGlvbiB0ZXN0cw0KICAgICAg -cE5GUzogRGVsYXkgZ2V0dGluZyB0aGUgbGF5b3V0IGhlYWRlciBpbiBDQl9MQVlPVVRSRUNBTEwg -aGFuZGxlcnMNCiAgICAgIHBORlM6IERvIG5vdCBmcmVlIGxheW91dCBzZWdtZW50cyB0aGF0IGFy -ZSBtYXJrZWQgZm9yIHJldHVybg0KICAgICAgTkZTdjQ6IElnbm9yZSBMQVlPVVRSRVRVUk4gcmVz -dWx0IGlmIHRoZSBsYXlvdXQgZG9lc24ndCBtYXRjaCBvciBpcyBpbnZhbGlkDQogICAgICBwTkZT -OiBSZW1vdmUgc3B1cmlvdXMgd2FrZSB1cCBpbiBwbmZzX2xheW91dF9yZW1vdmVfbHNlZygpDQog -ICAgICBwTkZTOiBTa2lwIGNoZWNraW5nIGZvciByZXR1cm4tb24tY2xvc2UgaWYgdGhlIGxheW91 -dCBpcyBpbnZhbGlkDQogICAgICBwTkZTOiBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IGxheW91dCBw -YXJhbWV0ZXIgaW4gZW5jb2RlX2xheW91dHJldHVybiBjYWxsYmFjaw0KICAgICAgcE5GUzogRG9u -J3QgbWFyayBsYXlvdXQgc2VnbWVudHMgaW52YWxpZCBvbiBsYXlvdXRyZXR1cm4gaW4gcG5mc19y -b2MNCiAgICAgIE5GU3Y0OiBGaXggbWlzc2luZyBvcGVyYXRpb24gYWNjb3VudGluZyBpbiBORlM0 -X2RlY19kZWxlZ3JldHVybl9zeg0KICAgICAgTkZTdjQ6IEFkZCBlbmNvZGUvZGVjb2RlIG9mIHRo -ZSBsYXlvdXRyZXR1cm4gb3AgaW4gQ0xPU0UNCiAgICAgIE5GU3Y0OiBBZGQgZW5jb2RlL2RlY29k -ZSBvZiB0aGUgbGF5b3V0cmV0dXJuIG9wIGluIERFTEVHUkVUVVJODQogICAgICBwTkZTOiBDbGVh -biB1cCAtIGFkZCBhIGhlbHBlciB0byBpbml0aWFsaXNlIHN0cnVjdCBsYXlvdXRyZXR1cm5fYXJn -cw0KICAgICAgcE5GUzogRW5hYmxlIGxheW91dHJldHVybiBvcGVyYXRpb24gZm9yIHJldHVybi1v -bi1jbG9zZQ0KICAgICAgcE5GUzogUHJldmVudCB1bm5lY2Vzc2FyeSBsYXlvdXRyZXR1cm5zIGFm -dGVyIGRlbGVncmV0dXJuDQogICAgICBwTkZTOiBDbGVhciBhbGwgbGF5b3V0IHNlZ21lbnQgc3Rh -dGUgaW4gcG5mc19tYXJrX2xheW91dF9zdGF0ZWlkX2ludmFsaWQNCiAgICAgIHBORlM6IEZpeCBi -dWdzIGluIF9wbmZzX3JldHVybl9sYXlvdXQNCiAgICAgIHBORlM6IFN5bmMgdGhlIGxheW91dCBz -dGF0ZSBiaXRzIGluIHBuZnNfY2FjaGVfbHNlZ19mb3JfbGF5b3V0cmV0dXJuDQogICAgICBwTkZT -OiBEb24ndCBtYXJrIHRoZSBsYXlvdXQgYXMgZnJlZWQgaWYgdGhlIGxhc3QgbHNlZyBpcyBtYXJr -ZWQgZm9yIHJldHVybg0KICAgICAgcE5GUzogV2FpdCBvbiBvdXRzdGFuZGluZyBsYXlvdXRyZXR1 -cm5zIHRvIGNvbXBsZXRlIGluIHBuZnNfcm9jKCkNCiAgICAgIHBORlM6IFNraXAgaW52YWxpZCBz -dGF0ZWlkcyB3aGVuIGRvaW5nIGEgYnVsayBkZXN0cm95DQogICAgICBORlM6IEZpeCBhIHBlcmZv -cm1hbmNlIHJlZ3Jlc3Npb24gaW4gcmVhZGRpcg0KICAgICAgTkZTOiBCZSBtb3JlIHRhcmdldGVk -IGFib3V0IHJlYWRkaXJwbHVzIHVzZSB3aGVuIGRvaW5nIGxvb2t1cC9yZXZhbGlkYXRpb24NCiAg -ICAgIE5GUzogQWxsb3cgZ2V0YXR0ciB0byBhbHNvIHJlcG9ydCByZWFkZGlycGx1cyBjYWNoZSBo -aXRzDQogICAgICBwTkZTL2ZsZXhmaWxlczogRG9uJ3QgYXR0ZW1wdCB0byBzZW5kIGxheW91dHN0 -YXRzIGlmIHRoZXJlIGFyZSBubyBlbnRyaWVzDQogICAgICBwTkZTL2ZsZXhmaWxlczogT25seSBz -ZW5kIGxheW91dHN0YXRzIHVwZGF0ZXMgZm9yIG1pcnJvcnMgdGhhdCB3ZXJlIHVwZGF0ZWQNCiAg -ICAgIE5GU3Y0OiBBZGQgYSBnZW5lcmljIHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgbGF5b3V0LXBy -aXZhdGUgaW5mb3JtYXRpb24NCiAgICAgIHBORlM6IEFsbG93IGxheW91dCBkcml2ZXJzIHRvIG1h -bmFnZSBwcml2YXRlIGRhdGEgaW4gc3RydWN0IG5mczRfbGF5b3V0cmV0dXJuDQogICAgICBwTkZT -OiBBZGQgYSBsYXlvdXRyZXR1cm4gY2FsbGJhY2sgdG8gcGVyZm9ybWEgbGF5b3V0LXByaXZhdGUg -c2V0dXANCiAgICAgIHBORlMvZmxleGZpbGVzOiBSZWZhY3RvciBlbmNvZGluZyBvZiB0aGUgbGF5 -b3V0cmV0dXJuIHBheWxvYWQNCiAgICAgIHBORlMvZmxleGZpbGVzOiBDbGVhbiB1cCBsYXlvdXRz -dGF0cw0KICAgICAgTkZTOiBGaXggdXAgcmVhZCBvZiBtaXJyb3Igc3RhdHMNCiAgICAgIHBORlMv -ZmxleGZpbGVzOiBNaW5vciByZWZhY3RvcmluZyBiZWZvcmUgYWRkaW5nIGlvc3RhdHMgdG8gbGF5 -b3V0cmV0dXJuDQogICAgICBwTkZTL2ZsZXhmaWxlczogU3VwcG9ydCBzZW5kaW5nIGxheW91dHN0 -YXRzIGluIGxheW91dHJldHVybg0KICAgICAgTkZTOiBGaXggaW5jb3JyZWN0IG1hcHBpbmcgcmV2 -YWxpZGF0aW9uIHdoZW4gaG9sZGluZyBhIGRlbGVnYXRpb24NCiAgICAgIE5GUzogRml4IGluY29y -cmVjdCBzaXplIHJldmFsaWRhdGlvbiB3aGVuIGhvbGRpbmcgYSBkZWxlZ2F0aW9uDQogICAgICBO -RlM6IE9ubHkgbG9vayBhdCB0aGUgY2hhbmdlIGF0dHJpYnV0ZSBjYWNoZSBzdGF0ZSBpbiBuZnNf -Y2hlY2tfdmVyaWZpZXINCiAgICAgIE5GU3Y0LjE6IEhhbmRsZSBORlM0RVJSX0JBRFNFU1NJT04v -TkZTNEVSUl9ERUFEU0VTU0lPTiByZXBsaWVzIHRvIE9QX1NFUVVFTkNFDQogICAgICBORlN2NC4x -OiBEb24ndCBzY2hlZHVsZSBsZWFzZSByZWNvdmVyeSBpbiBuZnM0X3NjaGVkdWxlX3Nlc3Npb25f -cmVjb3ZlcnkoKQ0KICAgICAgcE5GUzogUmVsZWFzZSBORlNfTEFZT1VUX1JFVFVSTiB3aGVuIGlu -dmFsaWRhdGluZyB0aGUgbGF5b3V0IHN0YXRlaWQNCiAgICAgIHBORlMvZmxleGZpbGVzOiBGaXgg -ZmZfbGF5b3V0X2FkZF9kc19lcnJvcl9sb2NrZWQoKQ0KICAgICAgcE5GUzogTGF5b3V0cmV0dXJu -IG11c3QgZnJlZSB0aGUgbGF5b3V0IGFmdGVyIHRoZSBsYXlvdXQtcHJpdmF0ZSBkYXRhDQogICAg -ICBwTkZTL2ZsZXhmaWxlczogUmVtb3ZlIGEgcmVkdW5kYW50IHBhcmFtZXRlciBpbiBmZl9sYXlv -dXRfZW5jb2RlX2lvZXJyKCkNCiAgICAgIHBORlMvZmxleGZpbGVzOiBFbnN1cmUgd2UgaGF2ZSBl -bm91Z2ggYnVmZmVyIGZvciBsYXlvdXRyZXR1cm4NCiAgICAgIE1lcmdlIHRhZyAnbmZzLXJkbWEt -NC4xMC0xJyBvZiBnaXQ6Ly9naXQubGludXgtbmZzLm9yZy9wcm9qZWN0cy9hbm5hL25mcy1yZG1h -DQoNCldlaSBZb25nanVuICgxKToNCiAgICAgIE5GUzogZml4IHR5cG8gaW4gcGFyYW1ldGVyIGRl -c2NyaXB0aW9uDQoNCiBmcy9uZnMvY2FsbGJhY2tfcHJvYy5jICAgICAgICAgICAgICAgICAgICB8 -ICA5OSArKysrKy0tLQ0KIGZzL25mcy9jbGllbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg -IHwgICA2ICstDQogZnMvbmZzL2RlbGVnYXRpb24uYyAgICAgICAgICAgICAgICAgICAgICAgfCAg -IDQgLQ0KIGZzL25mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDczICsr -Ky0tLQ0KIGZzL25mcy9kaXJlY3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICst -DQogZnMvbmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0NCiBm -cy9uZnMvZmlsZWxheW91dC9maWxlbGF5b3V0ZGV2LmMgICAgICAgICB8ICAgMyArLQ0KIGZzL25m -cy9mbGV4ZmlsZWxheW91dC9mbGV4ZmlsZWxheW91dC5jICAgIHwgMzEzICsrKysrKysrKysrKysr -Ky0tLS0tLS0tDQogZnMvbmZzL2ZsZXhmaWxlbGF5b3V0L2ZsZXhmaWxlbGF5b3V0LmggICAgfCAg -MjMgKy0NCiBmcy9uZnMvZmxleGZpbGVsYXlvdXQvZmxleGZpbGVsYXlvdXRkZXYuYyB8IDE1MSAr -KysrKysrLS0tLQ0KIGZzL25mcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg -IDUxICsrLS0NCiBmcy9uZnMvaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg -OSArLQ0KIGZzL25mcy9uZnMzY2xpZW50LmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICst -DQogZnMvbmZzL25mczQycHJvYy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0NCiBm -cy9uZnMvbmZzNDJ4ZHIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQ0KIGZzL25m -cy9uZnM0X2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogZnMvbmZzL25m -czRjbGllbnQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMzIgKystDQogZnMvbmZzL25mczRm -aWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCiBmcy9uZnMvbmZzNHByb2Mu -YyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIzMyArKysrKysrKysrKy0tLS0tLQ0KIGZzL25m -cy9uZnM0c2Vzc2lvbi5jICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogZnMvbmZzL25m -czRzdGF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjcgKy0NCiBmcy9uZnMvbmZzNHhk -ci5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5NiArKysrKy0tDQogZnMvbmZzL29iamxh -eW91dC9vYmpsYXlvdXQuYyAgICAgICAgICAgICAgfCAgIDQgKy0NCiBmcy9uZnMvb2JqbGF5b3V0 -L29iamxheW91dC5oICAgICAgICAgICAgICB8ICAgMSAtDQogZnMvbmZzL3BhZ2VsaXN0LmMgICAg -ICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0NCiBmcy9uZnMvcG5mcy5jICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICB8IDQwNyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCiBm -cy9uZnMvcG5mcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NyArKysrLS0NCiBm -cy9uZnMvcG5mc19uZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQ0KIGZzL25m -cy9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogZnMvbmZzL3dy -aXRlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0NCiBpbmNsdWRlL2xpbnV4 -L25mczQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogaW5jbHVkZS9saW51eC9uZnNf -ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0NCiBpbmNsdWRlL2xpbnV4L25mc194ZHIu -aCAgICAgICAgICAgICAgICAgICB8ICAyNyArLQ0KIG5ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9n -c3MuYyAgICAgICAgICAgIHwgICA3ICstDQogbmV0L3N1bnJwYy9jbG50LmMgICAgICAgICAgICAg -ICAgICAgICAgICAgfCAgIDIgKw0KIG5ldC9zdW5ycGMvc3RhdHMuYyAgICAgICAgICAgICAgICAg -ICAgICAgIHwgIDEwICstDQogbmV0L3N1bnJwYy94cHJ0LmMgICAgICAgICAgICAgICAgICAgICAg -ICAgfCAgIDMgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL2JhY2tjaGFubmVsLmMgICAgICAgICB8 -ICAgNCArLQ0KIG5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYyAgICAgICAgICAgIHwgIDk0 -ICsrKystLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3JwY19yZG1hLmMgICAgICAgICAgICB8ICAz -NiArLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jICAgICAgICAgICB8ICAzNCAr -Ky0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMgICAgICAgICAgICAgICB8ICAzNyArLS0N -CiBuZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5oICAgICAgICAgICB8ICAzMSArKy0NCiA0 -MyBmaWxlcyBjaGFuZ2VkLCAxMjU4IGluc2VydGlvbnMoKyksIDcyNiBkZWxldGlvbnMoLSkNCg0K -LS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lciwgUHJpbWFy -eURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5jb20NCg== +Hi Linus, + +The following changes since commit e5517c2a5a49ed5e99047008629f1cd60246ea0e: + + Linux 4.9-rc7 (2016-11-27 13:08:04 -0800) + +are available in the git repository at: + + git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tags/nfs-for-4.10-1 + +for you to fetch changes up to 2549f307b5997bf5dd91071428e8090d9faa8b1b: + + Merge tag 'nfs-rdma-4.10-1' of git://git.linux-nfs.org/projects/anna/nfs-rdma (2016-12-10 10:31:44 -0500) + +Cheers + Trond + +---------------------------------------------------------------- +NFS client updates for Linux 4.10 + +Highlights include: + +Stable bugfixes: + - Fix a pnfs deadlock between read resends and layoutreturn + - Don't invalidate the layout stateid while a layout return is outstanding + - Don't schedule a layoutreturn if the layout stateid is marked as invalid + - On a pNFS error, do not send LAYOUTGET until the LAYOUTRETURN is complete + - SUNRPC: fix refcounting problems with auth_gss messages. + +Features: + - Add client support for the NFSv4 umask attribute. + - NFSv4: Correct support for flock() stateids. + - Add a LAYOUTRETURN operation to CLOSE and DELEGRETURN when return-on-close + is specified + - Allow the pNFS/flexfiles layoutstat information to piggyback on LAYOUTRETURN + - Optimise away redundant GETATTR calls when doing state recovery and/or + when not required by cache revalidation rules or close-to-open cache + consistency. + - Attribute cache improvements + - RPC/RDMA support for SG_GAP devices + +Bugfixes: + - NFS: Fix performance regressions in readdir + - pNFS/flexfiles: Fix a deadlock on LAYOUTGET + - NFSv4: Add missing nfs_put_lock_context() + - NFSv4.1: Fix regression in callback retry handling + - Fix false positive NFSv4.0 trunking detection. + - pNFS/flexfiles: Only send layoutstats updates for mirrors that were updated + - Various layout stateid related bugfixes + - RPC/RDMA bugfixes + +---------------------------------------------------------------- +Andreas Gruenbacher (1): + nfs: add support for the umask attribute + +Anna Schumaker (2): + NFS: Remove unused authflavour parameter from nfs_get_client() + NFS: Remove unused argument from nfs_direct_write_complete() + +Chuck Lever (12): + xprtrdma: Cap size of callback buffer resources + xprtrdma: Make FRWR send queue entry accounting more accurate + xprtrdma: Support for SG_GAP devices + SUNRPC: Proper metric accounting when RPC is not transmitted + xprtrdma: Address coverity complaint about wait_for_completion() + xprtrdma: Avoid calls to ro_unmap_safe() + xprtrdma: Refactor FRMR invalidation + xprtrdma: Update documenting comment + xprtrdma: Squelch "max send, max recv" messages at connect time + xprtrdma: Shorten QP access error message + xprtrdma: Update dprintk in rpcrdma_count_chunks + xprtrdma: Relocate connection helper functions + +Fred Isaman (2): + NFSv4.1: Fix regression in callback retry handling + pNFS/flexfiles: Fix a deadlock on LAYOUTGET + +J. Bruce Fields (1): + nfs: fix false positives in nfs40_walk_client_list() + +NeilBrown (9): + sunrpc: Don't engage exponential backoff when connection attempt is rejected. + NFS: remove l_pid field from nfs_lockowner + NFSv4: add flock_owner to open context + NFSv4: change nfs4_do_setattr to take an open_context instead of a nfs4_state. + NFSv4: change nfs4_select_rw_stateid to take a lock_context inplace of lock_owner + NFSv4: enhance nfs4_copy_lock_stateid to use a flock stateid if there is one + NFS: discard nfs_lockowner structure. + NFSv4: Add missing nfs_put_lock_context() + SUNRPC: fix refcounting problems with auth_gss messages. + +Trond Myklebust (55): + NFSv4: Don't check file access when reclaiming state + NFSv4: Don't ask for the change attribute when reclaiming state + NFSv4: Don't request a GETATTR on open_downgrade. + NFSv4: Don't request close-to-open attribute when holding a delegation + NFSv4: Optimise away forced revalidation when we know the attributes are OK + pNFS: Fix a deadlock between read resends and layoutreturn + pNFS: Don't clear the layout stateid if a layout return is outstanding + pNFS: Clear NFS_LAYOUT_RETURN_REQUESTED when invalidating the layout stateid + pNFS: Force a retry of LAYOUTGET if the stateid doesn't match our cache + pNFS: On error, do not send LAYOUTGET until the LAYOUTRETURN has completed + pNFS: Fix race in pnfs_wait_on_layoutreturn + pNFS: consolidate the different range intersection tests + pNFS: Delay getting the layout header in CB_LAYOUTRECALL handlers + pNFS: Do not free layout segments that are marked for return + NFSv4: Ignore LAYOUTRETURN result if the layout doesn't match or is invalid + pNFS: Remove spurious wake up in pnfs_layout_remove_lseg() + pNFS: Skip checking for return-on-close if the layout is invalid + pNFS: Get rid of unnecessary layout parameter in encode_layoutreturn callback + pNFS: Don't mark layout segments invalid on layoutreturn in pnfs_roc + NFSv4: Fix missing operation accounting in NFS4_dec_delegreturn_sz + NFSv4: Add encode/decode of the layoutreturn op in CLOSE + NFSv4: Add encode/decode of the layoutreturn op in DELEGRETURN + pNFS: Clean up - add a helper to initialise struct layoutreturn_args + pNFS: Enable layoutreturn operation for return-on-close + pNFS: Prevent unnecessary layoutreturns after delegreturn + pNFS: Clear all layout segment state in pnfs_mark_layout_stateid_invalid + pNFS: Fix bugs in _pnfs_return_layout + pNFS: Sync the layout state bits in pnfs_cache_lseg_for_layoutreturn + pNFS: Don't mark the layout as freed if the last lseg is marked for return + pNFS: Wait on outstanding layoutreturns to complete in pnfs_roc() + pNFS: Skip invalid stateids when doing a bulk destroy + NFS: Fix a performance regression in readdir + NFS: Be more targeted about readdirplus use when doing lookup/revalidation + NFS: Allow getattr to also report readdirplus cache hits + pNFS/flexfiles: Don't attempt to send layoutstats if there are no entries + pNFS/flexfiles: Only send layoutstats updates for mirrors that were updated + NFSv4: Add a generic structure for managing layout-private information + pNFS: Allow layout drivers to manage private data in struct nfs4_layoutreturn + pNFS: Add a layoutreturn callback to performa layout-private setup + pNFS/flexfiles: Refactor encoding of the layoutreturn payload + pNFS/flexfiles: Clean up layoutstats + NFS: Fix up read of mirror stats + pNFS/flexfiles: Minor refactoring before adding iostats to layoutreturn + pNFS/flexfiles: Support sending layoutstats in layoutreturn + NFS: Fix incorrect mapping revalidation when holding a delegation + NFS: Fix incorrect size revalidation when holding a delegation + NFS: Only look at the change attribute cache state in nfs_check_verifier + NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE + NFSv4.1: Don't schedule lease recovery in nfs4_schedule_session_recovery() + pNFS: Release NFS_LAYOUT_RETURN when invalidating the layout stateid + pNFS/flexfiles: Fix ff_layout_add_ds_error_locked() + pNFS: Layoutreturn must free the layout after the layout-private data + pNFS/flexfiles: Remove a redundant parameter in ff_layout_encode_ioerr() + pNFS/flexfiles: Ensure we have enough buffer for layoutreturn + Merge tag 'nfs-rdma-4.10-1' of git://git.linux-nfs.org/projects/anna/nfs-rdma + +Wei Yongjun (1): + NFS: fix typo in parameter description + + fs/nfs/callback_proc.c | 99 +++++--- + fs/nfs/client.c | 6 +- + fs/nfs/delegation.c | 4 - + fs/nfs/dir.c | 73 +++--- + fs/nfs/direct.c | 12 +- + fs/nfs/file.c | 5 +- + fs/nfs/filelayout/filelayoutdev.c | 3 +- + fs/nfs/flexfilelayout/flexfilelayout.c | 313 +++++++++++++++-------- + fs/nfs/flexfilelayout/flexfilelayout.h | 23 +- + fs/nfs/flexfilelayout/flexfilelayoutdev.c | 151 +++++++---- + fs/nfs/inode.c | 51 ++-- + fs/nfs/internal.h | 9 +- + fs/nfs/nfs3client.c | 5 +- + fs/nfs/nfs42proc.c | 9 +- + fs/nfs/nfs42xdr.c | 5 +- + fs/nfs/nfs4_fs.h | 2 +- + fs/nfs/nfs4client.c | 32 ++- + fs/nfs/nfs4file.c | 2 +- + fs/nfs/nfs4proc.c | 233 +++++++++++------ + fs/nfs/nfs4session.c | 2 +- + fs/nfs/nfs4state.c | 27 +- + fs/nfs/nfs4xdr.c | 96 +++++-- + fs/nfs/objlayout/objlayout.c | 4 +- + fs/nfs/objlayout/objlayout.h | 1 - + fs/nfs/pagelist.c | 3 +- + fs/nfs/pnfs.c | 407 ++++++++++++++++++------------ + fs/nfs/pnfs.h | 77 ++++-- + fs/nfs/pnfs_nfs.c | 28 +- + fs/nfs/super.c | 2 +- + fs/nfs/write.c | 3 +- + include/linux/nfs4.h | 1 + + include/linux/nfs_fs.h | 11 +- + include/linux/nfs_xdr.h | 27 +- + net/sunrpc/auth_gss/auth_gss.c | 7 +- + net/sunrpc/clnt.c | 2 + + net/sunrpc/stats.c | 10 +- + net/sunrpc/xprt.c | 3 +- + net/sunrpc/xprtrdma/backchannel.c | 4 +- + net/sunrpc/xprtrdma/frwr_ops.c | 94 ++++--- + net/sunrpc/xprtrdma/rpc_rdma.c | 36 +-- + net/sunrpc/xprtrdma/transport.c | 34 ++- + net/sunrpc/xprtrdma/verbs.c | 37 +-- + net/sunrpc/xprtrdma/xprt_rdma.h | 31 ++- + 43 files changed, 1258 insertions(+), 726 deletions(-) + +-- +Trond Myklebust +Linux NFS client maintainer, PrimaryData +trond.myklebust@primarydata.com diff --git a/a/content_digest b/N1/content_digest index 402c076..eb1ad5c 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,186 +6,205 @@ " linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>\0" "\00:1\0" "b\0" - "SGkgTGludXMsDQoNClRoZSBmb2xsb3dpbmcgY2hhbmdlcyBzaW5jZSBjb21taXQgZTU1MTdjMmE1\n" - "YTQ5ZWQ1ZTk5MDQ3MDA4NjI5ZjFjZDYwMjQ2ZWEwZToNCg0KICBMaW51eCA0LjktcmM3ICgyMDE2\n" - "LTExLTI3IDEzOjA4OjA0IC0wODAwKQ0KDQphcmUgYXZhaWxhYmxlIGluIHRoZSBnaXQgcmVwb3Np\n" - "dG9yeSBhdDoNCg0KICBnaXQ6Ly9naXQubGludXgtbmZzLm9yZy9wcm9qZWN0cy90cm9uZG15L2xp\n" - "bnV4LW5mcy5naXQgdGFncy9uZnMtZm9yLTQuMTAtMQ0KDQpmb3IgeW91IHRvIGZldGNoIGNoYW5n\n" - "ZXMgdXAgdG8gMjU0OWYzMDdiNTk5N2JmNWRkOTEwNzE0MjhlODA5MGQ5ZmFhOGIxYjoNCg0KICBN\n" - "ZXJnZSB0YWcgJ25mcy1yZG1hLTQuMTAtMScgb2YgZ2l0Oi8vZ2l0LmxpbnV4LW5mcy5vcmcvcHJv\n" - "amVjdHMvYW5uYS9uZnMtcmRtYSAoMjAxNi0xMi0xMCAxMDozMTo0NCAtMDUwMCkNCg0KQ2hlZXJz\n" - "DQogIFRyb25kDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\n" - "LS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5GUyBjbGllbnQgdXBkYXRlcyBmb3IgTGludXggNC4xMA0K\n" - "DQpIaWdobGlnaHRzIGluY2x1ZGU6DQoNClN0YWJsZSBidWdmaXhlczoNCiAtIEZpeCBhIHBuZnMg\n" - "ZGVhZGxvY2sgYmV0d2VlbiByZWFkIHJlc2VuZHMgYW5kIGxheW91dHJldHVybg0KIC0gRG9uJ3Qg\n" - "aW52YWxpZGF0ZSB0aGUgbGF5b3V0IHN0YXRlaWQgd2hpbGUgYSBsYXlvdXQgcmV0dXJuIGlzIG91\n" - "dHN0YW5kaW5nDQogLSBEb24ndCBzY2hlZHVsZSBhIGxheW91dHJldHVybiBpZiB0aGUgbGF5b3V0\n" - "IHN0YXRlaWQgaXMgbWFya2VkIGFzIGludmFsaWQNCiAtIE9uIGEgcE5GUyBlcnJvciwgZG8gbm90\n" - "IHNlbmQgTEFZT1VUR0VUIHVudGlsIHRoZSBMQVlPVVRSRVRVUk4gaXMgY29tcGxldGUNCiAtIFNV\n" - "TlJQQzogZml4IHJlZmNvdW50aW5nIHByb2JsZW1zIHdpdGggYXV0aF9nc3MgbWVzc2FnZXMuDQoN\n" - "CkZlYXR1cmVzOg0KIC0gQWRkIGNsaWVudCBzdXBwb3J0IGZvciB0aGUgTkZTdjQgdW1hc2sgYXR0\n" - "cmlidXRlLg0KIC0gTkZTdjQ6IENvcnJlY3Qgc3VwcG9ydCBmb3IgZmxvY2soKSBzdGF0ZWlkcy4N\n" - "CiAtIEFkZCBhIExBWU9VVFJFVFVSTiBvcGVyYXRpb24gdG8gQ0xPU0UgYW5kIERFTEVHUkVUVVJO\n" - "IHdoZW4gcmV0dXJuLW9uLWNsb3NlDQogICBpcyBzcGVjaWZpZWQNCiAtIEFsbG93IHRoZSBwTkZT\n" - "L2ZsZXhmaWxlcyBsYXlvdXRzdGF0IGluZm9ybWF0aW9uIHRvIHBpZ2d5YmFjayBvbiBMQVlPVVRS\n" - "RVRVUk4NCiAtIE9wdGltaXNlIGF3YXkgcmVkdW5kYW50IEdFVEFUVFIgY2FsbHMgd2hlbiBkb2lu\n" - "ZyBzdGF0ZSByZWNvdmVyeSBhbmQvb3INCiAgIHdoZW4gbm90IHJlcXVpcmVkIGJ5IGNhY2hlIHJl\n" - "dmFsaWRhdGlvbiBydWxlcyBvciBjbG9zZS10by1vcGVuIGNhY2hlDQogICBjb25zaXN0ZW5jeS4N\n" - "CiAtIEF0dHJpYnV0ZSBjYWNoZSBpbXByb3ZlbWVudHMNCiAtIFJQQy9SRE1BIHN1cHBvcnQgZm9y\n" - "IFNHX0dBUCBkZXZpY2VzDQoNCkJ1Z2ZpeGVzOg0KIC0gTkZTOiBGaXggcGVyZm9ybWFuY2UgcmVn\n" - "cmVzc2lvbnMgaW4gcmVhZGRpcg0KIC0gcE5GUy9mbGV4ZmlsZXM6IEZpeCBhIGRlYWRsb2NrIG9u\n" - "IExBWU9VVEdFVA0KIC0gTkZTdjQ6IEFkZCBtaXNzaW5nIG5mc19wdXRfbG9ja19jb250ZXh0KCkN\n" - "CiAtIE5GU3Y0LjE6IEZpeCByZWdyZXNzaW9uIGluIGNhbGxiYWNrIHJldHJ5IGhhbmRsaW5nDQog\n" - "LSBGaXggZmFsc2UgcG9zaXRpdmUgTkZTdjQuMCB0cnVua2luZyBkZXRlY3Rpb24uDQogLSBwTkZT\n" - "L2ZsZXhmaWxlczogT25seSBzZW5kIGxheW91dHN0YXRzIHVwZGF0ZXMgZm9yIG1pcnJvcnMgdGhh\n" - "dCB3ZXJlIHVwZGF0ZWQNCiAtIFZhcmlvdXMgbGF5b3V0IHN0YXRlaWQgcmVsYXRlZCBidWdmaXhl\n" - "cw0KIC0gUlBDL1JETUEgYnVnZml4ZXMNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\n" - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQW5kcmVhcyBHcnVlbmJhY2hlciAo\n" - "MSk6DQogICAgICBuZnM6IGFkZCBzdXBwb3J0IGZvciB0aGUgdW1hc2sgYXR0cmlidXRlDQoNCkFu\n" - "bmEgU2NodW1ha2VyICgyKToNCiAgICAgIE5GUzogUmVtb3ZlIHVudXNlZCBhdXRoZmxhdm91ciBw\n" - "YXJhbWV0ZXIgZnJvbSBuZnNfZ2V0X2NsaWVudCgpDQogICAgICBORlM6IFJlbW92ZSB1bnVzZWQg\n" - "YXJndW1lbnQgZnJvbSBuZnNfZGlyZWN0X3dyaXRlX2NvbXBsZXRlKCkNCg0KQ2h1Y2sgTGV2ZXIg\n" - "KDEyKToNCiAgICAgIHhwcnRyZG1hOiBDYXAgc2l6ZSBvZiBjYWxsYmFjayBidWZmZXIgcmVzb3Vy\n" - "Y2VzDQogICAgICB4cHJ0cmRtYTogTWFrZSBGUldSIHNlbmQgcXVldWUgZW50cnkgYWNjb3VudGlu\n" - "ZyBtb3JlIGFjY3VyYXRlDQogICAgICB4cHJ0cmRtYTogU3VwcG9ydCBmb3IgU0dfR0FQIGRldmlj\n" - "ZXMNCiAgICAgIFNVTlJQQzogUHJvcGVyIG1ldHJpYyBhY2NvdW50aW5nIHdoZW4gUlBDIGlzIG5v\n" - "dCB0cmFuc21pdHRlZA0KICAgICAgeHBydHJkbWE6IEFkZHJlc3MgY292ZXJpdHkgY29tcGxhaW50\n" - "IGFib3V0IHdhaXRfZm9yX2NvbXBsZXRpb24oKQ0KICAgICAgeHBydHJkbWE6IEF2b2lkIGNhbGxz\n" - "IHRvIHJvX3VubWFwX3NhZmUoKQ0KICAgICAgeHBydHJkbWE6IFJlZmFjdG9yIEZSTVIgaW52YWxp\n" - "ZGF0aW9uDQogICAgICB4cHJ0cmRtYTogVXBkYXRlIGRvY3VtZW50aW5nIGNvbW1lbnQNCiAgICAg\n" - "IHhwcnRyZG1hOiBTcXVlbGNoICJtYXggc2VuZCwgbWF4IHJlY3YiIG1lc3NhZ2VzIGF0IGNvbm5l\n" - "Y3QgdGltZQ0KICAgICAgeHBydHJkbWE6IFNob3J0ZW4gUVAgYWNjZXNzIGVycm9yIG1lc3NhZ2UN\n" - "CiAgICAgIHhwcnRyZG1hOiBVcGRhdGUgZHByaW50ayBpbiBycGNyZG1hX2NvdW50X2NodW5rcw0K\n" - "ICAgICAgeHBydHJkbWE6IFJlbG9jYXRlIGNvbm5lY3Rpb24gaGVscGVyIGZ1bmN0aW9ucw0KDQpG\n" - "cmVkIElzYW1hbiAoMik6DQogICAgICBORlN2NC4xOiBGaXggcmVncmVzc2lvbiBpbiBjYWxsYmFj\n" - "ayByZXRyeSBoYW5kbGluZw0KICAgICAgcE5GUy9mbGV4ZmlsZXM6IEZpeCBhIGRlYWRsb2NrIG9u\n" - "IExBWU9VVEdFVA0KDQpKLiBCcnVjZSBGaWVsZHMgKDEpOg0KICAgICAgbmZzOiBmaXggZmFsc2Ug\n" - "cG9zaXRpdmVzIGluIG5mczQwX3dhbGtfY2xpZW50X2xpc3QoKQ0KDQpOZWlsQnJvd24gKDkpOg0K\n" - "ICAgICAgc3VucnBjOiBEb24ndCBlbmdhZ2UgZXhwb25lbnRpYWwgYmFja29mZiB3aGVuIGNvbm5l\n" - "Y3Rpb24gYXR0ZW1wdCBpcyByZWplY3RlZC4NCiAgICAgIE5GUzogcmVtb3ZlIGxfcGlkIGZpZWxk\n" - "IGZyb20gbmZzX2xvY2tvd25lcg0KICAgICAgTkZTdjQ6IGFkZCBmbG9ja19vd25lciB0byBvcGVu\n" - "IGNvbnRleHQNCiAgICAgIE5GU3Y0OiBjaGFuZ2UgbmZzNF9kb19zZXRhdHRyIHRvIHRha2UgYW4g\n" - "b3Blbl9jb250ZXh0IGluc3RlYWQgb2YgYSBuZnM0X3N0YXRlLg0KICAgICAgTkZTdjQ6IGNoYW5n\n" - "ZSBuZnM0X3NlbGVjdF9yd19zdGF0ZWlkIHRvIHRha2UgYSBsb2NrX2NvbnRleHQgaW5wbGFjZSBv\n" - "ZiBsb2NrX293bmVyDQogICAgICBORlN2NDogZW5oYW5jZSBuZnM0X2NvcHlfbG9ja19zdGF0ZWlk\n" - "IHRvIHVzZSBhIGZsb2NrIHN0YXRlaWQgaWYgdGhlcmUgaXMgb25lDQogICAgICBORlM6IGRpc2Nh\n" - "cmQgbmZzX2xvY2tvd25lciBzdHJ1Y3R1cmUuDQogICAgICBORlN2NDogQWRkIG1pc3NpbmcgbmZz\n" - "X3B1dF9sb2NrX2NvbnRleHQoKQ0KICAgICAgU1VOUlBDOiBmaXggcmVmY291bnRpbmcgcHJvYmxl\n" - "bXMgd2l0aCBhdXRoX2dzcyBtZXNzYWdlcy4NCg0KVHJvbmQgTXlrbGVidXN0ICg1NSk6DQogICAg\n" - "ICBORlN2NDogRG9uJ3QgY2hlY2sgZmlsZSBhY2Nlc3Mgd2hlbiByZWNsYWltaW5nIHN0YXRlDQog\n" - "ICAgICBORlN2NDogRG9uJ3QgYXNrIGZvciB0aGUgY2hhbmdlIGF0dHJpYnV0ZSB3aGVuIHJlY2xh\n" - "aW1pbmcgc3RhdGUNCiAgICAgIE5GU3Y0OiBEb24ndCByZXF1ZXN0IGEgR0VUQVRUUiBvbiBvcGVu\n" - "X2Rvd25ncmFkZS4NCiAgICAgIE5GU3Y0OiBEb24ndCByZXF1ZXN0IGNsb3NlLXRvLW9wZW4gYXR0\n" - "cmlidXRlIHdoZW4gaG9sZGluZyBhIGRlbGVnYXRpb24NCiAgICAgIE5GU3Y0OiBPcHRpbWlzZSBh\n" - "d2F5IGZvcmNlZCByZXZhbGlkYXRpb24gd2hlbiB3ZSBrbm93IHRoZSBhdHRyaWJ1dGVzIGFyZSBP\n" - "Sw0KICAgICAgcE5GUzogRml4IGEgZGVhZGxvY2sgYmV0d2VlbiByZWFkIHJlc2VuZHMgYW5kIGxh\n" - "eW91dHJldHVybg0KICAgICAgcE5GUzogRG9uJ3QgY2xlYXIgdGhlIGxheW91dCBzdGF0ZWlkIGlm\n" - "IGEgbGF5b3V0IHJldHVybiBpcyBvdXRzdGFuZGluZw0KICAgICAgcE5GUzogQ2xlYXIgTkZTX0xB\n" - "WU9VVF9SRVRVUk5fUkVRVUVTVEVEIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBsYXlvdXQgc3RhdGVp\n" - "ZA0KICAgICAgcE5GUzogRm9yY2UgYSByZXRyeSBvZiBMQVlPVVRHRVQgaWYgdGhlIHN0YXRlaWQg\n" - "ZG9lc24ndCBtYXRjaCBvdXIgY2FjaGUNCiAgICAgIHBORlM6IE9uIGVycm9yLCBkbyBub3Qgc2Vu\n" - "ZCBMQVlPVVRHRVQgdW50aWwgdGhlIExBWU9VVFJFVFVSTiBoYXMgY29tcGxldGVkDQogICAgICBw\n" - "TkZTOiBGaXggcmFjZSBpbiBwbmZzX3dhaXRfb25fbGF5b3V0cmV0dXJuDQogICAgICBwTkZTOiBj\n" - "b25zb2xpZGF0ZSB0aGUgZGlmZmVyZW50IHJhbmdlIGludGVyc2VjdGlvbiB0ZXN0cw0KICAgICAg\n" - "cE5GUzogRGVsYXkgZ2V0dGluZyB0aGUgbGF5b3V0IGhlYWRlciBpbiBDQl9MQVlPVVRSRUNBTEwg\n" - "aGFuZGxlcnMNCiAgICAgIHBORlM6IERvIG5vdCBmcmVlIGxheW91dCBzZWdtZW50cyB0aGF0IGFy\n" - "ZSBtYXJrZWQgZm9yIHJldHVybg0KICAgICAgTkZTdjQ6IElnbm9yZSBMQVlPVVRSRVRVUk4gcmVz\n" - "dWx0IGlmIHRoZSBsYXlvdXQgZG9lc24ndCBtYXRjaCBvciBpcyBpbnZhbGlkDQogICAgICBwTkZT\n" - "OiBSZW1vdmUgc3B1cmlvdXMgd2FrZSB1cCBpbiBwbmZzX2xheW91dF9yZW1vdmVfbHNlZygpDQog\n" - "ICAgICBwTkZTOiBTa2lwIGNoZWNraW5nIGZvciByZXR1cm4tb24tY2xvc2UgaWYgdGhlIGxheW91\n" - "dCBpcyBpbnZhbGlkDQogICAgICBwTkZTOiBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IGxheW91dCBw\n" - "YXJhbWV0ZXIgaW4gZW5jb2RlX2xheW91dHJldHVybiBjYWxsYmFjaw0KICAgICAgcE5GUzogRG9u\n" - "J3QgbWFyayBsYXlvdXQgc2VnbWVudHMgaW52YWxpZCBvbiBsYXlvdXRyZXR1cm4gaW4gcG5mc19y\n" - "b2MNCiAgICAgIE5GU3Y0OiBGaXggbWlzc2luZyBvcGVyYXRpb24gYWNjb3VudGluZyBpbiBORlM0\n" - "X2RlY19kZWxlZ3JldHVybl9zeg0KICAgICAgTkZTdjQ6IEFkZCBlbmNvZGUvZGVjb2RlIG9mIHRo\n" - "ZSBsYXlvdXRyZXR1cm4gb3AgaW4gQ0xPU0UNCiAgICAgIE5GU3Y0OiBBZGQgZW5jb2RlL2RlY29k\n" - "ZSBvZiB0aGUgbGF5b3V0cmV0dXJuIG9wIGluIERFTEVHUkVUVVJODQogICAgICBwTkZTOiBDbGVh\n" - "biB1cCAtIGFkZCBhIGhlbHBlciB0byBpbml0aWFsaXNlIHN0cnVjdCBsYXlvdXRyZXR1cm5fYXJn\n" - "cw0KICAgICAgcE5GUzogRW5hYmxlIGxheW91dHJldHVybiBvcGVyYXRpb24gZm9yIHJldHVybi1v\n" - "bi1jbG9zZQ0KICAgICAgcE5GUzogUHJldmVudCB1bm5lY2Vzc2FyeSBsYXlvdXRyZXR1cm5zIGFm\n" - "dGVyIGRlbGVncmV0dXJuDQogICAgICBwTkZTOiBDbGVhciBhbGwgbGF5b3V0IHNlZ21lbnQgc3Rh\n" - "dGUgaW4gcG5mc19tYXJrX2xheW91dF9zdGF0ZWlkX2ludmFsaWQNCiAgICAgIHBORlM6IEZpeCBi\n" - "dWdzIGluIF9wbmZzX3JldHVybl9sYXlvdXQNCiAgICAgIHBORlM6IFN5bmMgdGhlIGxheW91dCBz\n" - "dGF0ZSBiaXRzIGluIHBuZnNfY2FjaGVfbHNlZ19mb3JfbGF5b3V0cmV0dXJuDQogICAgICBwTkZT\n" - "OiBEb24ndCBtYXJrIHRoZSBsYXlvdXQgYXMgZnJlZWQgaWYgdGhlIGxhc3QgbHNlZyBpcyBtYXJr\n" - "ZWQgZm9yIHJldHVybg0KICAgICAgcE5GUzogV2FpdCBvbiBvdXRzdGFuZGluZyBsYXlvdXRyZXR1\n" - "cm5zIHRvIGNvbXBsZXRlIGluIHBuZnNfcm9jKCkNCiAgICAgIHBORlM6IFNraXAgaW52YWxpZCBz\n" - "dGF0ZWlkcyB3aGVuIGRvaW5nIGEgYnVsayBkZXN0cm95DQogICAgICBORlM6IEZpeCBhIHBlcmZv\n" - "cm1hbmNlIHJlZ3Jlc3Npb24gaW4gcmVhZGRpcg0KICAgICAgTkZTOiBCZSBtb3JlIHRhcmdldGVk\n" - "IGFib3V0IHJlYWRkaXJwbHVzIHVzZSB3aGVuIGRvaW5nIGxvb2t1cC9yZXZhbGlkYXRpb24NCiAg\n" - "ICAgIE5GUzogQWxsb3cgZ2V0YXR0ciB0byBhbHNvIHJlcG9ydCByZWFkZGlycGx1cyBjYWNoZSBo\n" - "aXRzDQogICAgICBwTkZTL2ZsZXhmaWxlczogRG9uJ3QgYXR0ZW1wdCB0byBzZW5kIGxheW91dHN0\n" - "YXRzIGlmIHRoZXJlIGFyZSBubyBlbnRyaWVzDQogICAgICBwTkZTL2ZsZXhmaWxlczogT25seSBz\n" - "ZW5kIGxheW91dHN0YXRzIHVwZGF0ZXMgZm9yIG1pcnJvcnMgdGhhdCB3ZXJlIHVwZGF0ZWQNCiAg\n" - "ICAgIE5GU3Y0OiBBZGQgYSBnZW5lcmljIHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgbGF5b3V0LXBy\n" - "aXZhdGUgaW5mb3JtYXRpb24NCiAgICAgIHBORlM6IEFsbG93IGxheW91dCBkcml2ZXJzIHRvIG1h\n" - "bmFnZSBwcml2YXRlIGRhdGEgaW4gc3RydWN0IG5mczRfbGF5b3V0cmV0dXJuDQogICAgICBwTkZT\n" - "OiBBZGQgYSBsYXlvdXRyZXR1cm4gY2FsbGJhY2sgdG8gcGVyZm9ybWEgbGF5b3V0LXByaXZhdGUg\n" - "c2V0dXANCiAgICAgIHBORlMvZmxleGZpbGVzOiBSZWZhY3RvciBlbmNvZGluZyBvZiB0aGUgbGF5\n" - "b3V0cmV0dXJuIHBheWxvYWQNCiAgICAgIHBORlMvZmxleGZpbGVzOiBDbGVhbiB1cCBsYXlvdXRz\n" - "dGF0cw0KICAgICAgTkZTOiBGaXggdXAgcmVhZCBvZiBtaXJyb3Igc3RhdHMNCiAgICAgIHBORlMv\n" - "ZmxleGZpbGVzOiBNaW5vciByZWZhY3RvcmluZyBiZWZvcmUgYWRkaW5nIGlvc3RhdHMgdG8gbGF5\n" - "b3V0cmV0dXJuDQogICAgICBwTkZTL2ZsZXhmaWxlczogU3VwcG9ydCBzZW5kaW5nIGxheW91dHN0\n" - "YXRzIGluIGxheW91dHJldHVybg0KICAgICAgTkZTOiBGaXggaW5jb3JyZWN0IG1hcHBpbmcgcmV2\n" - "YWxpZGF0aW9uIHdoZW4gaG9sZGluZyBhIGRlbGVnYXRpb24NCiAgICAgIE5GUzogRml4IGluY29y\n" - "cmVjdCBzaXplIHJldmFsaWRhdGlvbiB3aGVuIGhvbGRpbmcgYSBkZWxlZ2F0aW9uDQogICAgICBO\n" - "RlM6IE9ubHkgbG9vayBhdCB0aGUgY2hhbmdlIGF0dHJpYnV0ZSBjYWNoZSBzdGF0ZSBpbiBuZnNf\n" - "Y2hlY2tfdmVyaWZpZXINCiAgICAgIE5GU3Y0LjE6IEhhbmRsZSBORlM0RVJSX0JBRFNFU1NJT04v\n" - "TkZTNEVSUl9ERUFEU0VTU0lPTiByZXBsaWVzIHRvIE9QX1NFUVVFTkNFDQogICAgICBORlN2NC4x\n" - "OiBEb24ndCBzY2hlZHVsZSBsZWFzZSByZWNvdmVyeSBpbiBuZnM0X3NjaGVkdWxlX3Nlc3Npb25f\n" - "cmVjb3ZlcnkoKQ0KICAgICAgcE5GUzogUmVsZWFzZSBORlNfTEFZT1VUX1JFVFVSTiB3aGVuIGlu\n" - "dmFsaWRhdGluZyB0aGUgbGF5b3V0IHN0YXRlaWQNCiAgICAgIHBORlMvZmxleGZpbGVzOiBGaXgg\n" - "ZmZfbGF5b3V0X2FkZF9kc19lcnJvcl9sb2NrZWQoKQ0KICAgICAgcE5GUzogTGF5b3V0cmV0dXJu\n" - "IG11c3QgZnJlZSB0aGUgbGF5b3V0IGFmdGVyIHRoZSBsYXlvdXQtcHJpdmF0ZSBkYXRhDQogICAg\n" - "ICBwTkZTL2ZsZXhmaWxlczogUmVtb3ZlIGEgcmVkdW5kYW50IHBhcmFtZXRlciBpbiBmZl9sYXlv\n" - "dXRfZW5jb2RlX2lvZXJyKCkNCiAgICAgIHBORlMvZmxleGZpbGVzOiBFbnN1cmUgd2UgaGF2ZSBl\n" - "bm91Z2ggYnVmZmVyIGZvciBsYXlvdXRyZXR1cm4NCiAgICAgIE1lcmdlIHRhZyAnbmZzLXJkbWEt\n" - "NC4xMC0xJyBvZiBnaXQ6Ly9naXQubGludXgtbmZzLm9yZy9wcm9qZWN0cy9hbm5hL25mcy1yZG1h\n" - "DQoNCldlaSBZb25nanVuICgxKToNCiAgICAgIE5GUzogZml4IHR5cG8gaW4gcGFyYW1ldGVyIGRl\n" - "c2NyaXB0aW9uDQoNCiBmcy9uZnMvY2FsbGJhY2tfcHJvYy5jICAgICAgICAgICAgICAgICAgICB8\n" - "ICA5OSArKysrKy0tLQ0KIGZzL25mcy9jbGllbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg\n" - "IHwgICA2ICstDQogZnMvbmZzL2RlbGVnYXRpb24uYyAgICAgICAgICAgICAgICAgICAgICAgfCAg\n" - "IDQgLQ0KIGZzL25mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDczICsr\n" - "Ky0tLQ0KIGZzL25mcy9kaXJlY3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICst\n" - "DQogZnMvbmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0NCiBm\n" - "cy9uZnMvZmlsZWxheW91dC9maWxlbGF5b3V0ZGV2LmMgICAgICAgICB8ICAgMyArLQ0KIGZzL25m\n" - "cy9mbGV4ZmlsZWxheW91dC9mbGV4ZmlsZWxheW91dC5jICAgIHwgMzEzICsrKysrKysrKysrKysr\n" - "Ky0tLS0tLS0tDQogZnMvbmZzL2ZsZXhmaWxlbGF5b3V0L2ZsZXhmaWxlbGF5b3V0LmggICAgfCAg\n" - "MjMgKy0NCiBmcy9uZnMvZmxleGZpbGVsYXlvdXQvZmxleGZpbGVsYXlvdXRkZXYuYyB8IDE1MSAr\n" - "KysrKysrLS0tLQ0KIGZzL25mcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg\n" - "IDUxICsrLS0NCiBmcy9uZnMvaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg\n" - "OSArLQ0KIGZzL25mcy9uZnMzY2xpZW50LmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICst\n" - "DQogZnMvbmZzL25mczQycHJvYy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0NCiBm\n" - "cy9uZnMvbmZzNDJ4ZHIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQ0KIGZzL25m\n" - "cy9uZnM0X2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogZnMvbmZzL25m\n" - "czRjbGllbnQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMzIgKystDQogZnMvbmZzL25mczRm\n" - "aWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCiBmcy9uZnMvbmZzNHByb2Mu\n" - "YyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIzMyArKysrKysrKysrKy0tLS0tLQ0KIGZzL25m\n" - "cy9uZnM0c2Vzc2lvbi5jICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogZnMvbmZzL25m\n" - "czRzdGF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjcgKy0NCiBmcy9uZnMvbmZzNHhk\n" - "ci5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5NiArKysrKy0tDQogZnMvbmZzL29iamxh\n" - "eW91dC9vYmpsYXlvdXQuYyAgICAgICAgICAgICAgfCAgIDQgKy0NCiBmcy9uZnMvb2JqbGF5b3V0\n" - "L29iamxheW91dC5oICAgICAgICAgICAgICB8ICAgMSAtDQogZnMvbmZzL3BhZ2VsaXN0LmMgICAg\n" - "ICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0NCiBmcy9uZnMvcG5mcy5jICAgICAgICAgICAg\n" - "ICAgICAgICAgICAgICAgICB8IDQwNyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCiBm\n" - "cy9uZnMvcG5mcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NyArKysrLS0NCiBm\n" - "cy9uZnMvcG5mc19uZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQ0KIGZzL25m\n" - "cy9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogZnMvbmZzL3dy\n" - "aXRlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0NCiBpbmNsdWRlL2xpbnV4\n" - "L25mczQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogaW5jbHVkZS9saW51eC9uZnNf\n" - "ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0NCiBpbmNsdWRlL2xpbnV4L25mc194ZHIu\n" - "aCAgICAgICAgICAgICAgICAgICB8ICAyNyArLQ0KIG5ldC9zdW5ycGMvYXV0aF9nc3MvYXV0aF9n\n" - "c3MuYyAgICAgICAgICAgIHwgICA3ICstDQogbmV0L3N1bnJwYy9jbG50LmMgICAgICAgICAgICAg\n" - "ICAgICAgICAgICAgfCAgIDIgKw0KIG5ldC9zdW5ycGMvc3RhdHMuYyAgICAgICAgICAgICAgICAg\n" - "ICAgICAgIHwgIDEwICstDQogbmV0L3N1bnJwYy94cHJ0LmMgICAgICAgICAgICAgICAgICAgICAg\n" - "ICAgfCAgIDMgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL2JhY2tjaGFubmVsLmMgICAgICAgICB8\n" - "ICAgNCArLQ0KIG5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYyAgICAgICAgICAgIHwgIDk0\n" - "ICsrKystLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3JwY19yZG1hLmMgICAgICAgICAgICB8ICAz\n" - "NiArLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jICAgICAgICAgICB8ICAzNCAr\n" - "Ky0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMgICAgICAgICAgICAgICB8ICAzNyArLS0N\n" - "CiBuZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5oICAgICAgICAgICB8ICAzMSArKy0NCiA0\n" - "MyBmaWxlcyBjaGFuZ2VkLCAxMjU4IGluc2VydGlvbnMoKyksIDcyNiBkZWxldGlvbnMoLSkNCg0K\n" - "LS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lciwgUHJpbWFy\n" - eURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5jb20NCg== + "Hi Linus,\n" + "\n" + "The following changes since commit e5517c2a5a49ed5e99047008629f1cd60246ea0e:\n" + "\n" + " Linux 4.9-rc7 (2016-11-27 13:08:04 -0800)\n" + "\n" + "are available in the git repository at:\n" + "\n" + " git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tags/nfs-for-4.10-1\n" + "\n" + "for you to fetch changes up to 2549f307b5997bf5dd91071428e8090d9faa8b1b:\n" + "\n" + " Merge tag 'nfs-rdma-4.10-1' of git://git.linux-nfs.org/projects/anna/nfs-rdma (2016-12-10 10:31:44 -0500)\n" + "\n" + "Cheers\n" + " Trond\n" + "\n" + "----------------------------------------------------------------\n" + "NFS client updates for Linux 4.10\n" + "\n" + "Highlights include:\n" + "\n" + "Stable bugfixes:\n" + " - Fix a pnfs deadlock between read resends and layoutreturn\n" + " - Don't invalidate the layout stateid while a layout return is outstanding\n" + " - Don't schedule a layoutreturn if the layout stateid is marked as invalid\n" + " - On a pNFS error, do not send LAYOUTGET until the LAYOUTRETURN is complete\n" + " - SUNRPC: fix refcounting problems with auth_gss messages.\n" + "\n" + "Features:\n" + " - Add client support for the NFSv4 umask attribute.\n" + " - NFSv4: Correct support for flock() stateids.\n" + " - Add a LAYOUTRETURN operation to CLOSE and DELEGRETURN when return-on-close\n" + " is specified\n" + " - Allow the pNFS/flexfiles layoutstat information to piggyback on LAYOUTRETURN\n" + " - Optimise away redundant GETATTR calls when doing state recovery and/or\n" + " when not required by cache revalidation rules or close-to-open cache\n" + " consistency.\n" + " - Attribute cache improvements\n" + " - RPC/RDMA support for SG_GAP devices\n" + "\n" + "Bugfixes:\n" + " - NFS: Fix performance regressions in readdir\n" + " - pNFS/flexfiles: Fix a deadlock on LAYOUTGET\n" + " - NFSv4: Add missing nfs_put_lock_context()\n" + " - NFSv4.1: Fix regression in callback retry handling\n" + " - Fix false positive NFSv4.0 trunking detection.\n" + " - pNFS/flexfiles: Only send layoutstats updates for mirrors that were updated\n" + " - Various layout stateid related bugfixes\n" + " - RPC/RDMA bugfixes\n" + "\n" + "----------------------------------------------------------------\n" + "Andreas Gruenbacher (1):\n" + " nfs: add support for the umask attribute\n" + "\n" + "Anna Schumaker (2):\n" + " NFS: Remove unused authflavour parameter from nfs_get_client()\n" + " NFS: Remove unused argument from nfs_direct_write_complete()\n" + "\n" + "Chuck Lever (12):\n" + " xprtrdma: Cap size of callback buffer resources\n" + " xprtrdma: Make FRWR send queue entry accounting more accurate\n" + " xprtrdma: Support for SG_GAP devices\n" + " SUNRPC: Proper metric accounting when RPC is not transmitted\n" + " xprtrdma: Address coverity complaint about wait_for_completion()\n" + " xprtrdma: Avoid calls to ro_unmap_safe()\n" + " xprtrdma: Refactor FRMR invalidation\n" + " xprtrdma: Update documenting comment\n" + " xprtrdma: Squelch \"max send, max recv\" messages at connect time\n" + " xprtrdma: Shorten QP access error message\n" + " xprtrdma: Update dprintk in rpcrdma_count_chunks\n" + " xprtrdma: Relocate connection helper functions\n" + "\n" + "Fred Isaman (2):\n" + " NFSv4.1: Fix regression in callback retry handling\n" + " pNFS/flexfiles: Fix a deadlock on LAYOUTGET\n" + "\n" + "J. Bruce Fields (1):\n" + " nfs: fix false positives in nfs40_walk_client_list()\n" + "\n" + "NeilBrown (9):\n" + " sunrpc: Don't engage exponential backoff when connection attempt is rejected.\n" + " NFS: remove l_pid field from nfs_lockowner\n" + " NFSv4: add flock_owner to open context\n" + " NFSv4: change nfs4_do_setattr to take an open_context instead of a nfs4_state.\n" + " NFSv4: change nfs4_select_rw_stateid to take a lock_context inplace of lock_owner\n" + " NFSv4: enhance nfs4_copy_lock_stateid to use a flock stateid if there is one\n" + " NFS: discard nfs_lockowner structure.\n" + " NFSv4: Add missing nfs_put_lock_context()\n" + " SUNRPC: fix refcounting problems with auth_gss messages.\n" + "\n" + "Trond Myklebust (55):\n" + " NFSv4: Don't check file access when reclaiming state\n" + " NFSv4: Don't ask for the change attribute when reclaiming state\n" + " NFSv4: Don't request a GETATTR on open_downgrade.\n" + " NFSv4: Don't request close-to-open attribute when holding a delegation\n" + " NFSv4: Optimise away forced revalidation when we know the attributes are OK\n" + " pNFS: Fix a deadlock between read resends and layoutreturn\n" + " pNFS: Don't clear the layout stateid if a layout return is outstanding\n" + " pNFS: Clear NFS_LAYOUT_RETURN_REQUESTED when invalidating the layout stateid\n" + " pNFS: Force a retry of LAYOUTGET if the stateid doesn't match our cache\n" + " pNFS: On error, do not send LAYOUTGET until the LAYOUTRETURN has completed\n" + " pNFS: Fix race in pnfs_wait_on_layoutreturn\n" + " pNFS: consolidate the different range intersection tests\n" + " pNFS: Delay getting the layout header in CB_LAYOUTRECALL handlers\n" + " pNFS: Do not free layout segments that are marked for return\n" + " NFSv4: Ignore LAYOUTRETURN result if the layout doesn't match or is invalid\n" + " pNFS: Remove spurious wake up in pnfs_layout_remove_lseg()\n" + " pNFS: Skip checking for return-on-close if the layout is invalid\n" + " pNFS: Get rid of unnecessary layout parameter in encode_layoutreturn callback\n" + " pNFS: Don't mark layout segments invalid on layoutreturn in pnfs_roc\n" + " NFSv4: Fix missing operation accounting in NFS4_dec_delegreturn_sz\n" + " NFSv4: Add encode/decode of the layoutreturn op in CLOSE\n" + " NFSv4: Add encode/decode of the layoutreturn op in DELEGRETURN\n" + " pNFS: Clean up - add a helper to initialise struct layoutreturn_args\n" + " pNFS: Enable layoutreturn operation for return-on-close\n" + " pNFS: Prevent unnecessary layoutreturns after delegreturn\n" + " pNFS: Clear all layout segment state in pnfs_mark_layout_stateid_invalid\n" + " pNFS: Fix bugs in _pnfs_return_layout\n" + " pNFS: Sync the layout state bits in pnfs_cache_lseg_for_layoutreturn\n" + " pNFS: Don't mark the layout as freed if the last lseg is marked for return\n" + " pNFS: Wait on outstanding layoutreturns to complete in pnfs_roc()\n" + " pNFS: Skip invalid stateids when doing a bulk destroy\n" + " NFS: Fix a performance regression in readdir\n" + " NFS: Be more targeted about readdirplus use when doing lookup/revalidation\n" + " NFS: Allow getattr to also report readdirplus cache hits\n" + " pNFS/flexfiles: Don't attempt to send layoutstats if there are no entries\n" + " pNFS/flexfiles: Only send layoutstats updates for mirrors that were updated\n" + " NFSv4: Add a generic structure for managing layout-private information\n" + " pNFS: Allow layout drivers to manage private data in struct nfs4_layoutreturn\n" + " pNFS: Add a layoutreturn callback to performa layout-private setup\n" + " pNFS/flexfiles: Refactor encoding of the layoutreturn payload\n" + " pNFS/flexfiles: Clean up layoutstats\n" + " NFS: Fix up read of mirror stats\n" + " pNFS/flexfiles: Minor refactoring before adding iostats to layoutreturn\n" + " pNFS/flexfiles: Support sending layoutstats in layoutreturn\n" + " NFS: Fix incorrect mapping revalidation when holding a delegation\n" + " NFS: Fix incorrect size revalidation when holding a delegation\n" + " NFS: Only look at the change attribute cache state in nfs_check_verifier\n" + " NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE\n" + " NFSv4.1: Don't schedule lease recovery in nfs4_schedule_session_recovery()\n" + " pNFS: Release NFS_LAYOUT_RETURN when invalidating the layout stateid\n" + " pNFS/flexfiles: Fix ff_layout_add_ds_error_locked()\n" + " pNFS: Layoutreturn must free the layout after the layout-private data\n" + " pNFS/flexfiles: Remove a redundant parameter in ff_layout_encode_ioerr()\n" + " pNFS/flexfiles: Ensure we have enough buffer for layoutreturn\n" + " Merge tag 'nfs-rdma-4.10-1' of git://git.linux-nfs.org/projects/anna/nfs-rdma\n" + "\n" + "Wei Yongjun (1):\n" + " NFS: fix typo in parameter description\n" + "\n" + " fs/nfs/callback_proc.c | 99 +++++---\n" + " fs/nfs/client.c | 6 +-\n" + " fs/nfs/delegation.c | 4 -\n" + " fs/nfs/dir.c | 73 +++---\n" + " fs/nfs/direct.c | 12 +-\n" + " fs/nfs/file.c | 5 +-\n" + " fs/nfs/filelayout/filelayoutdev.c | 3 +-\n" + " fs/nfs/flexfilelayout/flexfilelayout.c | 313 +++++++++++++++--------\n" + " fs/nfs/flexfilelayout/flexfilelayout.h | 23 +-\n" + " fs/nfs/flexfilelayout/flexfilelayoutdev.c | 151 +++++++----\n" + " fs/nfs/inode.c | 51 ++--\n" + " fs/nfs/internal.h | 9 +-\n" + " fs/nfs/nfs3client.c | 5 +-\n" + " fs/nfs/nfs42proc.c | 9 +-\n" + " fs/nfs/nfs42xdr.c | 5 +-\n" + " fs/nfs/nfs4_fs.h | 2 +-\n" + " fs/nfs/nfs4client.c | 32 ++-\n" + " fs/nfs/nfs4file.c | 2 +-\n" + " fs/nfs/nfs4proc.c | 233 +++++++++++------\n" + " fs/nfs/nfs4session.c | 2 +-\n" + " fs/nfs/nfs4state.c | 27 +-\n" + " fs/nfs/nfs4xdr.c | 96 +++++--\n" + " fs/nfs/objlayout/objlayout.c | 4 +-\n" + " fs/nfs/objlayout/objlayout.h | 1 -\n" + " fs/nfs/pagelist.c | 3 +-\n" + " fs/nfs/pnfs.c | 407 ++++++++++++++++++------------\n" + " fs/nfs/pnfs.h | 77 ++++--\n" + " fs/nfs/pnfs_nfs.c | 28 +-\n" + " fs/nfs/super.c | 2 +-\n" + " fs/nfs/write.c | 3 +-\n" + " include/linux/nfs4.h | 1 +\n" + " include/linux/nfs_fs.h | 11 +-\n" + " include/linux/nfs_xdr.h | 27 +-\n" + " net/sunrpc/auth_gss/auth_gss.c | 7 +-\n" + " net/sunrpc/clnt.c | 2 +\n" + " net/sunrpc/stats.c | 10 +-\n" + " net/sunrpc/xprt.c | 3 +-\n" + " net/sunrpc/xprtrdma/backchannel.c | 4 +-\n" + " net/sunrpc/xprtrdma/frwr_ops.c | 94 ++++---\n" + " net/sunrpc/xprtrdma/rpc_rdma.c | 36 +--\n" + " net/sunrpc/xprtrdma/transport.c | 34 ++-\n" + " net/sunrpc/xprtrdma/verbs.c | 37 +--\n" + " net/sunrpc/xprtrdma/xprt_rdma.h | 31 ++-\n" + " 43 files changed, 1258 insertions(+), 726 deletions(-)\n" + "\n" + "-- \n" + "Trond Myklebust\n" + "Linux NFS client maintainer, PrimaryData\n" + trond.myklebust@primarydata.com -fe957cc41eb71d684947b83730004f8b68ae63b152cfd6b8afddbeee2f3a1504 +2d1e4605a8018554a0a7fb770de2f0350709b7d95928ba3a3add7a2716be7c7c
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.