Message ID | 20130809164844.5362.23032.stgit@seurat.1015granger.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
T24gRnJpLCAyMDEzLTA4LTA5IGF0IDEyOjQ4IC0wNDAwLCBDaHVjayBMZXZlciB3cm90ZToNCj4g SSdkIGxpa2UgdG8gcmUtdXNlIE5GU3Y0LjEncyBzbG90IHRhYmxlIG1hY2hpbmVyeSBmb3IgTkZT djQuMA0KPiB0cmFuc3BvcnQgYmxvY2tpbmcuICBSZS1vcmdhbml6ZSBzb21lIG9mIG5mczRzZXNz aW9uLmMgc28gdGhlIHNsb3QNCj4gdGFibGUgY29kZSBpcyBidWlsdCBldmVuIHdoZW4gTkZTX1Y0 XzEgaXMgZGlzYWJsZWQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBDaHVjayBMZXZlciA8Y2h1Y2su bGV2ZXJAb3JhY2xlLmNvbT4NCj4gLS0tDQo+ICBmcy9uZnMvTWFrZWZpbGUgICAgICB8ICAgIDQg KystLQ0KPiAgZnMvbmZzL25mczRzZXNzaW9uLmMgfCAgIDI5ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tDQo+ICBmcy9uZnMvbmZzNHNlc3Npb24uaCB8ICAgMjggKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLQ0KPiAgZnMvbmZzL25mczRzdGF0ZS5jICAgfCAgICA5IC0tLS0tLS0tLQ0K PiAgNCBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkNCj4g DQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvTWFrZWZpbGUgYi9mcy9uZnMvTWFrZWZpbGUNCj4gaW5k ZXggZTBiYjA0OC4uMjgzOWJmZSAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL01ha2VmaWxlDQo+ICsr KyBiL2ZzL25mcy9NYWtlZmlsZQ0KPiBAQCAtMjEsMTAgKzIxLDEwIEBAIG5mc3YzLSQoQ09ORklH X05GU19WM19BQ0wpICs9IG5mczNhY2wubw0KPiAgb2JqLSQoQ09ORklHX05GU19WNCkgKz0gbmZz djQubw0KPiAgbmZzdjQteSA6PSBuZnM0cHJvYy5vIG5mczR4ZHIubyBuZnM0c3RhdGUubyBuZnM0 cmVuZXdkLm8gbmZzNHN1cGVyLm8gbmZzNGZpbGUubyBcDQo+ICAJICBkZWxlZ2F0aW9uLm8gaWRt YXAubyBjYWxsYmFjay5vIGNhbGxiYWNrX3hkci5vIGNhbGxiYWNrX3Byb2MubyBcDQo+IC0JICBu ZnM0bmFtZXNwYWNlLm8gbmZzNGdldHJvb3QubyBuZnM0Y2xpZW50Lm8gZG5zX3Jlc29sdmUubw0K PiArCSAgbmZzNG5hbWVzcGFjZS5vIG5mczRnZXRyb290Lm8gbmZzNGNsaWVudC5vIGRuc19yZXNv bHZlLm8gbmZzNHNlc3Npb24ubw0KPiAgbmZzdjQtJChDT05GSUdfTkZTX1VTRV9MRUdBQ1lfRE5T KSArPSBjYWNoZV9saWIubw0KPiAgbmZzdjQtJChDT05GSUdfU1lTQ1RMKQkrPSBuZnM0c3lzY3Rs Lm8NCj4gLW5mc3Y0LSQoQ09ORklHX05GU19WNF8xKQkrPSBuZnM0c2Vzc2lvbi5vIHBuZnMubyBw bmZzX2Rldi5vDQo+ICtuZnN2NC0kKENPTkZJR19ORlNfVjRfMSkJKz0gcG5mcy5vIHBuZnNfZGV2 Lm8NCj4gIA0KPiAgb2JqLSQoQ09ORklHX1BORlNfRklMRV9MQVlPVVQpICs9IG5mc19sYXlvdXRf bmZzdjQxX2ZpbGVzLm8NCj4gIG5mc19sYXlvdXRfbmZzdjQxX2ZpbGVzLXkgOj0gbmZzNGZpbGVs YXlvdXQubyBuZnM0ZmlsZWxheW91dGRldi5vDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHNl c3Npb24uYyBiL2ZzL25mcy9uZnM0c2Vzc2lvbi5jDQo+IGluZGV4IDAxNjFhZDIuLjc0NjY3NWIg MTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnM0c2Vzc2lvbi5jDQo+ICsrKyBiL2ZzL25mcy9uZnM0 c2Vzc2lvbi5jDQo+IEBAIC00NCw2ICs0NCwxNyBAQCBzdGF0aWMgdm9pZCBuZnM0X3Nocmlua19z bG90X3RhYmxlKHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgICp0YmwsIHUzMiBuZXdzaXplKQ0KPiAg CX0NCj4gIH0NCj4gIA0KPiArLyoqDQo+ICsgKiBuZnM0X3Nsb3RfdGJsX2RyYWluX2NvbXBsZXRl IC0gd2FrZSB3YWl0ZXJzIHdoZW4gZHJhaW4gaXMgY29tcGxldGUNCj4gKyAqIEB0YmwgLSBjb250 cm9sbGluZyBzbG90IHRhYmxlDQo+ICsgKg0KPiArICovDQo+ICt2b2lkIG5mczRfc2xvdF90Ymxf ZHJhaW5fY29tcGxldGUoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsKQ0KPiArew0KPiArCWlm IChuZnM0X3Nsb3RfdGJsX2RyYWluaW5nKHRibCkpDQo+ICsJCWNvbXBsZXRlKCZ0YmwtPmNvbXBs ZXRlKTsNCj4gK30NCj4gKw0KPiAgLyoNCj4gICAqIG5mczRfZnJlZV9zbG90IC0gZnJlZSBhIHNs b3QgYW5kIGVmZmljaWVudGx5IHVwZGF0ZSBzbG90IHRhYmxlLg0KPiAgICoNCj4gQEAgLTIxMiwx MyArMjIzLDYgQEAgb3V0Og0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+ICANCj4gLS8qIERlc3Ry b3kgdGhlIHNsb3QgdGFibGUgKi8NCj4gLXN0YXRpYyB2b2lkIG5mczRfZGVzdHJveV9zbG90X3Rh YmxlcyhzdHJ1Y3QgbmZzNF9zZXNzaW9uICpzZXNzaW9uKQ0KPiAtew0KPiAtCW5mczRfc2hyaW5r X3Nsb3RfdGFibGUoJnNlc3Npb24tPmZjX3Nsb3RfdGFibGUsIDApOw0KPiAtCW5mczRfc2hyaW5r X3Nsb3RfdGFibGUoJnNlc3Npb24tPmJjX3Nsb3RfdGFibGUsIDApOw0KPiAtfQ0KPiAtDQo+ICBz dGF0aWMgYm9vbCBuZnM0MV9hc3NpZ25fc2xvdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2ssIHZvaWQg KnBzbG90KQ0KPiAgew0KPiAgCXN0cnVjdCBuZnM0X3NlcXVlbmNlX2FyZ3MgKmFyZ3MgPSB0YXNr LT50a19tc2cucnBjX2FyZ3A7DQo+IEBAIC0zODMsNiArMzg3LDE1IEBAIHZvaWQgbmZzNDFfdXBk YXRlX3RhcmdldF9zbG90aWQoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsLA0KPiAgCXNwaW5f dW5sb2NrKCZ0YmwtPnNsb3RfdGJsX2xvY2spOw0KPiAgfQ0KPiAgDQo+ICsjaWYgZGVmaW5lZChD T05GSUdfTkZTX1Y0XzEpDQo+ICsNCj4gKy8qIERlc3Ryb3kgdGhlIHNsb3QgdGFibGUgKi8NCj4g K3N0YXRpYyB2b2lkIG5mczRfZGVzdHJveV9zbG90X3RhYmxlcyhzdHJ1Y3QgbmZzNF9zZXNzaW9u ICpzZXNzaW9uKQ0KPiArew0KPiArCW5mczRfc2hyaW5rX3Nsb3RfdGFibGUoJnNlc3Npb24tPmZj X3Nsb3RfdGFibGUsIDApOw0KPiArCW5mczRfc2hyaW5rX3Nsb3RfdGFibGUoJnNlc3Npb24tPmJj X3Nsb3RfdGFibGUsIDApOw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICogSW5pdGlhbGl6ZSBvciBy ZXNldCB0aGUgZm9yZWNoYW5uZWwgYW5kIGJhY2tjaGFubmVsIHRhYmxlcw0KPiAgICovDQo+IEBA IC01MTMsNCArNTI2LDQgQEAgaW50IG5mczRfaW5pdF9kc19zZXNzaW9uKHN0cnVjdCBuZnNfY2xp ZW50ICpjbHAsIHVuc2lnbmVkIGxvbmcgbGVhc2VfdGltZSkNCj4gIH0NCj4gIEVYUE9SVF9TWU1C T0xfR1BMKG5mczRfaW5pdF9kc19zZXNzaW9uKTsNCj4gIA0KPiAtDQo+ICsjZW5kaWYJLyogZGVm aW5lZChDT05GSUdfTkZTX1Y0XzEpICovDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHNlc3Np b24uaCBiL2ZzL25mcy9uZnM0c2Vzc2lvbi5oDQo+IGluZGV4IDNhMTUzZDguLjIzZDI2YjQgMTAw NjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnM0c2Vzc2lvbi5oDQo+ICsrKyBiL2ZzL25mcy9uZnM0c2Vz c2lvbi5oDQo+IEBAIC03MiwxNSArNzIsMjQgQEAgZW51bSBuZnM0X3Nlc3Npb25fc3RhdGUgew0K PiAgCU5GUzRfU0VTU0lPTl9JTklUSU5HLA0KPiAgfTsNCj4gIA0KPiAtI2lmIGRlZmluZWQoQ09O RklHX05GU19WNF8xKQ0KPiAgZXh0ZXJuIHN0cnVjdCBuZnM0X3Nsb3QgKm5mczRfYWxsb2Nfc2xv dChzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwpOw0KPiAgZXh0ZXJuIHZvaWQgbmZzNF9mcmVl X3Nsb3Qoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsLCBzdHJ1Y3QgbmZzNF9zbG90ICpzbG90 KTsNCj4gLQ0KPiAtZXh0ZXJuIHZvaWQgbmZzNDFfc2V0X3RhcmdldF9zbG90aWQoc3RydWN0IG5m czRfc2xvdF90YWJsZSAqdGJsLA0KPiAtCQl1MzIgdGFyZ2V0X2hpZ2hlc3Rfc2xvdGlkKTsNCj4g K2V4dGVybiB2b2lkIG5mczRfc2xvdF90YmxfZHJhaW5fY29tcGxldGUoc3RydWN0IG5mczRfc2xv dF90YWJsZSAqdGJsKTsNCj4gIGV4dGVybiB2b2lkIG5mczQxX3VwZGF0ZV90YXJnZXRfc2xvdGlk KHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgKnRibCwNCj4gIAkJc3RydWN0IG5mczRfc2xvdCAqc2xv dCwNCj4gIAkJc3RydWN0IG5mczRfc2VxdWVuY2VfcmVzICpyZXMpOw0KPiArYm9vbCBuZnM0MV93 YWtlX2FuZF9hc3NpZ25fc2xvdChzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwsDQo+ICsJCXN0 cnVjdCBuZnM0X3Nsb3QgKnNsb3QpOw0KPiArdm9pZCBuZnM0MV93YWtlX3Nsb3RfdGFibGUoc3Ry dWN0IG5mczRfc2xvdF90YWJsZSAqdGJsKTsNCj4gKw0KPiArc3RhdGljIGlubGluZSBib29sIG5m czRfc2xvdF90YmxfZHJhaW5pbmcoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsKQ0KPiArew0K PiArCXJldHVybiAhIXRlc3RfYml0KE5GUzRfU0xPVF9UQkxfRFJBSU5JTkcsICZ0YmwtPnNsb3Rf dGJsX3N0YXRlKTsNCj4gK30NCj4gKw0KPiArI2lmIGRlZmluZWQoQ09ORklHX05GU19WNF8xKQ0K PiArZXh0ZXJuIHZvaWQgbmZzNDFfc2V0X3RhcmdldF9zbG90aWQoc3RydWN0IG5mczRfc2xvdF90 YWJsZSAqdGJsLA0KPiArCQl1MzIgdGFyZ2V0X2hpZ2hlc3Rfc2xvdGlkKTsNCj4gIA0KPiAgZXh0 ZXJuIGludCBuZnM0X3NldHVwX3Nlc3Npb25fc2xvdF90YWJsZXMoc3RydWN0IG5mczRfc2Vzc2lv biAqc2VzKTsNCj4gIA0KPiBAQCAtODksMTcgKzk4LDYgQEAgZXh0ZXJuIHZvaWQgbmZzNF9kZXN0 cm95X3Nlc3Npb24oc3RydWN0IG5mczRfc2Vzc2lvbiAqc2Vzc2lvbik7DQo+ICBleHRlcm4gaW50 IG5mczRfaW5pdF9zZXNzaW9uKHN0cnVjdCBuZnNfY2xpZW50ICpjbHApOw0KPiAgZXh0ZXJuIGlu dCBuZnM0X2luaXRfZHNfc2Vzc2lvbihzdHJ1Y3QgbmZzX2NsaWVudCAqLCB1bnNpZ25lZCBsb25n KTsNCj4gIA0KPiAtZXh0ZXJuIHZvaWQgbmZzNF9zbG90X3RibF9kcmFpbl9jb21wbGV0ZShzdHJ1 Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwpOw0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIGJvb2wgbmZz NF9zbG90X3RibF9kcmFpbmluZyhzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwpDQo+IC17DQo+ IC0JcmV0dXJuICEhdGVzdF9iaXQoTkZTNF9TTE9UX1RCTF9EUkFJTklORywgJnRibC0+c2xvdF90 Ymxfc3RhdGUpOw0KPiAtfQ0KPiAtDQo+IC1ib29sIG5mczQxX3dha2VfYW5kX2Fzc2lnbl9zbG90 KHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgKnRibCwNCj4gLQkJc3RydWN0IG5mczRfc2xvdCAqc2xv dCk7DQo+IC12b2lkIG5mczQxX3dha2Vfc2xvdF90YWJsZShzdHJ1Y3QgbmZzNF9zbG90X3RhYmxl ICp0YmwpOw0KPiAtDQo+ICAvKg0KPiAgICogRGV0ZXJtaW5lIGlmIHNlc3Npb25zIGFyZSBpbiB1 c2UuDQo+ICAgKi8NCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0c3RhdGUuYyBiL2ZzL25mcy9u ZnM0c3RhdGUuYw0KPiBpbmRleCA2ODE4OTY0Li44ODI2ZGYzIDEwMDY0NA0KPiAtLS0gYS9mcy9u ZnMvbmZzNHN0YXRlLmMNCj4gKysrIGIvZnMvbmZzL25mczRzdGF0ZS5jDQo+IEBAIC0yNjAsMTUg KzI2MCw2IEBAIHN0YXRpYyB2b2lkIG5mczRfZW5kX2RyYWluX3Nlc3Npb24oc3RydWN0IG5mc19j bGllbnQgKmNscCkNCj4gIAl9DQo+ICB9DQo+ICANCj4gLS8qDQo+IC0gKiBTaWduYWwgc3RhdGUg bWFuYWdlciB0aHJlYWQgaWYgc2Vzc2lvbiBmb3JlIGNoYW5uZWwgaXMgZHJhaW5lZA0KPiAtICov DQo+IC12b2lkIG5mczRfc2xvdF90YmxfZHJhaW5fY29tcGxldGUoc3RydWN0IG5mczRfc2xvdF90 YWJsZSAqdGJsKQ0KPiAtew0KPiAtCWlmIChuZnM0X3Nsb3RfdGJsX2RyYWluaW5nKHRibCkpDQo+ IC0JCWNvbXBsZXRlKCZ0YmwtPmNvbXBsZXRlKTsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGludCBu ZnM0X2RyYWluX3Nsb3RfdGJsKHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgKnRibCkNCj4gIHsNCj4g IAlzZXRfYml0KE5GUzRfU0xPVF9UQkxfRFJBSU5JTkcsICZ0YmwtPnNsb3RfdGJsX3N0YXRlKTsN Cj4gDQo+IC0tDQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5l ICJ1bnN1YnNjcmliZSBsaW51eC1uZnMiIGluDQo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBt YWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6 Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KDQp3aGVuIGNvbXBpbGVkIHdp dGhvdXQgQ09ORklHX05GU19WNF8xLCBzcGFyc2UgY29tcGxhaW5zOg0KDQpbdHJvbmRteUBsZWly YSBsaW51eC1uZnNdJCBtYWtlIE89Li4vb2JqZWN0Lng4Nl82NCBXPTEgQz0yIGZzL25mcy9uZnM0 c2Vzc2lvbi5vDQptYWtlWzJdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yIGBhbGwnLg0KbWFrZVsy XTogTm90aGluZyB0byBiZSBkb25lIGZvciBgcmVsb2NzJy4NCiAgVXNpbmcgL2hvbWUvdHJvbmRt eS9kZXZlbC9rZXJuZWwvbGludXgtbmZzIGFzIHNvdXJjZSBmb3Iga2VybmVsDQogIEdFTiAgICAg L2hvbWUvdHJvbmRteS9kZXZlbC9rZXJuZWwvb2JqZWN0Lng4Nl82NC9NYWtlZmlsZQ0KICBDSEsg ICAgIGluY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvbGludXgvdmVyc2lvbi5oDQogIENISyAgICAgaW5j bHVkZS9nZW5lcmF0ZWQvdXRzcmVsZWFzZS5oDQogIENBTEwgICAgL2hvbWUvdHJvbmRteS9kZXZl bC9rZXJuZWwvbGludXgtbmZzL3NjcmlwdHMvY2hlY2tzeXNjYWxscy5zaA0KICBDSEVDSyAgIC9o b21lL3Ryb25kbXkvZGV2ZWwva2VybmVsL2xpbnV4LW5mcy9zY3JpcHRzL21vZC9lbXB0eS5jDQog IENIRUNLICAgL2hvbWUvdHJvbmRteS9kZXZlbC9rZXJuZWwvbGludXgtbmZzL2ZzL25mcy9uZnM0 c2Vzc2lvbi5jDQovaG9tZS90cm9uZG15L2RldmVsL2tlcm5lbC9saW51eC1uZnMvZnMvbmZzL25m czRzZXNzaW9uLmM6MzA0OjY6IHdhcm5pbmc6IHN5bWJvbCAnbmZzNDFfc2V0X3RhcmdldF9zbG90 aWQnIHdhcyBub3QgZGVjbGFyZWQuIFNob3VsZCBpdCBiZSBzdGF0aWM/DQovaG9tZS90cm9uZG15 L2RldmVsL2tlcm5lbC9saW51eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2Fybmlu ZzogZGVyZWZlcmVuY2Ugb2Ygbm9kZXJlZiBleHByZXNzaW9uDQovaG9tZS90cm9uZG15L2RldmVs L2tlcm5lbC9saW51eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2FybmluZzogZGVy ZWZlcmVuY2Ugb2Ygbm9kZXJlZiBleHByZXNzaW9uDQovaG9tZS90cm9uZG15L2RldmVsL2tlcm5l bC9saW51eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2FybmluZzogZGVyZWZlcmVu Y2Ugb2Ygbm9kZXJlZiBleHByZXNzaW9uDQovaG9tZS90cm9uZG15L2RldmVsL2tlcm5lbC9saW51 eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2FybmluZzogZGVyZWZlcmVuY2Ugb2Yg bm9kZXJlZiBleHByZXNzaW9uDQogIENDIFtNXSAgZnMvbmZzL25mczRzZXNzaW9uLm8NCi9ob21l L3Ryb25kbXkvZGV2ZWwva2VybmVsL2xpbnV4LW5mcy9mcy9uZnMvbmZzNHNlc3Npb24uYzozMDQ6 Njogd2FybmluZzogbm8gcHJldmlvdXMgcHJvdG90eXBlIGZvciDigJhuZnM0MV9zZXRfdGFyZ2V0 X3Nsb3RpZOKAmSBbLVdtaXNzaW5nLXByb3RvdHlwZXNdDQogdm9pZCBuZnM0MV9zZXRfdGFyZ2V0 X3Nsb3RpZChzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwsDQogICAgICBeDQovaG9tZS90cm9u ZG15L2RldmVsL2tlcm5lbC9saW51eC1uZnMvZnMvbmZzL25mczRzZXNzaW9uLmM6MjAwOjEyOiB3 YXJuaW5nOiDigJhuZnM0X3JlYWxsb2Nfc2xvdF90YWJsZeKAmSBkZWZpbmVkIGJ1dCBub3QgdXNl ZCBbLVd1bnVzZWQtZnVuY3Rpb25dDQogc3RhdGljIGludCBuZnM0X3JlYWxsb2Nfc2xvdF90YWJs ZShzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwsDQoNCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QN CkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBu ZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0K -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sep 3, 2013, at 12:50 PM, "Myklebust, Trond" <Trond.Myklebust@netapp.com> wrote: > On Fri, 2013-08-09 at 12:48 -0400, Chuck Lever wrote: >> I'd like to re-use NFSv4.1's slot table machinery for NFSv4.0 >> transport blocking. Re-organize some of nfs4session.c so the slot >> table code is built even when NFS_V4_1 is disabled. >> >> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> >> --- >> fs/nfs/Makefile | 4 ++-- >> fs/nfs/nfs4session.c | 29 +++++++++++++++++++++-------- >> fs/nfs/nfs4session.h | 28 +++++++++++++--------------- >> fs/nfs/nfs4state.c | 9 --------- >> 4 files changed, 36 insertions(+), 34 deletions(-) >> >> diff --git a/fs/nfs/Makefile b/fs/nfs/Makefile >> index e0bb048..2839bfe 100644 >> --- a/fs/nfs/Makefile >> +++ b/fs/nfs/Makefile >> @@ -21,10 +21,10 @@ nfsv3-$(CONFIG_NFS_V3_ACL) += nfs3acl.o >> obj-$(CONFIG_NFS_V4) += nfsv4.o >> nfsv4-y := nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o nfs4super.o nfs4file.o \ >> delegation.o idmap.o callback.o callback_xdr.o callback_proc.o \ >> - nfs4namespace.o nfs4getroot.o nfs4client.o dns_resolve.o >> + nfs4namespace.o nfs4getroot.o nfs4client.o dns_resolve.o nfs4session.o >> nfsv4-$(CONFIG_NFS_USE_LEGACY_DNS) += cache_lib.o >> nfsv4-$(CONFIG_SYSCTL) += nfs4sysctl.o >> -nfsv4-$(CONFIG_NFS_V4_1) += nfs4session.o pnfs.o pnfs_dev.o >> +nfsv4-$(CONFIG_NFS_V4_1) += pnfs.o pnfs_dev.o >> >> obj-$(CONFIG_PNFS_FILE_LAYOUT) += nfs_layout_nfsv41_files.o >> nfs_layout_nfsv41_files-y := nfs4filelayout.o nfs4filelayoutdev.o >> diff --git a/fs/nfs/nfs4session.c b/fs/nfs/nfs4session.c >> index 0161ad2..746675b 100644 >> --- a/fs/nfs/nfs4session.c >> +++ b/fs/nfs/nfs4session.c >> @@ -44,6 +44,17 @@ static void nfs4_shrink_slot_table(struct nfs4_slot_table *tbl, u32 newsize) >> } >> } >> >> +/** >> + * nfs4_slot_tbl_drain_complete - wake waiters when drain is complete >> + * @tbl - controlling slot table >> + * >> + */ >> +void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl) >> +{ >> + if (nfs4_slot_tbl_draining(tbl)) >> + complete(&tbl->complete); >> +} >> + >> /* >> * nfs4_free_slot - free a slot and efficiently update slot table. >> * >> @@ -212,13 +223,6 @@ out: >> return ret; >> } >> >> -/* Destroy the slot table */ >> -static void nfs4_destroy_slot_tables(struct nfs4_session *session) >> -{ >> - nfs4_shrink_slot_table(&session->fc_slot_table, 0); >> - nfs4_shrink_slot_table(&session->bc_slot_table, 0); >> -} >> - >> static bool nfs41_assign_slot(struct rpc_task *task, void *pslot) >> { >> struct nfs4_sequence_args *args = task->tk_msg.rpc_argp; >> @@ -383,6 +387,15 @@ void nfs41_update_target_slotid(struct nfs4_slot_table *tbl, >> spin_unlock(&tbl->slot_tbl_lock); >> } >> >> +#if defined(CONFIG_NFS_V4_1) >> + >> +/* Destroy the slot table */ >> +static void nfs4_destroy_slot_tables(struct nfs4_session *session) >> +{ >> + nfs4_shrink_slot_table(&session->fc_slot_table, 0); >> + nfs4_shrink_slot_table(&session->bc_slot_table, 0); >> +} >> + >> /* >> * Initialize or reset the forechannel and backchannel tables >> */ >> @@ -513,4 +526,4 @@ int nfs4_init_ds_session(struct nfs_client *clp, unsigned long lease_time) >> } >> EXPORT_SYMBOL_GPL(nfs4_init_ds_session); >> >> - >> +#endif /* defined(CONFIG_NFS_V4_1) */ >> diff --git a/fs/nfs/nfs4session.h b/fs/nfs/nfs4session.h >> index 3a153d8..23d26b4 100644 >> --- a/fs/nfs/nfs4session.h >> +++ b/fs/nfs/nfs4session.h >> @@ -72,15 +72,24 @@ enum nfs4_session_state { >> NFS4_SESSION_INITING, >> }; >> >> -#if defined(CONFIG_NFS_V4_1) >> extern struct nfs4_slot *nfs4_alloc_slot(struct nfs4_slot_table *tbl); >> extern void nfs4_free_slot(struct nfs4_slot_table *tbl, struct nfs4_slot *slot); >> - >> -extern void nfs41_set_target_slotid(struct nfs4_slot_table *tbl, >> - u32 target_highest_slotid); >> +extern void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl); >> extern void nfs41_update_target_slotid(struct nfs4_slot_table *tbl, >> struct nfs4_slot *slot, >> struct nfs4_sequence_res *res); >> +bool nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl, >> + struct nfs4_slot *slot); >> +void nfs41_wake_slot_table(struct nfs4_slot_table *tbl); >> + >> +static inline bool nfs4_slot_tbl_draining(struct nfs4_slot_table *tbl) >> +{ >> + return !!test_bit(NFS4_SLOT_TBL_DRAINING, &tbl->slot_tbl_state); >> +} >> + >> +#if defined(CONFIG_NFS_V4_1) >> +extern void nfs41_set_target_slotid(struct nfs4_slot_table *tbl, >> + u32 target_highest_slotid); >> >> extern int nfs4_setup_session_slot_tables(struct nfs4_session *ses); >> >> @@ -89,17 +98,6 @@ extern void nfs4_destroy_session(struct nfs4_session *session); >> extern int nfs4_init_session(struct nfs_client *clp); >> extern int nfs4_init_ds_session(struct nfs_client *, unsigned long); >> >> -extern void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl); >> - >> -static inline bool nfs4_slot_tbl_draining(struct nfs4_slot_table *tbl) >> -{ >> - return !!test_bit(NFS4_SLOT_TBL_DRAINING, &tbl->slot_tbl_state); >> -} >> - >> -bool nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl, >> - struct nfs4_slot *slot); >> -void nfs41_wake_slot_table(struct nfs4_slot_table *tbl); >> - >> /* >> * Determine if sessions are in use. >> */ >> diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c >> index 6818964..8826df3 100644 >> --- a/fs/nfs/nfs4state.c >> +++ b/fs/nfs/nfs4state.c >> @@ -260,15 +260,6 @@ static void nfs4_end_drain_session(struct nfs_client *clp) >> } >> } >> >> -/* >> - * Signal state manager thread if session fore channel is drained >> - */ >> -void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl) >> -{ >> - if (nfs4_slot_tbl_draining(tbl)) >> - complete(&tbl->complete); >> -} >> - >> static int nfs4_drain_slot_tbl(struct nfs4_slot_table *tbl) >> { >> set_bit(NFS4_SLOT_TBL_DRAINING, &tbl->slot_tbl_state); >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > when compiled without CONFIG_NFS_V4_1, sparse complains: > > [trondmy@leira linux-nfs]$ make O=../object.x86_64 W=1 C=2 fs/nfs/nfs4session.o > make[2]: Nothing to be done for `all'. > make[2]: Nothing to be done for `relocs'. > Using /home/trondmy/devel/kernel/linux-nfs as source for kernel > GEN /home/trondmy/devel/kernel/object.x86_64/Makefile > CHK include/generated/uapi/linux/version.h > CHK include/generated/utsrelease.h > CALL /home/trondmy/devel/kernel/linux-nfs/scripts/checksyscalls.sh > CHECK /home/trondmy/devel/kernel/linux-nfs/scripts/mod/empty.c > CHECK /home/trondmy/devel/kernel/linux-nfs/fs/nfs/nfs4session.c > /home/trondmy/devel/kernel/linux-nfs/fs/nfs/nfs4session.c:304:6: warning: symbol 'nfs41_set_target_slotid' was not declared. Should it be static? > /home/trondmy/devel/kernel/linux-nfs/include/linux/err.h:34:16: warning: dereference of noderef expression > /home/trondmy/devel/kernel/linux-nfs/include/linux/err.h:34:16: warning: dereference of noderef expression > /home/trondmy/devel/kernel/linux-nfs/include/linux/err.h:34:16: warning: dereference of noderef expression > /home/trondmy/devel/kernel/linux-nfs/include/linux/err.h:34:16: warning: dereference of noderef expression > CC [M] fs/nfs/nfs4session.o > /home/trondmy/devel/kernel/linux-nfs/fs/nfs/nfs4session.c:304:6: warning: no previous prototype for ‘nfs41_set_target_slotid’ [-Wmissing-prototypes] > void nfs41_set_target_slotid(struct nfs4_slot_table *tbl, > ^ > /home/trondmy/devel/kernel/linux-nfs/fs/nfs/nfs4session.c:200:12: warning: ‘nfs4_realloc_slot_table’ defined but not used [-Wunused-function] > static int nfs4_realloc_slot_table(struct nfs4_slot_table *tbl, There is a trivial fix in fs/nfs/nfs4session.h. I'm testing to see if that will cause merge conflicts with subsequent patches... or I can send a fix that applies on top of the series. Up to you.
diff --git a/fs/nfs/Makefile b/fs/nfs/Makefile index e0bb048..2839bfe 100644 --- a/fs/nfs/Makefile +++ b/fs/nfs/Makefile @@ -21,10 +21,10 @@ nfsv3-$(CONFIG_NFS_V3_ACL) += nfs3acl.o obj-$(CONFIG_NFS_V4) += nfsv4.o nfsv4-y := nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o nfs4super.o nfs4file.o \ delegation.o idmap.o callback.o callback_xdr.o callback_proc.o \ - nfs4namespace.o nfs4getroot.o nfs4client.o dns_resolve.o + nfs4namespace.o nfs4getroot.o nfs4client.o dns_resolve.o nfs4session.o nfsv4-$(CONFIG_NFS_USE_LEGACY_DNS) += cache_lib.o nfsv4-$(CONFIG_SYSCTL) += nfs4sysctl.o -nfsv4-$(CONFIG_NFS_V4_1) += nfs4session.o pnfs.o pnfs_dev.o +nfsv4-$(CONFIG_NFS_V4_1) += pnfs.o pnfs_dev.o obj-$(CONFIG_PNFS_FILE_LAYOUT) += nfs_layout_nfsv41_files.o nfs_layout_nfsv41_files-y := nfs4filelayout.o nfs4filelayoutdev.o diff --git a/fs/nfs/nfs4session.c b/fs/nfs/nfs4session.c index 0161ad2..746675b 100644 --- a/fs/nfs/nfs4session.c +++ b/fs/nfs/nfs4session.c @@ -44,6 +44,17 @@ static void nfs4_shrink_slot_table(struct nfs4_slot_table *tbl, u32 newsize) } } +/** + * nfs4_slot_tbl_drain_complete - wake waiters when drain is complete + * @tbl - controlling slot table + * + */ +void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl) +{ + if (nfs4_slot_tbl_draining(tbl)) + complete(&tbl->complete); +} + /* * nfs4_free_slot - free a slot and efficiently update slot table. * @@ -212,13 +223,6 @@ out: return ret; } -/* Destroy the slot table */ -static void nfs4_destroy_slot_tables(struct nfs4_session *session) -{ - nfs4_shrink_slot_table(&session->fc_slot_table, 0); - nfs4_shrink_slot_table(&session->bc_slot_table, 0); -} - static bool nfs41_assign_slot(struct rpc_task *task, void *pslot) { struct nfs4_sequence_args *args = task->tk_msg.rpc_argp; @@ -383,6 +387,15 @@ void nfs41_update_target_slotid(struct nfs4_slot_table *tbl, spin_unlock(&tbl->slot_tbl_lock); } +#if defined(CONFIG_NFS_V4_1) + +/* Destroy the slot table */ +static void nfs4_destroy_slot_tables(struct nfs4_session *session) +{ + nfs4_shrink_slot_table(&session->fc_slot_table, 0); + nfs4_shrink_slot_table(&session->bc_slot_table, 0); +} + /* * Initialize or reset the forechannel and backchannel tables */ @@ -513,4 +526,4 @@ int nfs4_init_ds_session(struct nfs_client *clp, unsigned long lease_time) } EXPORT_SYMBOL_GPL(nfs4_init_ds_session); - +#endif /* defined(CONFIG_NFS_V4_1) */ diff --git a/fs/nfs/nfs4session.h b/fs/nfs/nfs4session.h index 3a153d8..23d26b4 100644 --- a/fs/nfs/nfs4session.h +++ b/fs/nfs/nfs4session.h @@ -72,15 +72,24 @@ enum nfs4_session_state { NFS4_SESSION_INITING, }; -#if defined(CONFIG_NFS_V4_1) extern struct nfs4_slot *nfs4_alloc_slot(struct nfs4_slot_table *tbl); extern void nfs4_free_slot(struct nfs4_slot_table *tbl, struct nfs4_slot *slot); - -extern void nfs41_set_target_slotid(struct nfs4_slot_table *tbl, - u32 target_highest_slotid); +extern void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl); extern void nfs41_update_target_slotid(struct nfs4_slot_table *tbl, struct nfs4_slot *slot, struct nfs4_sequence_res *res); +bool nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl, + struct nfs4_slot *slot); +void nfs41_wake_slot_table(struct nfs4_slot_table *tbl); + +static inline bool nfs4_slot_tbl_draining(struct nfs4_slot_table *tbl) +{ + return !!test_bit(NFS4_SLOT_TBL_DRAINING, &tbl->slot_tbl_state); +} + +#if defined(CONFIG_NFS_V4_1) +extern void nfs41_set_target_slotid(struct nfs4_slot_table *tbl, + u32 target_highest_slotid); extern int nfs4_setup_session_slot_tables(struct nfs4_session *ses); @@ -89,17 +98,6 @@ extern void nfs4_destroy_session(struct nfs4_session *session); extern int nfs4_init_session(struct nfs_client *clp); extern int nfs4_init_ds_session(struct nfs_client *, unsigned long); -extern void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl); - -static inline bool nfs4_slot_tbl_draining(struct nfs4_slot_table *tbl) -{ - return !!test_bit(NFS4_SLOT_TBL_DRAINING, &tbl->slot_tbl_state); -} - -bool nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl, - struct nfs4_slot *slot); -void nfs41_wake_slot_table(struct nfs4_slot_table *tbl); - /* * Determine if sessions are in use. */ diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 6818964..8826df3 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -260,15 +260,6 @@ static void nfs4_end_drain_session(struct nfs_client *clp) } } -/* - * Signal state manager thread if session fore channel is drained - */ -void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl) -{ - if (nfs4_slot_tbl_draining(tbl)) - complete(&tbl->complete); -} - static int nfs4_drain_slot_tbl(struct nfs4_slot_table *tbl) { set_bit(NFS4_SLOT_TBL_DRAINING, &tbl->slot_tbl_state);
I'd like to re-use NFSv4.1's slot table machinery for NFSv4.0 transport blocking. Re-organize some of nfs4session.c so the slot table code is built even when NFS_V4_1 is disabled. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> --- fs/nfs/Makefile | 4 ++-- fs/nfs/nfs4session.c | 29 +++++++++++++++++++++-------- fs/nfs/nfs4session.h | 28 +++++++++++++--------------- fs/nfs/nfs4state.c | 9 --------- 4 files changed, 36 insertions(+), 34 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html