2012-12-13 06:47:30

by Yanchuan Nian

[permalink] [raw]
Subject: [PATCH] nfs: Don't return referenced delegations

From: Yanchuan Nian <[email protected]>

The client returns unreferenced delegations in state management. It scans all
delegations and tests the NFS_DELEGATION_REFERENCED flag. if this flag is not
set, NFS_DELEGATION_RETURN will be set and the delegation will be returned.
But unfortunately NFS_DELEGATION_REFERENCED is cleared after the testing, so
delegations which are still being used will be returned in the next state
management.

Signed-off-by: Yanchuan Nian <[email protected]>
---
fs/nfs/delegation.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
index 81c5eec..485e8c0 100644
--- a/fs/nfs/delegation.c
+++ b/fs/nfs/delegation.c
@@ -506,7 +506,7 @@ static void nfs_mark_return_unreferenced_delegations(struct nfs_server *server)
struct nfs_delegation *delegation;

list_for_each_entry_rcu(delegation, &server->delegations, super_list) {
- if (test_and_clear_bit(NFS_DELEGATION_REFERENCED, &delegation->flags))
+ if (test_bit(NFS_DELEGATION_REFERENCED, &delegation->flags))
continue;
nfs_mark_return_delegation(server, delegation);
}
--
1.7.4.4



2012-12-13 14:34:56

by Myklebust, Trond

[permalink] [raw]
Subject: Re: [PATCH] nfs: Don't return referenced delegations

T24gVGh1LCAyMDEyLTEyLTEzIGF0IDE0OjM3ICswODAwLCB5Y25pYW5AZ21haWwuY29tIHdyb3Rl
Og0KPiBGcm9tOiBZYW5jaHVhbiBOaWFuIDx5Y25pYW5AZ21haWwuY29tPg0KPiANCj4gVGhlIGNs
aWVudCByZXR1cm5zIHVucmVmZXJlbmNlZCBkZWxlZ2F0aW9ucyBpbiBzdGF0ZSBtYW5hZ2VtZW50
LiBJdCBzY2FucyBhbGwNCj4gZGVsZWdhdGlvbnMgYW5kIHRlc3RzIHRoZSBORlNfREVMRUdBVElP
Tl9SRUZFUkVOQ0VEIGZsYWcuIGlmIHRoaXMgZmxhZyBpcyBub3QNCj4gc2V0LCBORlNfREVMRUdB
VElPTl9SRVRVUk4gd2lsbCBiZSBzZXQgYW5kIHRoZSBkZWxlZ2F0aW9uIHdpbGwgYmUgcmV0dXJu
ZWQuIA0KPiBCdXQgdW5mb3J0dW5hdGVseSBORlNfREVMRUdBVElPTl9SRUZFUkVOQ0VEIGlzIGNs
ZWFyZWQgYWZ0ZXIgdGhlIHRlc3RpbmcsIHNvIA0KPiBkZWxlZ2F0aW9ucyB3aGljaCBhcmUgc3Rp
bGwgYmVpbmcgdXNlZCB3aWxsIGJlIHJldHVybmVkIGluIHRoZSBuZXh0IHN0YXRlDQo+IG1hbmFn
ZW1lbnQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBZYW5jaHVhbiBOaWFuIDx5Y25pYW5AZ21haWwu
Y29tPg0KPiAtLS0NCj4gIGZzL25mcy9kZWxlZ2F0aW9uLmMgfCAgICAyICstDQo+ICAxIGZpbGVz
IGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1n
aXQgYS9mcy9uZnMvZGVsZWdhdGlvbi5jIGIvZnMvbmZzL2RlbGVnYXRpb24uYw0KPiBpbmRleCA4
MWM1ZWVjLi40ODVlOGMwIDEwMDY0NA0KPiAtLS0gYS9mcy9uZnMvZGVsZWdhdGlvbi5jDQo+ICsr
KyBiL2ZzL25mcy9kZWxlZ2F0aW9uLmMNCj4gQEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMgdm9p
ZCBuZnNfbWFya19yZXR1cm5fdW5yZWZlcmVuY2VkX2RlbGVnYXRpb25zKHN0cnVjdCBuZnNfc2Vy
dmVyICpzZXJ2ZXIpDQo+ICAJc3RydWN0IG5mc19kZWxlZ2F0aW9uICpkZWxlZ2F0aW9uOw0KPiAg
DQo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVsZWdhdGlvbiwgJnNlcnZlci0+ZGVsZWdh
dGlvbnMsIHN1cGVyX2xpc3QpIHsNCj4gLQkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChORlNfREVM
RUdBVElPTl9SRUZFUkVOQ0VELCAmZGVsZWdhdGlvbi0+ZmxhZ3MpKQ0KPiArCQlpZiAodGVzdF9i
aXQoTkZTX0RFTEVHQVRJT05fUkVGRVJFTkNFRCwgJmRlbGVnYXRpb24tPmZsYWdzKSkNCj4gIAkJ
CWNvbnRpbnVlOw0KPiAgCQluZnNfbWFya19yZXR1cm5fZGVsZWdhdGlvbihzZXJ2ZXIsIGRlbGVn
YXRpb24pOw0KPiAgCX0NCg0KVGhlIGNsZWFyaW5nIG9mIHRoZSBiaXQgaGVyZSBpcyAxMDAlIGlu
dGVudGlvbmFsLiBUaGlzIGlzIGEgdmFyaWFudCBvbg0KYmFzaWMgbWFyay1hbmQtc3dlZXAgZ2Fy
YmFnZSBjb2xsZWN0aW9uIHdoZXJlIGlmIHRoZSBiaXQgaGFzbid0IGJlZW4gc2V0DQphZ2FpbiB0
aGUgbmV4dCB0aW1lIHdlIHNjYW4sIHRoZW4gd2UgYXNzdW1lIHRoZSBkZWxlZ2F0aW9uIGlzbid0
IGJlaW5nDQp1c2VkLg0KDQotLSANClRyb25kIE15a2xlYnVzdA0KTGludXggTkZTIGNsaWVudCBt
YWludGFpbmVyDQoNCk5ldEFwcA0KVHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20NCnd3dy5uZXRh
cHAuY29tDQo=