diff for duplicates of <1505163285.11130.1.camel@primarydata.com> diff --git a/a/1.txt b/N1/1.txt index d9053a6..c021b40 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,152 +1,170 @@ -SGkgTGludXMsDQoNClRoZSBmb2xsb3dpbmcgY2hhbmdlcyBzaW5jZSBjb21taXQgZWY5NTQ4NDRj -N2FjZTYyZjc3M2Y0ZjIzZTI4ZDJkOTE1YWRjNDE5ZjoNCg0KICBMaW51eCA0LjEzLXJjNSAoMjAx -Ny0wOC0xMyAxNjowMTozMiAtMDcwMCkNCg0KYXJlIGF2YWlsYWJsZSBpbiB0aGUgZ2l0IHJlcG9z -aXRvcnkgYXQ6DQoNCiAgZ2l0Oi8vZ2l0LmxpbnV4LW5mcy5vcmcvcHJvamVjdHMvdHJvbmRteS9s -aW51eC1uZnMuZ2l0IHRhZ3MvbmZzLWZvci00LjE0LTENCg0KZm9yIHlvdSB0byBmZXRjaCBjaGFu -Z2VzIHVwIHRvIDFiZDVkNmQwOGVhN2VkMDc5NGM4YTM5MDgzODNkNmQ2ZmMyMDJjZGQ6DQoNCiAg -TkZTOiBDb3VudCB0aGUgYnl0ZXMgb2Ygc2tpcHBlZCBzdWJyZXF1ZXN0cyBpbiBuZnNfbG9ja19h -bmRfam9pbl9yZXF1ZXN0cygpICgyMDE3LTA5LTA5IDE2OjQzOjA5IC0wNDAwKQ0KDQotLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -DQpORlMgY2xpZW50IHVwZGF0ZXMgZm9yIExpbnV4IDQuMTQNCg0KSGlnaHRsaWdodHMgaW5jbHVk -ZToNCg0KU3RhYmxlIGJ1Z2ZpeGVzOg0KLSBGaXggbWlycm9yIGFsbG9jYXRpb24gaW4gdGhlIHdy -aXRlYmFjayBjb2RlIHRvIGF2b2lkIGEgdXNlIGFmdGVyIGZyZWUNCi0gRml4IHRoZSBPX0RTWU5D -IHdyaXRlcyB0byB1c2UgdGhlIGNvcnJlY3QgYnl0ZSByYW5nZQ0KLSBGaXggMiB1c2UgYWZ0ZXIg -ZnJlZSBpc3N1ZXMgaW4gdGhlIEkvTyBjb2RlDQoNCkZlYXR1cmVzOg0KLSBXcml0ZWJhY2sgZml4 -ZXMgdG8gc3BsaXQgdXAgdGhlIGlub2RlLT5pX2xvY2sgaW4gb3JkZXIgdG8gcmVkdWNlIGNvbnRl -bnRpb24NCi0gUlBDIGNsaWVudCByZWNlaXZlIGZpeGVzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9m -IHRpbWUgdGhlDQogIHhwcnQtPnRyYW5zcG9ydF9sb2NrIGlzIGhlbGQgd2hlbiByZWNlaXZpbmcg -ZGF0YSBmcm9tIGEgc29ja2V0IGludG8gYW0NCiAgWERSIGJ1ZmZlci4NCi0gRGl0dG8gZml4ZXMg -dG8gcmVkdWNlIGNvbnRlbnRpb24gYmV0d2VlbiBjYWxsIHNpZGUgdXNlcnMgb2YgdGhlIHJkbWEN -CiAgcmJfbG9jaywgYW5kIGl0cyB1c2UgaW4gcnBjcmRtYV9yZXBseV9oYW5kbGVyLg0KLSBSZS1h -cnJhbmdlIHJkbWEgc3RhdHMgdG8gcmVkdWNlIGZhbHNlIGNhY2hlbGluZSBzaGFyaW5nLg0KLSBW -YXJpb3VzIHJkbWEgY2xlYW51cHMgYW5kIG9wdGltaXNhdGlvbnMuDQotIFJlZmFjdG9yIHRoZSBO -RlN2NC4xIGV4Y2hhbmdlIGlkIGNvZGUgYW5kIGNsZWFuIHVwIHRoZSBjb2RlLg0KLSBDb25zdC1p -ZnkgYWxsIGluc3RhbmNlcyBvZiBzdHJ1Y3QgcnBjX3hwcnRfb3BzDQoNCkJ1Z2ZpeGVzOg0KLSBG -aXggdGhlIE5GU3YyICdzZWM9JyBtb3VudCBvcHRpb24uDQotIE5GU3Y0LjE6IGRvbid0IHVzZSBt -YWNoaW5lIGNyZWRlbnRpYWxzIGZvciBDTE9TRSB3aGVuIHVzaW5nICdzZWM9c3lzJw0KLSBGaXgg -dGhlIE5GU3YzIEdSQU5UIGNhbGxiYWNrIHdoZW4gdGhlIHBvcnQgY2hhbmdlcyBvbiB0aGUgc2Vy -dmVyLg0KLSBGaXggbGl2ZWxvY2sgaXNzdWVzIHdpdGggQ09NTUlUDQotIE5GU3Y0OiBVc2UgY29y -cmVjdCBpbm9kZSBpbiBfbmZzNF9vcGVuZGF0YV90b19uZnM0X3N0YXRlKCkgd2hlbiBkb2luZw0K -ICBhbmQgTkZTdjQuMSBvcGVuIGJ5IGZpbGVoYW5kbGUuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNodWNrIExldmVy -ICgxOCk6DQogICAgICBzdW5ycGM6IENvbnN0LWlmeSBhbGwgaW5zdGFuY2VzIG9mIHN0cnVjdCBy -cGNfeHBydF9vcHMNCiAgICAgIHhwcnRyZG1hOiBBZGQgeGRyX2luaXRfZGVjb2RlIHRvIHJwY3Jk -bWFfcmVwbHlfaGFuZGxlcigpDQogICAgICB4cHJ0cmRtYTogSGFyZGVuIGJhY2tjaGFubmVsIGNh -bGwgZGVjb2RpbmcNCiAgICAgIHhwcnRyZG1hOiBSZWZhY3RvciBycGNyZG1hX3JlcGx5X2hhbmRs -ZXIoKQ0KICAgICAgeHBydHJkbWE6IFJlcGxhY2UgcnBjcmRtYV9jb3VudF9jaHVua3MoKQ0KICAg -ICAgeHBydHJkbWE6IFJlbW92ZSBvcGNvZGUgY2hlY2sgaW4gUmVjZWl2ZSBjb21wbGV0aW9uIGhh -bmRsZXINCiAgICAgIHhwcnRyZG1hOiBSZW1vdmUgcnBjcmRtYV9yZXA6OnJyX2xlbg0KICAgICAg -eHBydHJkbWE6IENsZWFuIHVwIFhEUiBkZWNvZGluZyBpbiBycGNyZG1hX3VwZGF0ZV9ncmFudGVk -X2NyZWRpdHMoKQ0KICAgICAgeHBydHJkbWE6IENsZWFuIHVwIHJwY3JkbWFfbWFyc2hhbF9yZXEo -KSBzeW5vcHNpcw0KICAgICAgeHBydHJkbWE6IFJlbW92ZSBycGNsZW4gZnJvbSBycGNyZG1hX21h -cnNoYWxfcmVxDQogICAgICB4cHJ0cmRtYTogU2V0IHVwIGFuIHhkcl9zdHJlYW0gaW4gcnBjcmRt -YV9tYXJzaGFsX3JlcSgpDQogICAgICB4cHJ0cmRtYTogSGFyZGVuIGNodW5rIGxpc3QgZW5jb2Rp -bmcgYWdhaW5zdCBzZW5kIGJ1ZmZlciBvdmVyZmxvdw0KICAgICAgeHBydHJkbWE6IENsZWFuIHVw -IHJwY3JkbWFfYmNfbWFyc2hhbF9yZXBseSgpDQogICAgICB4cHJ0cmRtYTogUmVtb3ZlIGltdWwg -aW5zdHJ1Y3Rpb25zIGZyb20gcnBjcmRtYV9jb252ZXJ0X2lvdnMoKQ0KICAgICAgeHBydHJkbWE6 -IFJlbW92ZSBpbXVsIGluc3RydWN0aW9ucyBmcm9tIGNodW5rIGxpc3QgZW5jb2RlcnMNCiAgICAg -IE5GUzogRml4IE5GU3YyIHNlY3VyaXR5IHNldHRpbmdzDQogICAgICB4cHJ0cmRtYTogUmUtYXJy -YW5nZSBzdHJ1Y3Qgcnhfc3RhdHMNCiAgICAgIHhwcnRyZG1hOiBVc2UgeHBydF9waW5fcnFzdCBp -biBycGNyZG1hX3JlcGx5X2hhbmRsZXINCg0KTWFya3VzIEVsZnJpbmcgKDEpOg0KICAgICAgbG9j -a2Q6IERlbGV0ZSBhbiBlcnJvciBtZXNzYWdlIGZvciBhIGZhaWxlZCBtZW1vcnkgYWxsb2NhdGlv -biBpbiByZWNsYWltZXIoKQ0KDQpOZWlsQnJvd24gKDYpOg0KICAgICAgU1VOUlBDOiBFQ09OTlJF -RlVTRUQgc2hvdWxkIGNhdXNlIGEgcmViaW5kLg0KICAgICAgTkZTdjQuMTogZG9uJ3QgdXNlIG1h -Y2hpbmUgY3JlZGVudGlhbHMgZm9yIENMT1NFIHdoZW4gdXNpbmcgJ3NlYz1zeXMnDQogICAgICBO -RlM6IGRvbid0IGV4cGVjdCBlcnJvcnMgZnJvbSBtZW1wb29sX2FsbG9jKCkuDQogICAgICBTVU5S -UEM6IHJlbW92ZSBzb21lIGRlYWQgY29kZS4NCiAgICAgIE5GUzogZmx1c2ggZGF0YSB3aGVuIGxv -Y2tpbmcgYSBmaWxlIHRvIGVuc3VyZSBjYWNoZSBjb2hlcmVuY2UgZm9yIG1tYXAuDQogICAgICBO -RlM6IHJlbW92ZSBqaWZmaWVzIGZpZWxkIGZyb20gYWNjZXNzIGNhY2hlDQoNClRyb25kIE15a2xl -YnVzdCAoNDgpOg0KICAgICAgTkZTdjQ6IFJlZmFjdG9yIF9uZnM0X3Byb2NfZXhjaGFuZ2VfaWQo -KQ0KICAgICAgTkZTdjQuMTogRW5zdXJlIHdlIGNsZWFyIHRoZSBTUDRfTUFDSF9DUkVEIGZsYWdz -IGluIG5mczRfc3A0X3NlbGVjdF9tb2RlKCkNCiAgICAgIE5GU3Y0OiBDbGVhbnVwIHNldHRpbmcg -b2YgdGhlIG1pZ3JhdGlvbiBmbGFncy4NCiAgICAgIE1lcmdlIGJyYW5jaCAnZXhjaGFuZ2VfaWQn -DQogICAgICBORlN2NDogVXNlIGNvcnJlY3QgaW5vZGUgaW4gX25mczRfb3BlbmRhdGFfdG9fbmZz -NF9zdGF0ZSgpDQogICAgICBORlN2NDogVXNlIHRoZSBuZnM0X3N0YXRlIGJlaW5nIHJlY292ZXJl -ZCBpbiBfbmZzNF9vcGVuZGF0YV90b19uZnM0X3N0YXRlKCkNCiAgICAgIE1lcmdlIGJyYW5jaCAn -b3Blbl9zdGF0ZScNCiAgICAgIE5GUzogU2ltcGxpZnkgcGFnZSB3cml0ZWJhY2sNCiAgICAgIE5G -UzogUmVkdWNlIGxvY2sgY29udGVudGlvbiBpbiBuZnNfcGFnZV9maW5kX2hlYWRfcmVxdWVzdCgp -DQogICAgICBORlM6IFJlZHVjZSBsb2NrIGNvbnRlbnRpb24gaW4gbmZzX3RyeV90b191cGRhdGVf -cmVxdWVzdCgpDQogICAgICBORlM6IEVuc3VyZSB3ZSBhbHdheXMgZGVyZWZlcmVuY2UgdGhlIHBh -Z2UgaGVhZCBsYXN0DQogICAgICBORlM6IEZpeCBhIHJlZmVyZW5jZSBhbmQgbG9jayBsZWFrIGlu -IG5mc19sb2NrX2FuZF9qb2luX3JlcXVlc3RzKCkNCiAgICAgIE5GUzogRml4IGFuIEFCQkEgaXNz -dWUgaW4gbmZzX2xvY2tfYW5kX2pvaW5fcmVxdWVzdHMoKQ0KICAgICAgTkZTOiBEb24ndCBjaGVj -ayByZXF1ZXN0IG9mZnNldCBhbmQgc2l6ZSB3aXRob3V0IGhvbGRpbmcgYSBsb2NrDQogICAgICBO -RlM6IERvbid0IHVubG9jayB3cml0ZWJhY2tzIGJlZm9yZSBkZWNsYXJpbmcgUEdfV0JfRU5EDQog -ICAgICBORlM6IEZpeCB0aGUgaW5vZGUgcmVxdWVzdCBhY2NvdW50aW5nIHdoZW4gcGFnZXMgaGF2 -ZSBzdWJyZXF1ZXN0cw0KICAgICAgTkZTOiBUZWFjaCBuZnNfdHJ5X3RvX3VwZGF0ZV9yZXF1ZXN0 -KCkgdG8gZGVhbCB3aXRoIHJlcXVlc3QgcGFnZV9ncm91cHMNCiAgICAgIE5GUzogUmVtb3ZlIHBh -Z2UgZ3JvdXAgbGltaXQgaW4gbmZzX2ZsdXNoX2luY29tcGF0aWJsZSgpDQogICAgICBORlM6IFJl -ZHVjZSBpbm9kZS0+aV9sb2NrIGNvbnRlbnRpb24gaW4gbmZzX2xvY2tfYW5kX2pvaW5fcmVxdWVz -dHMoKQ0KICAgICAgTkZTOiBGdXJ0aGVyIG9wdGltaXNlIG5mc19sb2NrX2FuZF9qb2luX3JlcXVl -c3RzKCkNCiAgICAgIE5GUzogRml4IG5mc19wYWdlX2dyb3VwX2Rlc3Ryb3koKSBhbmQgbmZzX2xv -Y2tfYW5kX2pvaW5fcmVxdWVzdHMoKSByYWNlIGNhc2VzDQogICAgICBORlM6IFJlbW92ZSBuZnNf -cGFnZV9ncm91cF9jbGVhcl9iaXRzKCkNCiAgICAgIE5GUzogUmVtb3ZlIHVudXNlIGZ1bmN0aW9u -IG5mc19wYWdlX2dyb3VwX2xvY2tfd2FpdCgpDQogICAgICBORlM6IFJlbW92ZSB1bnVzZWQgcGFy -YW1ldGVyIGZyb20gbmZzX3BhZ2VfZ3JvdXBfbG9jaygpDQogICAgICBORlM6IEZpeCB1cCBuZnNf -cGFnZV9ncm91cF9jb3ZlcnNfcGFnZSgpDQogICAgICBORlN2NDogQ29udmVydCBuZnNfbG9ja19h -bmRfam9pbl9yZXF1ZXN0cygpIHRvIHVzZSBuZnNfcGFnZV9maW5kX2hlYWRfcmVxdWVzdCgpDQog -ICAgICBORlM6IFJlZmFjdG9yIG5mc19wYWdlX2ZpbmRfaGVhZF9yZXF1ZXN0KCkNCiAgICAgIE5G -U3Y0OiBVc2UgYSBtdXRleCB0byBwcm90ZWN0IHRoZSBwZXItaW5vZGUgY29tbWl0IGxpc3RzDQog -ICAgICBORlM6IFVzZSBhbiBhdG9taWNfbG9uZ190IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgcmVx -dWVzdHMNCiAgICAgIE5GUzogVXNlIGFuIGF0b21pY19sb25nX3QgdG8gY291bnQgdGhlIG51bWJl -ciBvZiBjb21taXRzDQogICAgICBORlM6IFN3aXRjaCB0byB1c2luZyBtYXBwaW5nLT5wcml2YXRl -X2xvY2sgZm9yIHBhZ2Ugd3JpdGViYWNrIGxvb2t1cHMuDQogICAgICBORlN2NC9wbmZzOiBSZXBs -YWNlIHBuZnNfcHV0X2xzZWdfbG9ja2VkKCkgd2l0aCBwbmZzX3B1dF9sc2VnKCkNCiAgICAgIE5G -UzogV2FpdCBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgbG9ja2VkIG9uIHRoZSBjb21taXQgbGlzdA0K -ICAgICAgU1VOUlBDOiBEb24ndCBob2xkIHRoZSB0cmFuc3BvcnQgbG9jayBhY3Jvc3Mgc29ja2V0 -IGNvcHkgb3BlcmF0aW9ucw0KICAgICAgU1VOUlBDOiBEb24ndCBob2xkIHRoZSB0cmFuc3BvcnQg -bG9jayB3aGVuIHJlY2VpdmluZyBiYWNrY2hhbm5lbCBkYXRhDQogICAgICBTVU5SUEM6IERvbid0 -IGxvb3AgZm9yZXZlciBpbiB4c190Y3BfZGF0YV9yZWNlaXZlKCkNCiAgICAgIFNVTlJQQzogQ2xl -YW51cCB4c190Y3BfcmVhZF9jb21tb24oKQ0KICAgICAgU1VOUlBDOiBBZGQgYSBzZXBhcmF0ZSBz -cGlubG9jayB0byBwcm90ZWN0IHRoZSBSUEMgcmVxdWVzdCByZWNlaXZlIGxpc3QNCiAgICAgIE1l -cmdlIGJyYW5jaCAnd3JpdGViYWNrJw0KICAgICAgTkZTdjQ6IEZpeCB1cCBtaXJyb3IgYWxsb2Nh -dGlvbg0KICAgICAgTkZTOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBnZnBfZmxhZ3MgZnJvbSBu -ZnNfcGFnZWlvX2luaXQoKQ0KICAgICAgTWVyZ2UgYnJhbmNoICdidWdmaXhlcycNCiAgICAgIE1l -cmdlIHRhZyAnbmZzLXJkbWEtZm9yLTQuMTQtMScgb2YgZ2l0Oi8vZ2l0LmxpbnV4LW5mcy5vcmcv -cHJvamVjdHMvYW5uYS9saW51eC1uZnMgaW50byBsaW51eC1uZXh0DQogICAgICBORlM6IEZpeCAy -IHVzZSBhZnRlciBmcmVlIGlzc3VlcyBpbiB0aGUgSS9PIGNvZGUNCiAgICAgIE5GUzogbmZzX2xv -Y2tfYW5kX2pvaW5fcmVxdWVzdHMgYW5kIG5mc19zY2FuX2NvbW1pdF9saXN0IGNhbiBkZWFkbG9j -aw0KICAgICAgTkZTOiBSZW1vdmUgcG5mc19nZW5lcmljX3RyYW5zZmVyX2NvbW1pdF9saXN0KCkN -CiAgICAgIE5GUzogRG9uJ3QgaG9sZCB0aGUgZ3JvdXAgbG9jayB3aGVuIGNhbGxpbmcgbmZzX3Jl -bGVhc2VfcmVxdWVzdCgpDQogICAgICBORlM6IENvdW50IHRoZSBieXRlcyBvZiBza2lwcGVkIHN1 -YnJlcXVlc3RzIGluIG5mc19sb2NrX2FuZF9qb2luX3JlcXVlc3RzKCkNCg0KdGFyYW5nZ0BhbWF6 -b24uY29tICgxKToNCiAgICAgIE5GUzogU3luYyB0aGUgY29ycmVjdCBieXRlIHJhbmdlIGR1cmlu -ZyBzeW5jaHJvbm91cyB3cml0ZXMNCg0KIGZzL2xvY2tkL2NsbnRsb2NrLmMgICAgICAgICAgICAg -ICAgICAgICAgICB8ICAgNiArLQ0KIGZzL25mcy9jYWxsYmFja19wcm9jLmMgICAgICAgICAgICAg -ICAgICAgICB8ICAgMiArLQ0KIGZzL25mcy9kZWxlZ2F0aW9uLmMgICAgICAgICAgICAgICAgICAg -ICAgICB8ICAgMiArLQ0KIGZzL25mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICB8ICAgNCAtDQogZnMvbmZzL2RpcmVjdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg -ICA0ICstDQogZnMvbmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3 -ICstDQogZnMvbmZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICst -DQogZnMvbmZzL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0NCiBm -cy9uZnMvbmZzNF9mcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKw0KIGZzL25m -cy9uZnM0cHJvYy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3NCArKysrKy0tLS0NCiBm -cy9uZnMvcGFnZWxpc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNzAgKysrLS0tDQog -ZnMvbmZzL3BuZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQzIC0tDQogZnMv -bmZzL3BuZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0NCiBmcy9uZnMv -cG5mc19uZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQgKy0NCiBmcy9uZnMvcmVh -ZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCiBmcy9uZnMvc3VwZXIu -YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0NCiBmcy9uZnMvd3JpdGUuYyAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NTcgKysrKysrKy0tLS0tLS0tDQogaW5jbHVk -ZS9saW51eC9uZnNfZnMuaCAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstDQogaW5jbHVkZS9s -aW51eC9uZnNfcGFnZS5oICAgICAgICAgICAgICAgICAgIHwgICA2ICstDQogaW5jbHVkZS9saW51 -eC9uZnNfeGRyLmggICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogaW5jbHVkZS9saW51eC9z -dW5ycGMvc2NoZWQuaCAgICAgICAgICAgICAgIHwgICAyICsNCiBpbmNsdWRlL2xpbnV4L3N1bnJw -Yy94ZHIuaCAgICAgICAgICAgICAgICAgfCAgMTMgKw0KIGluY2x1ZGUvbGludXgvc3VucnBjL3hw -cnQuaCAgICAgICAgICAgICAgICB8ICAgNSArLQ0KIG5ldC9zdW5ycGMvYmFja2NoYW5uZWxfcnFz -dC5jICAgICAgICAgICAgICB8ICAgNCArLQ0KIG5ldC9zdW5ycGMvY2xudC5jICAgICAgICAgICAg -ICAgICAgICAgICAgICB8ICAxMiArLQ0KIG5ldC9zdW5ycGMvc3Zjc29jay5jICAgICAgICAgICAg -ICAgICAgICAgICB8ICAgNiArLQ0KIG5ldC9zdW5ycGMveHBydC5jICAgICAgICAgICAgICAgICAg -ICAgICAgICB8ICA1NyArLQ0KIG5ldC9zdW5ycGMveHBydHJkbWEvYmFja2NoYW5uZWwuYyAgICAg -ICAgICB8ICA3MSArLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL2Ztcl9vcHMuYyAgICAgICAgICAg -ICAgfCAgMTAgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMgICAgICAgICAgICAg -fCAgMTIgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3JwY19yZG1hLmMgICAgICAgICAgICAgfCA5 -MDIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3N2 -Y19yZG1hX2JhY2tjaGFubmVsLmMgfCAgIDkgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5z -cG9ydC5jICAgICAgICAgICAgfCAgIDggKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMg -ICAgICAgICAgICAgICAgfCAgMjIgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5o -ICAgICAgICAgICAgfCAgNjMgKy0NCiBuZXQvc3VucnBjL3hwcnRzb2NrLmMgICAgICAgICAgICAg -ICAgICAgICAgfCAgOTAgKy0tDQogMzYgZmlsZXMgY2hhbmdlZCwgMTIyOCBpbnNlcnRpb25zKCsp -LCAxMTMzIGRlbGV0aW9ucygtKQ0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGll -bnQgbWFpbnRhaW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5j -b20NCg== +Hi Linus, + +The following changes since commit ef954844c7ace62f773f4f23e28d2d915adc419f: + + Linux 4.13-rc5 (2017-08-13 16:01:32 -0700) + +are available in the git repository at: + + git://git.linux-nfs.org/projects/trondmy/linux-nfs.git tags/nfs-for-4.14-1 + +for you to fetch changes up to 1bd5d6d08ea7ed0794c8a3908383d6d6fc202cdd: + + NFS: Count the bytes of skipped subrequests in nfs_lock_and_join_requests() (2017-09-09 16:43:09 -0400) + +---------------------------------------------------------------- +NFS client updates for Linux 4.14 + +Hightlights include: + +Stable bugfixes: +- Fix mirror allocation in the writeback code to avoid a use after free +- Fix the O_DSYNC writes to use the correct byte range +- Fix 2 use after free issues in the I/O code + +Features: +- Writeback fixes to split up the inode->i_lock in order to reduce contention +- RPC client receive fixes to reduce the amount of time the + xprt->transport_lock is held when receiving data from a socket into am + XDR buffer. +- Ditto fixes to reduce contention between call side users of the rdma + rb_lock, and its use in rpcrdma_reply_handler. +- Re-arrange rdma stats to reduce false cacheline sharing. +- Various rdma cleanups and optimisations. +- Refactor the NFSv4.1 exchange id code and clean up the code. +- Const-ify all instances of struct rpc_xprt_ops + +Bugfixes: +- Fix the NFSv2 'sec=' mount option. +- NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys' +- Fix the NFSv3 GRANT callback when the port changes on the server. +- Fix livelock issues with COMMIT +- NFSv4: Use correct inode in _nfs4_opendata_to_nfs4_state() when doing + and NFSv4.1 open by filehandle. + +---------------------------------------------------------------- +Chuck Lever (18): + sunrpc: Const-ify all instances of struct rpc_xprt_ops + xprtrdma: Add xdr_init_decode to rpcrdma_reply_handler() + xprtrdma: Harden backchannel call decoding + xprtrdma: Refactor rpcrdma_reply_handler() + xprtrdma: Replace rpcrdma_count_chunks() + xprtrdma: Remove opcode check in Receive completion handler + xprtrdma: Remove rpcrdma_rep::rr_len + xprtrdma: Clean up XDR decoding in rpcrdma_update_granted_credits() + xprtrdma: Clean up rpcrdma_marshal_req() synopsis + xprtrdma: Remove rpclen from rpcrdma_marshal_req + xprtrdma: Set up an xdr_stream in rpcrdma_marshal_req() + xprtrdma: Harden chunk list encoding against send buffer overflow + xprtrdma: Clean up rpcrdma_bc_marshal_reply() + xprtrdma: Remove imul instructions from rpcrdma_convert_iovs() + xprtrdma: Remove imul instructions from chunk list encoders + NFS: Fix NFSv2 security settings + xprtrdma: Re-arrange struct rx_stats + xprtrdma: Use xprt_pin_rqst in rpcrdma_reply_handler + +Markus Elfring (1): + lockd: Delete an error message for a failed memory allocation in reclaimer() + +NeilBrown (6): + SUNRPC: ECONNREFUSED should cause a rebind. + NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys' + NFS: don't expect errors from mempool_alloc(). + SUNRPC: remove some dead code. + NFS: flush data when locking a file to ensure cache coherence for mmap. + NFS: remove jiffies field from access cache + +Trond Myklebust (48): + NFSv4: Refactor _nfs4_proc_exchange_id() + NFSv4.1: Ensure we clear the SP4_MACH_CRED flags in nfs4_sp4_select_mode() + NFSv4: Cleanup setting of the migration flags. + Merge branch 'exchange_id' + NFSv4: Use correct inode in _nfs4_opendata_to_nfs4_state() + NFSv4: Use the nfs4_state being recovered in _nfs4_opendata_to_nfs4_state() + Merge branch 'open_state' + NFS: Simplify page writeback + NFS: Reduce lock contention in nfs_page_find_head_request() + NFS: Reduce lock contention in nfs_try_to_update_request() + NFS: Ensure we always dereference the page head last + NFS: Fix a reference and lock leak in nfs_lock_and_join_requests() + NFS: Fix an ABBA issue in nfs_lock_and_join_requests() + NFS: Don't check request offset and size without holding a lock + NFS: Don't unlock writebacks before declaring PG_WB_END + NFS: Fix the inode request accounting when pages have subrequests + NFS: Teach nfs_try_to_update_request() to deal with request page_groups + NFS: Remove page group limit in nfs_flush_incompatible() + NFS: Reduce inode->i_lock contention in nfs_lock_and_join_requests() + NFS: Further optimise nfs_lock_and_join_requests() + NFS: Fix nfs_page_group_destroy() and nfs_lock_and_join_requests() race cases + NFS: Remove nfs_page_group_clear_bits() + NFS: Remove unuse function nfs_page_group_lock_wait() + NFS: Remove unused parameter from nfs_page_group_lock() + NFS: Fix up nfs_page_group_covers_page() + NFSv4: Convert nfs_lock_and_join_requests() to use nfs_page_find_head_request() + NFS: Refactor nfs_page_find_head_request() + NFSv4: Use a mutex to protect the per-inode commit lists + NFS: Use an atomic_long_t to count the number of requests + NFS: Use an atomic_long_t to count the number of commits + NFS: Switch to using mapping->private_lock for page writeback lookups. + NFSv4/pnfs: Replace pnfs_put_lseg_locked() with pnfs_put_lseg() + NFS: Wait for requests that are locked on the commit list + SUNRPC: Don't hold the transport lock across socket copy operations + SUNRPC: Don't hold the transport lock when receiving backchannel data + SUNRPC: Don't loop forever in xs_tcp_data_receive() + SUNRPC: Cleanup xs_tcp_read_common() + SUNRPC: Add a separate spinlock to protect the RPC request receive list + Merge branch 'writeback' + NFSv4: Fix up mirror allocation + NFS: Remove unused parameter gfp_flags from nfs_pageio_init() + Merge branch 'bugfixes' + Merge tag 'nfs-rdma-for-4.14-1' of git://git.linux-nfs.org/projects/anna/linux-nfs into linux-next + NFS: Fix 2 use after free issues in the I/O code + NFS: nfs_lock_and_join_requests and nfs_scan_commit_list can deadlock + NFS: Remove pnfs_generic_transfer_commit_list() + NFS: Don't hold the group lock when calling nfs_release_request() + NFS: Count the bytes of skipped subrequests in nfs_lock_and_join_requests() + +tarangg@amazon.com (1): + NFS: Sync the correct byte range during synchronous writes + + fs/lockd/clntlock.c | 6 +- + fs/nfs/callback_proc.c | 2 +- + fs/nfs/delegation.c | 2 +- + fs/nfs/dir.c | 4 - + fs/nfs/direct.c | 4 +- + fs/nfs/file.c | 17 +- + fs/nfs/inode.c | 10 +- + fs/nfs/internal.h | 1 - + fs/nfs/nfs4_fs.h | 11 + + fs/nfs/nfs4proc.c | 274 +++++---- + fs/nfs/pagelist.c | 170 +++--- + fs/nfs/pnfs.c | 43 -- + fs/nfs/pnfs.h | 2 - + fs/nfs/pnfs_nfs.c | 44 +- + fs/nfs/read.c | 2 +- + fs/nfs/super.c | 12 +- + fs/nfs/write.c | 457 +++++++-------- + include/linux/nfs_fs.h | 6 +- + include/linux/nfs_page.h | 6 +- + include/linux/nfs_xdr.h | 2 +- + include/linux/sunrpc/sched.h | 2 + + include/linux/sunrpc/xdr.h | 13 + + include/linux/sunrpc/xprt.h | 5 +- + net/sunrpc/backchannel_rqst.c | 4 +- + net/sunrpc/clnt.c | 12 +- + net/sunrpc/svcsock.c | 6 +- + net/sunrpc/xprt.c | 57 +- + net/sunrpc/xprtrdma/backchannel.c | 71 +-- + net/sunrpc/xprtrdma/fmr_ops.c | 10 +- + net/sunrpc/xprtrdma/frwr_ops.c | 12 +- + net/sunrpc/xprtrdma/rpc_rdma.c | 902 +++++++++++++++++------------ + net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 9 +- + net/sunrpc/xprtrdma/transport.c | 8 +- + net/sunrpc/xprtrdma/verbs.c | 22 +- + net/sunrpc/xprtrdma/xprt_rdma.h | 63 +- + net/sunrpc/xprtsock.c | 90 +-- + 36 files changed, 1228 insertions(+), 1133 deletions(-) +-- +Trond Myklebust +Linux NFS client maintainer, PrimaryData +trond.myklebust@primarydata.com diff --git a/a/content_digest b/N1/content_digest index a4e64d4..f441aa7 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,157 +6,175 @@ " linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>\0" "\00:1\0" "b\0" - "SGkgTGludXMsDQoNClRoZSBmb2xsb3dpbmcgY2hhbmdlcyBzaW5jZSBjb21taXQgZWY5NTQ4NDRj\n" - "N2FjZTYyZjc3M2Y0ZjIzZTI4ZDJkOTE1YWRjNDE5ZjoNCg0KICBMaW51eCA0LjEzLXJjNSAoMjAx\n" - "Ny0wOC0xMyAxNjowMTozMiAtMDcwMCkNCg0KYXJlIGF2YWlsYWJsZSBpbiB0aGUgZ2l0IHJlcG9z\n" - "aXRvcnkgYXQ6DQoNCiAgZ2l0Oi8vZ2l0LmxpbnV4LW5mcy5vcmcvcHJvamVjdHMvdHJvbmRteS9s\n" - "aW51eC1uZnMuZ2l0IHRhZ3MvbmZzLWZvci00LjE0LTENCg0KZm9yIHlvdSB0byBmZXRjaCBjaGFu\n" - "Z2VzIHVwIHRvIDFiZDVkNmQwOGVhN2VkMDc5NGM4YTM5MDgzODNkNmQ2ZmMyMDJjZGQ6DQoNCiAg\n" - "TkZTOiBDb3VudCB0aGUgYnl0ZXMgb2Ygc2tpcHBlZCBzdWJyZXF1ZXN0cyBpbiBuZnNfbG9ja19h\n" - "bmRfam9pbl9yZXF1ZXN0cygpICgyMDE3LTA5LTA5IDE2OjQzOjA5IC0wNDAwKQ0KDQotLS0tLS0t\n" - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\n" - "DQpORlMgY2xpZW50IHVwZGF0ZXMgZm9yIExpbnV4IDQuMTQNCg0KSGlnaHRsaWdodHMgaW5jbHVk\n" - "ZToNCg0KU3RhYmxlIGJ1Z2ZpeGVzOg0KLSBGaXggbWlycm9yIGFsbG9jYXRpb24gaW4gdGhlIHdy\n" - "aXRlYmFjayBjb2RlIHRvIGF2b2lkIGEgdXNlIGFmdGVyIGZyZWUNCi0gRml4IHRoZSBPX0RTWU5D\n" - "IHdyaXRlcyB0byB1c2UgdGhlIGNvcnJlY3QgYnl0ZSByYW5nZQ0KLSBGaXggMiB1c2UgYWZ0ZXIg\n" - "ZnJlZSBpc3N1ZXMgaW4gdGhlIEkvTyBjb2RlDQoNCkZlYXR1cmVzOg0KLSBXcml0ZWJhY2sgZml4\n" - "ZXMgdG8gc3BsaXQgdXAgdGhlIGlub2RlLT5pX2xvY2sgaW4gb3JkZXIgdG8gcmVkdWNlIGNvbnRl\n" - "bnRpb24NCi0gUlBDIGNsaWVudCByZWNlaXZlIGZpeGVzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9m\n" - "IHRpbWUgdGhlDQogIHhwcnQtPnRyYW5zcG9ydF9sb2NrIGlzIGhlbGQgd2hlbiByZWNlaXZpbmcg\n" - "ZGF0YSBmcm9tIGEgc29ja2V0IGludG8gYW0NCiAgWERSIGJ1ZmZlci4NCi0gRGl0dG8gZml4ZXMg\n" - "dG8gcmVkdWNlIGNvbnRlbnRpb24gYmV0d2VlbiBjYWxsIHNpZGUgdXNlcnMgb2YgdGhlIHJkbWEN\n" - "CiAgcmJfbG9jaywgYW5kIGl0cyB1c2UgaW4gcnBjcmRtYV9yZXBseV9oYW5kbGVyLg0KLSBSZS1h\n" - "cnJhbmdlIHJkbWEgc3RhdHMgdG8gcmVkdWNlIGZhbHNlIGNhY2hlbGluZSBzaGFyaW5nLg0KLSBW\n" - "YXJpb3VzIHJkbWEgY2xlYW51cHMgYW5kIG9wdGltaXNhdGlvbnMuDQotIFJlZmFjdG9yIHRoZSBO\n" - "RlN2NC4xIGV4Y2hhbmdlIGlkIGNvZGUgYW5kIGNsZWFuIHVwIHRoZSBjb2RlLg0KLSBDb25zdC1p\n" - "ZnkgYWxsIGluc3RhbmNlcyBvZiBzdHJ1Y3QgcnBjX3hwcnRfb3BzDQoNCkJ1Z2ZpeGVzOg0KLSBG\n" - "aXggdGhlIE5GU3YyICdzZWM9JyBtb3VudCBvcHRpb24uDQotIE5GU3Y0LjE6IGRvbid0IHVzZSBt\n" - "YWNoaW5lIGNyZWRlbnRpYWxzIGZvciBDTE9TRSB3aGVuIHVzaW5nICdzZWM9c3lzJw0KLSBGaXgg\n" - "dGhlIE5GU3YzIEdSQU5UIGNhbGxiYWNrIHdoZW4gdGhlIHBvcnQgY2hhbmdlcyBvbiB0aGUgc2Vy\n" - "dmVyLg0KLSBGaXggbGl2ZWxvY2sgaXNzdWVzIHdpdGggQ09NTUlUDQotIE5GU3Y0OiBVc2UgY29y\n" - "cmVjdCBpbm9kZSBpbiBfbmZzNF9vcGVuZGF0YV90b19uZnM0X3N0YXRlKCkgd2hlbiBkb2luZw0K\n" - "ICBhbmQgTkZTdjQuMSBvcGVuIGJ5IGZpbGVoYW5kbGUuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0t\n" - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNodWNrIExldmVy\n" - "ICgxOCk6DQogICAgICBzdW5ycGM6IENvbnN0LWlmeSBhbGwgaW5zdGFuY2VzIG9mIHN0cnVjdCBy\n" - "cGNfeHBydF9vcHMNCiAgICAgIHhwcnRyZG1hOiBBZGQgeGRyX2luaXRfZGVjb2RlIHRvIHJwY3Jk\n" - "bWFfcmVwbHlfaGFuZGxlcigpDQogICAgICB4cHJ0cmRtYTogSGFyZGVuIGJhY2tjaGFubmVsIGNh\n" - "bGwgZGVjb2RpbmcNCiAgICAgIHhwcnRyZG1hOiBSZWZhY3RvciBycGNyZG1hX3JlcGx5X2hhbmRs\n" - "ZXIoKQ0KICAgICAgeHBydHJkbWE6IFJlcGxhY2UgcnBjcmRtYV9jb3VudF9jaHVua3MoKQ0KICAg\n" - "ICAgeHBydHJkbWE6IFJlbW92ZSBvcGNvZGUgY2hlY2sgaW4gUmVjZWl2ZSBjb21wbGV0aW9uIGhh\n" - "bmRsZXINCiAgICAgIHhwcnRyZG1hOiBSZW1vdmUgcnBjcmRtYV9yZXA6OnJyX2xlbg0KICAgICAg\n" - "eHBydHJkbWE6IENsZWFuIHVwIFhEUiBkZWNvZGluZyBpbiBycGNyZG1hX3VwZGF0ZV9ncmFudGVk\n" - "X2NyZWRpdHMoKQ0KICAgICAgeHBydHJkbWE6IENsZWFuIHVwIHJwY3JkbWFfbWFyc2hhbF9yZXEo\n" - "KSBzeW5vcHNpcw0KICAgICAgeHBydHJkbWE6IFJlbW92ZSBycGNsZW4gZnJvbSBycGNyZG1hX21h\n" - "cnNoYWxfcmVxDQogICAgICB4cHJ0cmRtYTogU2V0IHVwIGFuIHhkcl9zdHJlYW0gaW4gcnBjcmRt\n" - "YV9tYXJzaGFsX3JlcSgpDQogICAgICB4cHJ0cmRtYTogSGFyZGVuIGNodW5rIGxpc3QgZW5jb2Rp\n" - "bmcgYWdhaW5zdCBzZW5kIGJ1ZmZlciBvdmVyZmxvdw0KICAgICAgeHBydHJkbWE6IENsZWFuIHVw\n" - "IHJwY3JkbWFfYmNfbWFyc2hhbF9yZXBseSgpDQogICAgICB4cHJ0cmRtYTogUmVtb3ZlIGltdWwg\n" - "aW5zdHJ1Y3Rpb25zIGZyb20gcnBjcmRtYV9jb252ZXJ0X2lvdnMoKQ0KICAgICAgeHBydHJkbWE6\n" - "IFJlbW92ZSBpbXVsIGluc3RydWN0aW9ucyBmcm9tIGNodW5rIGxpc3QgZW5jb2RlcnMNCiAgICAg\n" - "IE5GUzogRml4IE5GU3YyIHNlY3VyaXR5IHNldHRpbmdzDQogICAgICB4cHJ0cmRtYTogUmUtYXJy\n" - "YW5nZSBzdHJ1Y3Qgcnhfc3RhdHMNCiAgICAgIHhwcnRyZG1hOiBVc2UgeHBydF9waW5fcnFzdCBp\n" - "biBycGNyZG1hX3JlcGx5X2hhbmRsZXINCg0KTWFya3VzIEVsZnJpbmcgKDEpOg0KICAgICAgbG9j\n" - "a2Q6IERlbGV0ZSBhbiBlcnJvciBtZXNzYWdlIGZvciBhIGZhaWxlZCBtZW1vcnkgYWxsb2NhdGlv\n" - "biBpbiByZWNsYWltZXIoKQ0KDQpOZWlsQnJvd24gKDYpOg0KICAgICAgU1VOUlBDOiBFQ09OTlJF\n" - "RlVTRUQgc2hvdWxkIGNhdXNlIGEgcmViaW5kLg0KICAgICAgTkZTdjQuMTogZG9uJ3QgdXNlIG1h\n" - "Y2hpbmUgY3JlZGVudGlhbHMgZm9yIENMT1NFIHdoZW4gdXNpbmcgJ3NlYz1zeXMnDQogICAgICBO\n" - "RlM6IGRvbid0IGV4cGVjdCBlcnJvcnMgZnJvbSBtZW1wb29sX2FsbG9jKCkuDQogICAgICBTVU5S\n" - "UEM6IHJlbW92ZSBzb21lIGRlYWQgY29kZS4NCiAgICAgIE5GUzogZmx1c2ggZGF0YSB3aGVuIGxv\n" - "Y2tpbmcgYSBmaWxlIHRvIGVuc3VyZSBjYWNoZSBjb2hlcmVuY2UgZm9yIG1tYXAuDQogICAgICBO\n" - "RlM6IHJlbW92ZSBqaWZmaWVzIGZpZWxkIGZyb20gYWNjZXNzIGNhY2hlDQoNClRyb25kIE15a2xl\n" - "YnVzdCAoNDgpOg0KICAgICAgTkZTdjQ6IFJlZmFjdG9yIF9uZnM0X3Byb2NfZXhjaGFuZ2VfaWQo\n" - "KQ0KICAgICAgTkZTdjQuMTogRW5zdXJlIHdlIGNsZWFyIHRoZSBTUDRfTUFDSF9DUkVEIGZsYWdz\n" - "IGluIG5mczRfc3A0X3NlbGVjdF9tb2RlKCkNCiAgICAgIE5GU3Y0OiBDbGVhbnVwIHNldHRpbmcg\n" - "b2YgdGhlIG1pZ3JhdGlvbiBmbGFncy4NCiAgICAgIE1lcmdlIGJyYW5jaCAnZXhjaGFuZ2VfaWQn\n" - "DQogICAgICBORlN2NDogVXNlIGNvcnJlY3QgaW5vZGUgaW4gX25mczRfb3BlbmRhdGFfdG9fbmZz\n" - "NF9zdGF0ZSgpDQogICAgICBORlN2NDogVXNlIHRoZSBuZnM0X3N0YXRlIGJlaW5nIHJlY292ZXJl\n" - "ZCBpbiBfbmZzNF9vcGVuZGF0YV90b19uZnM0X3N0YXRlKCkNCiAgICAgIE1lcmdlIGJyYW5jaCAn\n" - "b3Blbl9zdGF0ZScNCiAgICAgIE5GUzogU2ltcGxpZnkgcGFnZSB3cml0ZWJhY2sNCiAgICAgIE5G\n" - "UzogUmVkdWNlIGxvY2sgY29udGVudGlvbiBpbiBuZnNfcGFnZV9maW5kX2hlYWRfcmVxdWVzdCgp\n" - "DQogICAgICBORlM6IFJlZHVjZSBsb2NrIGNvbnRlbnRpb24gaW4gbmZzX3RyeV90b191cGRhdGVf\n" - "cmVxdWVzdCgpDQogICAgICBORlM6IEVuc3VyZSB3ZSBhbHdheXMgZGVyZWZlcmVuY2UgdGhlIHBh\n" - "Z2UgaGVhZCBsYXN0DQogICAgICBORlM6IEZpeCBhIHJlZmVyZW5jZSBhbmQgbG9jayBsZWFrIGlu\n" - "IG5mc19sb2NrX2FuZF9qb2luX3JlcXVlc3RzKCkNCiAgICAgIE5GUzogRml4IGFuIEFCQkEgaXNz\n" - "dWUgaW4gbmZzX2xvY2tfYW5kX2pvaW5fcmVxdWVzdHMoKQ0KICAgICAgTkZTOiBEb24ndCBjaGVj\n" - "ayByZXF1ZXN0IG9mZnNldCBhbmQgc2l6ZSB3aXRob3V0IGhvbGRpbmcgYSBsb2NrDQogICAgICBO\n" - "RlM6IERvbid0IHVubG9jayB3cml0ZWJhY2tzIGJlZm9yZSBkZWNsYXJpbmcgUEdfV0JfRU5EDQog\n" - "ICAgICBORlM6IEZpeCB0aGUgaW5vZGUgcmVxdWVzdCBhY2NvdW50aW5nIHdoZW4gcGFnZXMgaGF2\n" - "ZSBzdWJyZXF1ZXN0cw0KICAgICAgTkZTOiBUZWFjaCBuZnNfdHJ5X3RvX3VwZGF0ZV9yZXF1ZXN0\n" - "KCkgdG8gZGVhbCB3aXRoIHJlcXVlc3QgcGFnZV9ncm91cHMNCiAgICAgIE5GUzogUmVtb3ZlIHBh\n" - "Z2UgZ3JvdXAgbGltaXQgaW4gbmZzX2ZsdXNoX2luY29tcGF0aWJsZSgpDQogICAgICBORlM6IFJl\n" - "ZHVjZSBpbm9kZS0+aV9sb2NrIGNvbnRlbnRpb24gaW4gbmZzX2xvY2tfYW5kX2pvaW5fcmVxdWVz\n" - "dHMoKQ0KICAgICAgTkZTOiBGdXJ0aGVyIG9wdGltaXNlIG5mc19sb2NrX2FuZF9qb2luX3JlcXVl\n" - "c3RzKCkNCiAgICAgIE5GUzogRml4IG5mc19wYWdlX2dyb3VwX2Rlc3Ryb3koKSBhbmQgbmZzX2xv\n" - "Y2tfYW5kX2pvaW5fcmVxdWVzdHMoKSByYWNlIGNhc2VzDQogICAgICBORlM6IFJlbW92ZSBuZnNf\n" - "cGFnZV9ncm91cF9jbGVhcl9iaXRzKCkNCiAgICAgIE5GUzogUmVtb3ZlIHVudXNlIGZ1bmN0aW9u\n" - "IG5mc19wYWdlX2dyb3VwX2xvY2tfd2FpdCgpDQogICAgICBORlM6IFJlbW92ZSB1bnVzZWQgcGFy\n" - "YW1ldGVyIGZyb20gbmZzX3BhZ2VfZ3JvdXBfbG9jaygpDQogICAgICBORlM6IEZpeCB1cCBuZnNf\n" - "cGFnZV9ncm91cF9jb3ZlcnNfcGFnZSgpDQogICAgICBORlN2NDogQ29udmVydCBuZnNfbG9ja19h\n" - "bmRfam9pbl9yZXF1ZXN0cygpIHRvIHVzZSBuZnNfcGFnZV9maW5kX2hlYWRfcmVxdWVzdCgpDQog\n" - "ICAgICBORlM6IFJlZmFjdG9yIG5mc19wYWdlX2ZpbmRfaGVhZF9yZXF1ZXN0KCkNCiAgICAgIE5G\n" - "U3Y0OiBVc2UgYSBtdXRleCB0byBwcm90ZWN0IHRoZSBwZXItaW5vZGUgY29tbWl0IGxpc3RzDQog\n" - "ICAgICBORlM6IFVzZSBhbiBhdG9taWNfbG9uZ190IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgcmVx\n" - "dWVzdHMNCiAgICAgIE5GUzogVXNlIGFuIGF0b21pY19sb25nX3QgdG8gY291bnQgdGhlIG51bWJl\n" - "ciBvZiBjb21taXRzDQogICAgICBORlM6IFN3aXRjaCB0byB1c2luZyBtYXBwaW5nLT5wcml2YXRl\n" - "X2xvY2sgZm9yIHBhZ2Ugd3JpdGViYWNrIGxvb2t1cHMuDQogICAgICBORlN2NC9wbmZzOiBSZXBs\n" - "YWNlIHBuZnNfcHV0X2xzZWdfbG9ja2VkKCkgd2l0aCBwbmZzX3B1dF9sc2VnKCkNCiAgICAgIE5G\n" - "UzogV2FpdCBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgbG9ja2VkIG9uIHRoZSBjb21taXQgbGlzdA0K\n" - "ICAgICAgU1VOUlBDOiBEb24ndCBob2xkIHRoZSB0cmFuc3BvcnQgbG9jayBhY3Jvc3Mgc29ja2V0\n" - "IGNvcHkgb3BlcmF0aW9ucw0KICAgICAgU1VOUlBDOiBEb24ndCBob2xkIHRoZSB0cmFuc3BvcnQg\n" - "bG9jayB3aGVuIHJlY2VpdmluZyBiYWNrY2hhbm5lbCBkYXRhDQogICAgICBTVU5SUEM6IERvbid0\n" - "IGxvb3AgZm9yZXZlciBpbiB4c190Y3BfZGF0YV9yZWNlaXZlKCkNCiAgICAgIFNVTlJQQzogQ2xl\n" - "YW51cCB4c190Y3BfcmVhZF9jb21tb24oKQ0KICAgICAgU1VOUlBDOiBBZGQgYSBzZXBhcmF0ZSBz\n" - "cGlubG9jayB0byBwcm90ZWN0IHRoZSBSUEMgcmVxdWVzdCByZWNlaXZlIGxpc3QNCiAgICAgIE1l\n" - "cmdlIGJyYW5jaCAnd3JpdGViYWNrJw0KICAgICAgTkZTdjQ6IEZpeCB1cCBtaXJyb3IgYWxsb2Nh\n" - "dGlvbg0KICAgICAgTkZTOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBnZnBfZmxhZ3MgZnJvbSBu\n" - "ZnNfcGFnZWlvX2luaXQoKQ0KICAgICAgTWVyZ2UgYnJhbmNoICdidWdmaXhlcycNCiAgICAgIE1l\n" - "cmdlIHRhZyAnbmZzLXJkbWEtZm9yLTQuMTQtMScgb2YgZ2l0Oi8vZ2l0LmxpbnV4LW5mcy5vcmcv\n" - "cHJvamVjdHMvYW5uYS9saW51eC1uZnMgaW50byBsaW51eC1uZXh0DQogICAgICBORlM6IEZpeCAy\n" - "IHVzZSBhZnRlciBmcmVlIGlzc3VlcyBpbiB0aGUgSS9PIGNvZGUNCiAgICAgIE5GUzogbmZzX2xv\n" - "Y2tfYW5kX2pvaW5fcmVxdWVzdHMgYW5kIG5mc19zY2FuX2NvbW1pdF9saXN0IGNhbiBkZWFkbG9j\n" - "aw0KICAgICAgTkZTOiBSZW1vdmUgcG5mc19nZW5lcmljX3RyYW5zZmVyX2NvbW1pdF9saXN0KCkN\n" - "CiAgICAgIE5GUzogRG9uJ3QgaG9sZCB0aGUgZ3JvdXAgbG9jayB3aGVuIGNhbGxpbmcgbmZzX3Jl\n" - "bGVhc2VfcmVxdWVzdCgpDQogICAgICBORlM6IENvdW50IHRoZSBieXRlcyBvZiBza2lwcGVkIHN1\n" - "YnJlcXVlc3RzIGluIG5mc19sb2NrX2FuZF9qb2luX3JlcXVlc3RzKCkNCg0KdGFyYW5nZ0BhbWF6\n" - "b24uY29tICgxKToNCiAgICAgIE5GUzogU3luYyB0aGUgY29ycmVjdCBieXRlIHJhbmdlIGR1cmlu\n" - "ZyBzeW5jaHJvbm91cyB3cml0ZXMNCg0KIGZzL2xvY2tkL2NsbnRsb2NrLmMgICAgICAgICAgICAg\n" - "ICAgICAgICAgICB8ICAgNiArLQ0KIGZzL25mcy9jYWxsYmFja19wcm9jLmMgICAgICAgICAgICAg\n" - "ICAgICAgICB8ICAgMiArLQ0KIGZzL25mcy9kZWxlZ2F0aW9uLmMgICAgICAgICAgICAgICAgICAg\n" - "ICAgICB8ICAgMiArLQ0KIGZzL25mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\n" - "ICB8ICAgNCAtDQogZnMvbmZzL2RpcmVjdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg\n" - "ICA0ICstDQogZnMvbmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3\n" - "ICstDQogZnMvbmZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICst\n" - "DQogZnMvbmZzL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0NCiBm\n" - "cy9uZnMvbmZzNF9mcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKw0KIGZzL25m\n" - "cy9uZnM0cHJvYy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3NCArKysrKy0tLS0NCiBm\n" - "cy9uZnMvcGFnZWxpc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNzAgKysrLS0tDQog\n" - "ZnMvbmZzL3BuZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQzIC0tDQogZnMv\n" - "bmZzL3BuZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0NCiBmcy9uZnMv\n" - "cG5mc19uZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQgKy0NCiBmcy9uZnMvcmVh\n" - "ZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCiBmcy9uZnMvc3VwZXIu\n" - "YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0NCiBmcy9uZnMvd3JpdGUuYyAg\n" - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NTcgKysrKysrKy0tLS0tLS0tDQogaW5jbHVk\n" - "ZS9saW51eC9uZnNfZnMuaCAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstDQogaW5jbHVkZS9s\n" - "aW51eC9uZnNfcGFnZS5oICAgICAgICAgICAgICAgICAgIHwgICA2ICstDQogaW5jbHVkZS9saW51\n" - "eC9uZnNfeGRyLmggICAgICAgICAgICAgICAgICAgIHwgICAyICstDQogaW5jbHVkZS9saW51eC9z\n" - "dW5ycGMvc2NoZWQuaCAgICAgICAgICAgICAgIHwgICAyICsNCiBpbmNsdWRlL2xpbnV4L3N1bnJw\n" - "Yy94ZHIuaCAgICAgICAgICAgICAgICAgfCAgMTMgKw0KIGluY2x1ZGUvbGludXgvc3VucnBjL3hw\n" - "cnQuaCAgICAgICAgICAgICAgICB8ICAgNSArLQ0KIG5ldC9zdW5ycGMvYmFja2NoYW5uZWxfcnFz\n" - "dC5jICAgICAgICAgICAgICB8ICAgNCArLQ0KIG5ldC9zdW5ycGMvY2xudC5jICAgICAgICAgICAg\n" - "ICAgICAgICAgICAgICB8ICAxMiArLQ0KIG5ldC9zdW5ycGMvc3Zjc29jay5jICAgICAgICAgICAg\n" - "ICAgICAgICAgICB8ICAgNiArLQ0KIG5ldC9zdW5ycGMveHBydC5jICAgICAgICAgICAgICAgICAg\n" - "ICAgICAgICB8ICA1NyArLQ0KIG5ldC9zdW5ycGMveHBydHJkbWEvYmFja2NoYW5uZWwuYyAgICAg\n" - "ICAgICB8ICA3MSArLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL2Ztcl9vcHMuYyAgICAgICAgICAg\n" - "ICAgfCAgMTAgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMgICAgICAgICAgICAg\n" - "fCAgMTIgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3JwY19yZG1hLmMgICAgICAgICAgICAgfCA5\n" - "MDIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3N2\n" - "Y19yZG1hX2JhY2tjaGFubmVsLmMgfCAgIDkgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5z\n" - "cG9ydC5jICAgICAgICAgICAgfCAgIDggKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMg\n" - "ICAgICAgICAgICAgICAgfCAgMjIgKy0NCiBuZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5o\n" - "ICAgICAgICAgICAgfCAgNjMgKy0NCiBuZXQvc3VucnBjL3hwcnRzb2NrLmMgICAgICAgICAgICAg\n" - "ICAgICAgICAgfCAgOTAgKy0tDQogMzYgZmlsZXMgY2hhbmdlZCwgMTIyOCBpbnNlcnRpb25zKCsp\n" - "LCAxMTMzIGRlbGV0aW9ucygtKQ0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGll\n" - "bnQgbWFpbnRhaW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5j\n" - b20NCg== + "Hi Linus,\n" + "\n" + "The following changes since commit ef954844c7ace62f773f4f23e28d2d915adc419f:\n" + "\n" + " Linux 4.13-rc5 (2017-08-13 16:01:32 -0700)\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.14-1\n" + "\n" + "for you to fetch changes up to 1bd5d6d08ea7ed0794c8a3908383d6d6fc202cdd:\n" + "\n" + " NFS: Count the bytes of skipped subrequests in nfs_lock_and_join_requests() (2017-09-09 16:43:09 -0400)\n" + "\n" + "----------------------------------------------------------------\n" + "NFS client updates for Linux 4.14\n" + "\n" + "Hightlights include:\n" + "\n" + "Stable bugfixes:\n" + "- Fix mirror allocation in the writeback code to avoid a use after free\n" + "- Fix the O_DSYNC writes to use the correct byte range\n" + "- Fix 2 use after free issues in the I/O code\n" + "\n" + "Features:\n" + "- Writeback fixes to split up the inode->i_lock in order to reduce contention\n" + "- RPC client receive fixes to reduce the amount of time the\n" + " xprt->transport_lock is held when receiving data from a socket into am\n" + " XDR buffer.\n" + "- Ditto fixes to reduce contention between call side users of the rdma\n" + " rb_lock, and its use in rpcrdma_reply_handler.\n" + "- Re-arrange rdma stats to reduce false cacheline sharing.\n" + "- Various rdma cleanups and optimisations.\n" + "- Refactor the NFSv4.1 exchange id code and clean up the code.\n" + "- Const-ify all instances of struct rpc_xprt_ops\n" + "\n" + "Bugfixes:\n" + "- Fix the NFSv2 'sec=' mount option.\n" + "- NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys'\n" + "- Fix the NFSv3 GRANT callback when the port changes on the server.\n" + "- Fix livelock issues with COMMIT\n" + "- NFSv4: Use correct inode in _nfs4_opendata_to_nfs4_state() when doing\n" + " and NFSv4.1 open by filehandle.\n" + "\n" + "----------------------------------------------------------------\n" + "Chuck Lever (18):\n" + " sunrpc: Const-ify all instances of struct rpc_xprt_ops\n" + " xprtrdma: Add xdr_init_decode to rpcrdma_reply_handler()\n" + " xprtrdma: Harden backchannel call decoding\n" + " xprtrdma: Refactor rpcrdma_reply_handler()\n" + " xprtrdma: Replace rpcrdma_count_chunks()\n" + " xprtrdma: Remove opcode check in Receive completion handler\n" + " xprtrdma: Remove rpcrdma_rep::rr_len\n" + " xprtrdma: Clean up XDR decoding in rpcrdma_update_granted_credits()\n" + " xprtrdma: Clean up rpcrdma_marshal_req() synopsis\n" + " xprtrdma: Remove rpclen from rpcrdma_marshal_req\n" + " xprtrdma: Set up an xdr_stream in rpcrdma_marshal_req()\n" + " xprtrdma: Harden chunk list encoding against send buffer overflow\n" + " xprtrdma: Clean up rpcrdma_bc_marshal_reply()\n" + " xprtrdma: Remove imul instructions from rpcrdma_convert_iovs()\n" + " xprtrdma: Remove imul instructions from chunk list encoders\n" + " NFS: Fix NFSv2 security settings\n" + " xprtrdma: Re-arrange struct rx_stats\n" + " xprtrdma: Use xprt_pin_rqst in rpcrdma_reply_handler\n" + "\n" + "Markus Elfring (1):\n" + " lockd: Delete an error message for a failed memory allocation in reclaimer()\n" + "\n" + "NeilBrown (6):\n" + " SUNRPC: ECONNREFUSED should cause a rebind.\n" + " NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys'\n" + " NFS: don't expect errors from mempool_alloc().\n" + " SUNRPC: remove some dead code.\n" + " NFS: flush data when locking a file to ensure cache coherence for mmap.\n" + " NFS: remove jiffies field from access cache\n" + "\n" + "Trond Myklebust (48):\n" + " NFSv4: Refactor _nfs4_proc_exchange_id()\n" + " NFSv4.1: Ensure we clear the SP4_MACH_CRED flags in nfs4_sp4_select_mode()\n" + " NFSv4: Cleanup setting of the migration flags.\n" + " Merge branch 'exchange_id'\n" + " NFSv4: Use correct inode in _nfs4_opendata_to_nfs4_state()\n" + " NFSv4: Use the nfs4_state being recovered in _nfs4_opendata_to_nfs4_state()\n" + " Merge branch 'open_state'\n" + " NFS: Simplify page writeback\n" + " NFS: Reduce lock contention in nfs_page_find_head_request()\n" + " NFS: Reduce lock contention in nfs_try_to_update_request()\n" + " NFS: Ensure we always dereference the page head last\n" + " NFS: Fix a reference and lock leak in nfs_lock_and_join_requests()\n" + " NFS: Fix an ABBA issue in nfs_lock_and_join_requests()\n" + " NFS: Don't check request offset and size without holding a lock\n" + " NFS: Don't unlock writebacks before declaring PG_WB_END\n" + " NFS: Fix the inode request accounting when pages have subrequests\n" + " NFS: Teach nfs_try_to_update_request() to deal with request page_groups\n" + " NFS: Remove page group limit in nfs_flush_incompatible()\n" + " NFS: Reduce inode->i_lock contention in nfs_lock_and_join_requests()\n" + " NFS: Further optimise nfs_lock_and_join_requests()\n" + " NFS: Fix nfs_page_group_destroy() and nfs_lock_and_join_requests() race cases\n" + " NFS: Remove nfs_page_group_clear_bits()\n" + " NFS: Remove unuse function nfs_page_group_lock_wait()\n" + " NFS: Remove unused parameter from nfs_page_group_lock()\n" + " NFS: Fix up nfs_page_group_covers_page()\n" + " NFSv4: Convert nfs_lock_and_join_requests() to use nfs_page_find_head_request()\n" + " NFS: Refactor nfs_page_find_head_request()\n" + " NFSv4: Use a mutex to protect the per-inode commit lists\n" + " NFS: Use an atomic_long_t to count the number of requests\n" + " NFS: Use an atomic_long_t to count the number of commits\n" + " NFS: Switch to using mapping->private_lock for page writeback lookups.\n" + " NFSv4/pnfs: Replace pnfs_put_lseg_locked() with pnfs_put_lseg()\n" + " NFS: Wait for requests that are locked on the commit list\n" + " SUNRPC: Don't hold the transport lock across socket copy operations\n" + " SUNRPC: Don't hold the transport lock when receiving backchannel data\n" + " SUNRPC: Don't loop forever in xs_tcp_data_receive()\n" + " SUNRPC: Cleanup xs_tcp_read_common()\n" + " SUNRPC: Add a separate spinlock to protect the RPC request receive list\n" + " Merge branch 'writeback'\n" + " NFSv4: Fix up mirror allocation\n" + " NFS: Remove unused parameter gfp_flags from nfs_pageio_init()\n" + " Merge branch 'bugfixes'\n" + " Merge tag 'nfs-rdma-for-4.14-1' of git://git.linux-nfs.org/projects/anna/linux-nfs into linux-next\n" + " NFS: Fix 2 use after free issues in the I/O code\n" + " NFS: nfs_lock_and_join_requests and nfs_scan_commit_list can deadlock\n" + " NFS: Remove pnfs_generic_transfer_commit_list()\n" + " NFS: Don't hold the group lock when calling nfs_release_request()\n" + " NFS: Count the bytes of skipped subrequests in nfs_lock_and_join_requests()\n" + "\n" + "tarangg@amazon.com (1):\n" + " NFS: Sync the correct byte range during synchronous writes\n" + "\n" + " fs/lockd/clntlock.c | 6 +-\n" + " fs/nfs/callback_proc.c | 2 +-\n" + " fs/nfs/delegation.c | 2 +-\n" + " fs/nfs/dir.c | 4 -\n" + " fs/nfs/direct.c | 4 +-\n" + " fs/nfs/file.c | 17 +-\n" + " fs/nfs/inode.c | 10 +-\n" + " fs/nfs/internal.h | 1 -\n" + " fs/nfs/nfs4_fs.h | 11 +\n" + " fs/nfs/nfs4proc.c | 274 +++++----\n" + " fs/nfs/pagelist.c | 170 +++---\n" + " fs/nfs/pnfs.c | 43 --\n" + " fs/nfs/pnfs.h | 2 -\n" + " fs/nfs/pnfs_nfs.c | 44 +-\n" + " fs/nfs/read.c | 2 +-\n" + " fs/nfs/super.c | 12 +-\n" + " fs/nfs/write.c | 457 +++++++--------\n" + " include/linux/nfs_fs.h | 6 +-\n" + " include/linux/nfs_page.h | 6 +-\n" + " include/linux/nfs_xdr.h | 2 +-\n" + " include/linux/sunrpc/sched.h | 2 +\n" + " include/linux/sunrpc/xdr.h | 13 +\n" + " include/linux/sunrpc/xprt.h | 5 +-\n" + " net/sunrpc/backchannel_rqst.c | 4 +-\n" + " net/sunrpc/clnt.c | 12 +-\n" + " net/sunrpc/svcsock.c | 6 +-\n" + " net/sunrpc/xprt.c | 57 +-\n" + " net/sunrpc/xprtrdma/backchannel.c | 71 +--\n" + " net/sunrpc/xprtrdma/fmr_ops.c | 10 +-\n" + " net/sunrpc/xprtrdma/frwr_ops.c | 12 +-\n" + " net/sunrpc/xprtrdma/rpc_rdma.c | 902 +++++++++++++++++------------\n" + " net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 9 +-\n" + " net/sunrpc/xprtrdma/transport.c | 8 +-\n" + " net/sunrpc/xprtrdma/verbs.c | 22 +-\n" + " net/sunrpc/xprtrdma/xprt_rdma.h | 63 +-\n" + " net/sunrpc/xprtsock.c | 90 +--\n" + " 36 files changed, 1228 insertions(+), 1133 deletions(-)\n" + "-- \n" + "Trond Myklebust\n" + "Linux NFS client maintainer, PrimaryData\n" + trond.myklebust@primarydata.com -14558c1052f872492992db007317364415bfdbf5c38fade1a9f186221bc550dc +167af610905e83ae27e329775e5669348a30488acc09851bfaadf06fc81a3667
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.