Skip to contentSkip to conversation

NFS: remove incorrect "Lock reclaim failed!" warning.

PATCH In review NeilBrown 2 participants 2 messages Aug 12, 2013 – Aug 22, 2013

Subsystems (2)
lore
Share & tools
lore

NeilBrown

author
#0 lore raw

PATCH 1/1 NFS: remove incorrect "Lock reclaim failed!" warning.

After reclaiming state that was lost, the NFS client tries to reclaim any locks, and then checks that each one has NFS_LOCK_INITIALIZED set (which means that the server has confirmed the lock).
However if the client holds a delegation, nfs_reclaim_locks() simply aborts (or more accurately it called nfs_lock_reclaim() and that returns without doing anything).

This is because when a delegation is held, the server doesn't need to know about locks.

So if a delegation is held, NFS_LOCK_INITIALIZED is not expected, and its absence is certainly not an error.

So don't print the warnings if NFS_DELGATED_STATE is set.

fs/nfs/nfs4state.c +9 -7
index e22862f..e4e063f 100644
@@ -1443,14 +1443,16 @@ restart:
 		if (status >= 0) {
 			status = nfs4_reclaim_locks(state, ops);
 			if (status >= 0) {
-				spin_lock(&state->state_lock);
-				list_for_each_entry(lock, &state->lock_states, ls_locks) {
-					if (!test_bit(NFS_LOCK_INITIALIZED, &lock->ls_flags))
-						pr_warn_ratelimited("NFS: "
-							"%s: Lock reclaim "
-							"failed!\n", __func__);
+				if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) {
+					spin_lock(&state->state_lock);
+					list_for_each_entry(lock, &state->lock_states, ls_locks) {
+						if (!test_bit(NFS_LOCK_INITIALIZED, &lock->ls_flags))
+							pr_warn_ratelimited("NFS: "
+									    "%s: Lock reclaim "
+									    "failed!\n", __func__);
+					}
+					spin_unlock(&state->state_lock);
 				}
-				spin_unlock(&state->state_lock);
 				nfs4_put_open_state(state);
 				spin_lock(&sp->so_lock);
 				goto restart;
#1 lore raw

T24gTW9uLCAyMDEzLTA4LTEyIGF0IDE2OjUyICsxMDAwLCBOZWlsQnJvd24gd3JvdGU6DQo+IA0K PiBBZnRlciByZWNsYWltaW5nIHN0YXRlIHRoYXQgd2FzIGxvc3QsIHRoZSBORlMgY2xpZW50IHRy aWVzIHRvIHJlY2xhaW0NCj4gYW55IGxvY2tzLCBhbmQgdGhlbiBjaGVja3MgdGhhdCBlYWNoIG9u ZSBoYXMgTkZTX0xPQ0tfSU5JVElBTElaRUQgc2V0DQo+ICh3aGljaCBtZWFucyB0aGF0IHRoZSBz ZXJ2ZXIgaGFzIGNvbmZpcm1lZCB0aGUgbG9jaykuDQo+IEhvd2V2ZXIgaWYgdGhlIGNsaWVudCBo b2xkcyBhIGRlbGVnYXRpb24sIG5mc19yZWNsYWltX2xvY2tzKCkgc2ltcGx5IGFib3J0cw0KPiAo b3IgbW9yZSBhY2N1cmF0ZWx5IGl0IGNhbGxlZCBuZnNfbG9ja19yZWNsYWltKCkgYW5kIHRoYXQg cmV0dXJucyB3aXRob3V0DQo+IGRvaW5nIGFueXRoaW5nKS4NCj4gDQo+IFRoaXMgaXMgYmVjYXVz ZSB3aGVuIGEgZGVsZWdhdGlvbiBpcyBoZWxkLCB0aGUgc2VydmVyIGRvZXNuJ3QgbmVlZCB0bw0K PiBrbm93IGFib3V0IGxvY2tzLg0KPiANCj4gU28gaWYgYSBkZWxlZ2F0aW9uIGlzIGhlbGQsIE5G U19MT0NLX0lOSVRJQUxJWkVEIGlzIG5vdCBleHBlY3RlZCwgYW5kDQo+IGl0cyBhYnNlbmNlIGlz IGNlcnRhaW5seSBub3QgYW4gZXJyb3IuDQo+IA0KPiBTbyBkb24ndCBwcmludCB0aGUgd2Fybmlu Z3MgaWYgTkZTX0RFTEdBVEVEX1NUQVRFIGlzIHNldC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE5l aWxCcm93biA8bmVpbGJAc3VzZS5kZT4NCj4gDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHN0 YXRlLmMgYi9mcy9uZnMvbmZzNHN0YXRlLmMNCj4gaW5kZXggZTIyODYyZi4uZTRlMDYzZiAxMDA2 NDQNCj4gLS0tIGEvZnMvbmZzL25mczRzdGF0ZS5jDQo+ICsrKyBiL2ZzL25mcy9uZnM0c3RhdGUu Yw0KPiBAQCAtMTQ0MywxNCArMTQ0MywxNiBAQCByZXN0YXJ0Og0KPiAgCQlpZiAoc3RhdHVzID49 IDApIHsNCj4gIAkJCXN0YXR1cyA9IG5mczRfcmVjbGFpbV9sb2NrcyhzdGF0ZSwgb3BzKTsNCj4g IAkJCWlmIChzdGF0dXMgPj0gMCkgew0KPiAtCQkJCXNwaW5fbG9jaygmc3RhdGUtPnN0YXRlX2xv Y2spOw0KPiAtCQkJCWxpc3RfZm9yX2VhY2hfZW50cnkobG9jaywgJnN0YXRlLT5sb2NrX3N0YXRl cywgbHNfbG9ja3MpIHsNCj4gLQkJCQkJaWYgKCF0ZXN0X2JpdChORlNfTE9DS19JTklUSUFMSVpF RCwgJmxvY2stPmxzX2ZsYWdzKSkNCj4gLQkJCQkJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoIk5GUzog Ig0KPiAtCQkJCQkJCSIlczogTG9jayByZWNsYWltICINCj4gLQkJCQkJCQkiZmFpbGVkIVxuIiwg X19mdW5jX18pOw0KPiArCQkJCWlmICh0ZXN0X2JpdChORlNfREVMRUdBVEVEX1NUQVRFLCAmc3Rh dGUtPmZsYWdzKSAhPSAwKSB7DQo+ICsJCQkJCXNwaW5fbG9jaygmc3RhdGUtPnN0YXRlX2xvY2sp Ow0KPiArCQkJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGxvY2ssICZzdGF0ZS0+bG9ja19zdGF0ZXMs IGxzX2xvY2tzKSB7DQo+ICsJCQkJCQlpZiAoIXRlc3RfYml0KE5GU19MT0NLX0lOSVRJQUxJWkVE LCAmbG9jay0+bHNfZmxhZ3MpKQ0KPiArCQkJCQkJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoIk5GUzog Ig0KPiArCQkJCQkJCQkJICAgICIlczogTG9jayByZWNsYWltICINCj4gKwkJCQkJCQkJCSAgICAi ZmFpbGVkIVxuIiwgX19mdW5jX18pOw0KPiArCQkJCQl9DQo+ICsJCQkJCXNwaW5fdW5sb2NrKCZz dGF0ZS0+c3RhdGVfbG9jayk7DQo+ICAJCQkJfQ0KPiAtCQkJCXNwaW5fdW5sb2NrKCZzdGF0ZS0+ c3RhdGVfbG9jayk7DQo+ICAJCQkJbmZzNF9wdXRfb3Blbl9zdGF0ZShzdGF0ZSk7DQo+ICAJCQkJ c3Bpbl9sb2NrKCZzcC0+c29fbG9jayk7DQo+ICAJCQkJZ290byByZXN0YXJ0Ow0KDQpUaGF0IGxv b2tzIGNvcnJlY3QgdG8gbWUuIEFwcGxpZWQuDQoNClRoYW5rcyBOZWlsIQ0KICBUcm9uZA0KLS0g DQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHAN ClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0K