diff mbox

[v2,07/33] NFS: Enable slot table helpers for NFSv4.0

Message ID 20130809164844.5362.23032.stgit@seurat.1015granger.net (mailing list archive)
State New, archived
Headers show

Commit Message

Chuck Lever Aug. 9, 2013, 4:48 p.m. UTC
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

Comments

Trond Myklebust Sept. 3, 2013, 4:50 p.m. UTC | #1
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
Chuck Lever Sept. 3, 2013, 6:19 p.m. UTC | #2
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 mbox

Patch

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);