2017-03-15 15:19:00

by Andy Adamson

[permalink] [raw]
Subject: [PATCH Version 1 1/1] NFS free the layoutget slot before calling pnfs_layout_process

From: Andy Adamson <[email protected]>

Otherwise no slots could be available for the potential
pnfs_layout_process getdeviceinfo call and the client hangs on pNFS I/O.

This occurs in testing against the pynfs pNFS server where the
the on-wire reply highest_slotid and slot id are zero, and the
target high slot id is 8 (negotiated in CREATE_SESSION).

The internal fore channel slot table max_slotid, the maximum allowed
table slotid value, has been reduced via nfs41_set_max_slotid_locked
from 8 to 1. Thus there is one slot (slotid 0) available for use but
it has not been freed by layoutget proir to the getdeviceinfo request.

So the layout get call is waiting for the getdeviceinfo call to complete,
and the getdeviceinfo call is waiting for layoutget to free the slot.

Signed-off-by: Andy Adamson <[email protected]>
---
fs/nfs/nfs4proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 1b18368..8ca92d0 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -8504,10 +8504,10 @@ nfs4_proc_layoutget(struct nfs4_layoutget *lgp, long *timeout, gfp_t gfp_flags)
&lgp->res.stateid,
status);

+ nfs4_sequence_free_slot(&lgp->res.seq_res);
/* if layoutp->len is 0, nfs4_layoutget_prepare called rpc_exit */
if (status == 0 && lgp->res.layoutp->len)
lseg = pnfs_layout_process(lgp);
- nfs4_sequence_free_slot(&lgp->res.seq_res);
rpc_put_task(task);
dprintk("<-- %s status=%d\n", __func__, status);
if (status)
--
2.9.3



2017-03-15 19:09:52

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH Version 1 1/1] NFS free the layoutget slot before calling pnfs_layout_process

T24gV2VkLCAyMDE3LTAzLTE1IGF0IDExOjE4IC0wNDAwLCBhbmRyb3NAbmV0YXBwLmNvbSB3cm90
ZToNCj4gRnJvbTogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCj4gDQo+IE90aGVy
d2lzZSBubyBzbG90cyBjb3VsZCBiZSBhdmFpbGFibGUgZm9yIHRoZSBwb3RlbnRpYWwNCj4gcG5m
c19sYXlvdXRfcHJvY2VzcyBnZXRkZXZpY2VpbmZvIGNhbGwgYW5kIHRoZSBjbGllbnQgaGFuZ3Mg
b24gcE5GUw0KPiBJL08uDQo+IA0KPiBUaGlzIG9jY3VycyBpbiB0ZXN0aW5nIGFnYWluc3QgdGhl
IHB5bmZzIHBORlMgc2VydmVyIHdoZXJlIHRoZQ0KPiB0aGUgb24td2lyZSByZXBseSBoaWdoZXN0
X3Nsb3RpZCBhbmQgc2xvdCBpZCBhcmUgemVybywgYW5kIHRoZQ0KPiB0YXJnZXQgaGlnaCBzbG90
IGlkIGlzIDggKG5lZ290aWF0ZWQgaW4gQ1JFQVRFX1NFU1NJT04pLg0KPiANCj4gVGhlIGludGVy
bmFsIGZvcmUgY2hhbm5lbCBzbG90IHRhYmxlIG1heF9zbG90aWQsIHRoZSBtYXhpbXVtIGFsbG93
ZWQNCj4gdGFibGUgc2xvdGlkIHZhbHVlLCBoYXMgYmVlbiByZWR1Y2VkIHZpYSBuZnM0MV9zZXRf
bWF4X3Nsb3RpZF9sb2NrZWQNCj4gwqBmcm9tIDggdG8gMS7CoMKgVGh1cyB0aGVyZSBpcyBvbmUg
c2xvdCAoc2xvdGlkIDApIGF2YWlsYWJsZSBmb3IgdXNlDQo+IGJ1dA0KPiBpdCBoYXMgbm90IGJl
ZW4gZnJlZWQgYnkgbGF5b3V0Z2V0IHByb2lyIHRvIHRoZSBnZXRkZXZpY2VpbmZvDQo+IHJlcXVl
c3QuDQo+IA0KPiBTbyB0aGUgbGF5b3V0IGdldCBjYWxsIGlzIHdhaXRpbmcgZm9yIHRoZSBnZXRk
ZXZpY2VpbmZvIGNhbGwgdG8NCj4gY29tcGxldGUsDQo+IGFuZCB0aGUgZ2V0ZGV2aWNlaW5mbyBj
YWxsIGlzIHdhaXRpbmcgZm9yIGxheW91dGdldCB0byBmcmVlIHRoZSBzbG90Lg0KPiANCj4gU2ln
bmVkLW9mZi1ieTogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCj4gLS0tDQo+IMKg
ZnMvbmZzL25mczRwcm9jLmMgfCAyICstDQo+IMKgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u
KCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczRwcm9jLmMg
Yi9mcy9uZnMvbmZzNHByb2MuYw0KPiBpbmRleCAxYjE4MzY4Li44Y2E5MmQwIDEwMDY0NA0KPiAt
LS0gYS9mcy9uZnMvbmZzNHByb2MuYw0KPiArKysgYi9mcy9uZnMvbmZzNHByb2MuYw0KPiBAQCAt
ODUwNCwxMCArODUwNCwxMCBAQCBuZnM0X3Byb2NfbGF5b3V0Z2V0KHN0cnVjdCBuZnM0X2xheW91
dGdldA0KPiAqbGdwLCBsb25nICp0aW1lb3V0LCBnZnBfdCBnZnBfZmxhZ3MpDQo+IMKgCQkJJmxn
cC0+cmVzLnN0YXRlaWQsDQo+IMKgCQkJc3RhdHVzKTsNCj4gwqANCj4gKwluZnM0X3NlcXVlbmNl
X2ZyZWVfc2xvdCgmbGdwLT5yZXMuc2VxX3Jlcyk7DQo+IMKgCS8qIGlmIGxheW91dHAtPmxlbiBp
cyAwLCBuZnM0X2xheW91dGdldF9wcmVwYXJlIGNhbGxlZA0KPiBycGNfZXhpdCAqLw0KPiDCoAlp
ZiAoc3RhdHVzID09IDAgJiYgbGdwLT5yZXMubGF5b3V0cC0+bGVuKQ0KPiDCoAkJbHNlZyA9IHBu
ZnNfbGF5b3V0X3Byb2Nlc3MobGdwKTsNCj4gLQluZnM0X3NlcXVlbmNlX2ZyZWVfc2xvdCgmbGdw
LT5yZXMuc2VxX3Jlcyk7DQo+IMKgCXJwY19wdXRfdGFzayh0YXNrKTsNCj4gwqAJZHByaW50aygi
PC0tICVzIHN0YXR1cz0lZFxuIiwgX19mdW5jX18sIHN0YXR1cyk7DQo+IMKgCWlmIChzdGF0dXMp
DQoNClRoZSBwbGFjZW1lbnQgb2YgdGhlIGNhbGwgdG8gbmZzNF9zZXF1ZW5jZV9mcmVlX3Nsb3Qo
KSBhZnRlciB0aGUgY2FsbA0KdG8gcG5mc19sYXlvdXRfcHJvY2VzcygpIGlzIGRlbGliZXJhdGUs
IGFuZCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8NCmVuc3VyZSB0aGF0IGxheW91dHJlY2FsbCBjYWxs
YmFja3MgYXJlIHByb2Nlc3NlZCBjb3JyZWN0bHkgaW4gb3JkZXINCmFmdGVyIHRoZSBsYXlvdXRn
ZXQgaGFzIGJlZW4gcHJvY2Vzc2VkIChzZWUgcmVmZXJyaW5nX2NhbGxfZXhpc3RzKCkpLg0KDQpU
aGUgY2FsbCB0byBuZnM0X2ZpbmRfZ2V0X2RldmljZWlkKCkgbmVlZHMgdG8gYmUgbW92ZWQgb3V0
IG9mDQpwbmZzX3VwZGF0ZV9sYXlvdXQoKS4NCkluIHRoZSBmbGV4ZmlsZXMgZHJpdmVyLCBpdCB3
YXMgbW92ZWQgdG8gbmZzNF9mZl9sYXlvdXRfcHJlcGFyZV9kcygpLA0KYnV0IGl0IGxvb2tzIHRv
IG1lIGFzIGlmIHRoZSBmaWxlcyBkcml2ZXIgbmVlZHMgdG8gY2FsbCBpdCBlYXJsaWVyIGR1ZQ0K
dG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlIHN0cmlwZXMuIFBlcmhhcHMgdGhlIHJpZ2h0IHRoaW5n
IGlzIHRvIGFkZCBhDQp3cmFwcGVyIGFyb3VuZCBwbmZzX3VwZGF0ZV9sYXlvdXQoKSBpbiBmcy9u
ZnMvZmlsZWxheW91dC9maWxlbGF5b3V0LmMNCnRoYXQgY2FuIGJlIGNhbGxlZCBieSBib3RoIGZp
bGVsYXlvdXRfcGdfaW5pdF9yZWFkKCkgYW5kDQpmaWxlbGF5b3V0X3BnX2luaXRfd3JpdGUoKT8N
Cg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lciwgUHJp
bWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5jb20NCg==


2017-03-15 19:19:04

by Adamson, Andy

[permalink] [raw]
Subject: Re: [PATCH Version 1 1/1] NFS free the layoutget slot before calling pnfs_layout_process

T0sg4oCTIEnigJlsbCB0YWtlIGEgbG9vay4NCg0KVGhhbmtzDQoNCuKGkkFuZHkNCg0KT24gMy8x
NS8xNywgMzowOSBQTSwgIlRyb25kIE15a2xlYnVzdCIgPHRyb25kbXlAcHJpbWFyeWRhdGEuY29t
PiB3cm90ZToNCg0KT24gV2VkLCAyMDE3LTAzLTE1IGF0IDExOjE4IC0wNDAwLCBhbmRyb3NAbmV0
YXBwLmNvbSB3cm90ZToNCj4gRnJvbTogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4N
Cj4gDQo+IE90aGVyd2lzZSBubyBzbG90cyBjb3VsZCBiZSBhdmFpbGFibGUgZm9yIHRoZSBwb3Rl
bnRpYWwNCj4gcG5mc19sYXlvdXRfcHJvY2VzcyBnZXRkZXZpY2VpbmZvIGNhbGwgYW5kIHRoZSBj
bGllbnQgaGFuZ3Mgb24gcE5GUw0KPiBJL08uDQo+IA0KPiBUaGlzIG9jY3VycyBpbiB0ZXN0aW5n
IGFnYWluc3QgdGhlIHB5bmZzIHBORlMgc2VydmVyIHdoZXJlIHRoZQ0KPiB0aGUgb24td2lyZSBy
ZXBseSBoaWdoZXN0X3Nsb3RpZCBhbmQgc2xvdCBpZCBhcmUgemVybywgYW5kIHRoZQ0KPiB0YXJn
ZXQgaGlnaCBzbG90IGlkIGlzIDggKG5lZ290aWF0ZWQgaW4gQ1JFQVRFX1NFU1NJT04pLg0KPiAN
Cj4gVGhlIGludGVybmFsIGZvcmUgY2hhbm5lbCBzbG90IHRhYmxlIG1heF9zbG90aWQsIHRoZSBt
YXhpbXVtIGFsbG93ZWQNCj4gdGFibGUgc2xvdGlkIHZhbHVlLCBoYXMgYmVlbiByZWR1Y2VkIHZp
YSBuZnM0MV9zZXRfbWF4X3Nsb3RpZF9sb2NrZWQNCj4gIGZyb20gOCB0byAxLiAgVGh1cyB0aGVy
ZSBpcyBvbmUgc2xvdCAoc2xvdGlkIDApIGF2YWlsYWJsZSBmb3IgdXNlDQo+IGJ1dA0KPiBpdCBo
YXMgbm90IGJlZW4gZnJlZWQgYnkgbGF5b3V0Z2V0IHByb2lyIHRvIHRoZSBnZXRkZXZpY2VpbmZv
DQo+IHJlcXVlc3QuDQo+IA0KPiBTbyB0aGUgbGF5b3V0IGdldCBjYWxsIGlzIHdhaXRpbmcgZm9y
IHRoZSBnZXRkZXZpY2VpbmZvIGNhbGwgdG8NCj4gY29tcGxldGUsDQo+IGFuZCB0aGUgZ2V0ZGV2
aWNlaW5mbyBjYWxsIGlzIHdhaXRpbmcgZm9yIGxheW91dGdldCB0byBmcmVlIHRoZSBzbG90Lg0K
PiANCj4gU2lnbmVkLW9mZi1ieTogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCj4g
LS0tDQo+ICBmcy9uZnMvbmZzNHByb2MuYyB8IDIgKy0NCj4gIDEgZmlsZSBjaGFuZ2VkLCAxIGlu
c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0
cHJvYy5jIGIvZnMvbmZzL25mczRwcm9jLmMNCj4gaW5kZXggMWIxODM2OC4uOGNhOTJkMCAxMDA2
NDQNCj4gLS0tIGEvZnMvbmZzL25mczRwcm9jLmMNCj4gKysrIGIvZnMvbmZzL25mczRwcm9jLmMN
Cj4gQEAgLTg1MDQsMTAgKzg1MDQsMTAgQEAgbmZzNF9wcm9jX2xheW91dGdldChzdHJ1Y3QgbmZz
NF9sYXlvdXRnZXQNCj4gKmxncCwgbG9uZyAqdGltZW91dCwgZ2ZwX3QgZ2ZwX2ZsYWdzKQ0KPiAg
CQkJJmxncC0+cmVzLnN0YXRlaWQsDQo+ICAJCQlzdGF0dXMpOw0KPiAgDQo+ICsJbmZzNF9zZXF1
ZW5jZV9mcmVlX3Nsb3QoJmxncC0+cmVzLnNlcV9yZXMpOw0KPiAgCS8qIGlmIGxheW91dHAtPmxl
biBpcyAwLCBuZnM0X2xheW91dGdldF9wcmVwYXJlIGNhbGxlZA0KPiBycGNfZXhpdCAqLw0KPiAg
CWlmIChzdGF0dXMgPT0gMCAmJiBsZ3AtPnJlcy5sYXlvdXRwLT5sZW4pDQo+ICAJCWxzZWcgPSBw
bmZzX2xheW91dF9wcm9jZXNzKGxncCk7DQo+IC0JbmZzNF9zZXF1ZW5jZV9mcmVlX3Nsb3QoJmxn
cC0+cmVzLnNlcV9yZXMpOw0KPiAgCXJwY19wdXRfdGFzayh0YXNrKTsNCj4gIAlkcHJpbnRrKCI8
LS0gJXMgc3RhdHVzPSVkXG4iLCBfX2Z1bmNfXywgc3RhdHVzKTsNCj4gIAlpZiAoc3RhdHVzKQ0K
DQpUaGUgcGxhY2VtZW50IG9mIHRoZSBjYWxsIHRvIG5mczRfc2VxdWVuY2VfZnJlZV9zbG90KCkg
YWZ0ZXIgdGhlIGNhbGwNCnRvIHBuZnNfbGF5b3V0X3Byb2Nlc3MoKSBpcyBkZWxpYmVyYXRlLCBh
bmQgaXMgbmVlZGVkIGluIG9yZGVyIHRvDQplbnN1cmUgdGhhdCBsYXlvdXRyZWNhbGwgY2FsbGJh
Y2tzIGFyZSBwcm9jZXNzZWQgY29ycmVjdGx5IGluIG9yZGVyDQphZnRlciB0aGUgbGF5b3V0Z2V0
IGhhcyBiZWVuIHByb2Nlc3NlZCAoc2VlIHJlZmVycmluZ19jYWxsX2V4aXN0cygpKS4NCg0KVGhl
IGNhbGwgdG8gbmZzNF9maW5kX2dldF9kZXZpY2VpZCgpIG5lZWRzIHRvIGJlIG1vdmVkIG91dCBv
Zg0KcG5mc191cGRhdGVfbGF5b3V0KCkuDQpJbiB0aGUgZmxleGZpbGVzIGRyaXZlciwgaXQgd2Fz
IG1vdmVkIHRvIG5mczRfZmZfbGF5b3V0X3ByZXBhcmVfZHMoKSwNCmJ1dCBpdCBsb29rcyB0byBt
ZSBhcyBpZiB0aGUgZmlsZXMgZHJpdmVyIG5lZWRzIHRvIGNhbGwgaXQgZWFybGllciBkdWUNCnRv
IHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSBzdHJpcGVzLiBQZXJoYXBzIHRoZSByaWdodCB0aGluZyBp
cyB0byBhZGQgYQ0Kd3JhcHBlciBhcm91bmQgcG5mc191cGRhdGVfbGF5b3V0KCkgaW4gZnMvbmZz
L2ZpbGVsYXlvdXQvZmlsZWxheW91dC5jDQp0aGF0IGNhbiBiZSBjYWxsZWQgYnkgYm90aCBmaWxl
bGF5b3V0X3BnX2luaXRfcmVhZCgpIGFuZA0KZmlsZWxheW91dF9wZ19pbml0X3dyaXRlKCk/DQoN
Ci0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMgY2xpZW50IG1haW50YWluZXIsIFByaW1h
cnlEYXRhDQp0cm9uZC5teWtsZWJ1c3RAcHJpbWFyeWRhdGEuY29tDQoNCg0K