diff mbox

[3.2.5] NFSv3 CLOSE_WAIT hang

Message ID loom.20120905T093214-245@post.gmane.org (mailing list archive)
State New, archived
Headers show

Commit Message

Andrew Yan-Pai Chen Sept. 5, 2012, 7:49 a.m. UTC
Simon Kirby <sim@...> writes:

> 
> Here's another CLOSE_WAIT hang, 3.2.5 client, 3.2.2 knfsd server, NFSv3.
> Not sure why these are all happening again now. This cluster seems to
> have a set of customers that are good at breaking things. ;)

Hi all,

I have the same problem in 3.3 kernel (client).
After applying the following modification as suggested by Dick in
http://www.spinics.net/lists/linux-nfs/msg32407.html, the problem
is just gone.

Does anyone know if they are related?
Thanks.



--
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. 5, 2012, 3:09 p.m. UTC | #1
T24gV2VkLCAyMDEyLTA5LTA1IGF0IDA3OjQ5ICswMDAwLCBZYW4tUGFpIENoZW4gd3JvdGU6DQo+
IFNpbW9uIEtpcmJ5IDxzaW1ALi4uPiB3cml0ZXM6DQo+IA0KPiA+IA0KPiA+IEhlcmUncyBhbm90
aGVyIENMT1NFX1dBSVQgaGFuZywgMy4yLjUgY2xpZW50LCAzLjIuMiBrbmZzZCBzZXJ2ZXIsIE5G
U3YzLg0KPiA+IE5vdCBzdXJlIHdoeSB0aGVzZSBhcmUgYWxsIGhhcHBlbmluZyBhZ2FpbiBub3cu
IFRoaXMgY2x1c3RlciBzZWVtcyB0bw0KPiA+IGhhdmUgYSBzZXQgb2YgY3VzdG9tZXJzIHRoYXQg
YXJlIGdvb2QgYXQgYnJlYWtpbmcgdGhpbmdzLiA7KQ0KPiANCj4gSGkgYWxsLA0KPiANCj4gSSBo
YXZlIHRoZSBzYW1lIHByb2JsZW0gaW4gMy4zIGtlcm5lbCAoY2xpZW50KS4NCj4gQWZ0ZXIgYXBw
bHlpbmcgdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb24gYXMgc3VnZ2VzdGVkIGJ5IERpY2sgaW4N
Cj4gaHR0cDovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1uZnMvbXNnMzI0MDcuaHRtbCwg
dGhlIHByb2JsZW0NCj4gaXMganVzdCBnb25lLg0KPiANCj4gRG9lcyBhbnlvbmUga25vdyBpZiB0
aGV5IGFyZSByZWxhdGVkPw0KPiBUaGFua3MuDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbmV0L3N1bnJw
Yy94cHJ0LmMgYi9uZXQvc3VucnBjL3hwcnQuYw0KPiBpbmRleCBjNjRjMGVmLi5mOTc5ZTlmIDEw
MDY0NA0KPiAtLS0gYS9uZXQvc3VucnBjL3hwcnQuYw0KPiArKysgYi9uZXQvc3VucnBjL3hwcnQu
Yw0KPiBAQCAtMTA3MSwyNCArMTA3MSw5IEBAIHZvaWQgeHBydF9yZXNlcnZlKHN0cnVjdCBycGNf
dGFzayAqdGFzaykNCj4gIHsNCj4gICAgICAgICBzdHJ1Y3QgcnBjX3hwcnQgKnhwcnQgPSB0YXNr
LT50a194cHJ0Ow0KPiANCj4gLSAgICAgICB0YXNrLT50a19zdGF0dXMgPSAwOw0KPiAtICAgICAg
IGlmICh0YXNrLT50a19ycXN0cCAhPSBOVUxMKQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJuOw0K
PiAtDQo+IC0gICAgICAgLyogTm90ZTogZ3JhYmJpbmcgdGhlIHhwcnRfbG9ja193cml0ZSgpIGhl
cmUgaXMgbm90IHN0cmljdGx5IG5lZWRlZCwNCj4gLSAgICAgICAgKiBidXQgZW5zdXJlcyB0aGF0
IHdlIHRocm90dGxlIG5ldyBzbG90IGFsbG9jYXRpb24gaWYgdGhlIHRyYW5zcG9ydA0KPiAtICAg
ICAgICAqIGlzIGNvbmdlc3RlZCAoZS5nLiBpZiByZWNvbm5lY3Rpbmcgb3IgaWYgd2UncmUgb3V0
IG9mIHNvY2tldA0KPiAtICAgICAgICAqIHdyaXRlIGJ1ZmZlciBzcGFjZSkuDQo+IC0gICAgICAg
ICovDQo+IC0gICAgICAgdGFzay0+dGtfdGltZW91dCA9IDA7DQo+IC0gICAgICAgdGFzay0+dGtf
c3RhdHVzID0gLUVBR0FJTjsNCj4gLSAgICAgICBpZiAoIXhwcnRfbG9ja193cml0ZSh4cHJ0LCB0
YXNrKSkNCj4gLSAgICAgICAgICAgICAgIHJldHVybjsNCj4gLQ0KPiAgICAgICAgIHNwaW5fbG9j
aygmeHBydC0+cmVzZXJ2ZV9sb2NrKTsNCj4gICAgICAgICB4cHJ0X2FsbG9jX3Nsb3QodGFzayk7
DQo+ICAgICAgICAgc3Bpbl91bmxvY2soJnhwcnQtPnJlc2VydmVfbG9jayk7DQo+IC0gICAgICAg
eHBydF9yZWxlYXNlX3dyaXRlKHhwcnQsIHRhc2spOw0KPiAgfQ0KDQpDbGVhcmx5IHRoZSBjb21t
ZW50IGlzIG1pc2xlYWRpbmcgYW5kIHNob3VsZCBiZSByZW1vdmVkLiBUaGF0IHdyaXRlIGxvY2sN
Cl9pc18gbmVlZGVkIGluIG9yZGVyIHRvIHRocm90dGxlIHNsb3RzIG9uIFRDUC4NCg0KQXMgZmFy
IGFzIEkga25vdywga2VybmVsIDMuMyBpcyBub3QgaW4gc3RhYmxlIHN1cHBvcnQgYW55IG1vcmUs
IHNvIEkNCmNhbid0IGhlbHAgdGhhdC4gQ2FuIHlvdSByZXByb2R1Y2UgdGhlIHByb2JsZW0gb24g
YSAzLjUga2VybmVsIG9yDQpoaWdoZXI/DQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBO
RlMgY2xpZW50IG1haW50YWluZXINCg0KTmV0QXBwDQpUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNv
bQ0Kd3d3Lm5ldGFwcC5jb20NCg0K
--
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
diff mbox

Patch

diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index c64c0ef..f979e9f 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -1071,24 +1071,9 @@  void xprt_reserve(struct rpc_task *task)
 {
        struct rpc_xprt *xprt = task->tk_xprt;

-       task->tk_status = 0;
-       if (task->tk_rqstp != NULL)
-               return;
-
-       /* Note: grabbing the xprt_lock_write() here is not strictly needed,
-        * but ensures that we throttle new slot allocation if the transport
-        * is congested (e.g. if reconnecting or if we're out of socket
-        * write buffer space).
-        */
-       task->tk_timeout = 0;
-       task->tk_status = -EAGAIN;
-       if (!xprt_lock_write(xprt, task))
-               return;
-
        spin_lock(&xprt->reserve_lock);
        xprt_alloc_slot(task);
        spin_unlock(&xprt->reserve_lock);
-       xprt_release_write(xprt, task);
 }