NFS: remove incorrect "Lock reclaim failed!" warning.
Subsystems (2)
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
@@ -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;
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