2012-03-22 12:45:41

by DENIEL Philippe

[permalink] [raw]
Subject: READDIRPLUS3 and NFS3ERR_BAD_COOKIE

Hi,

what is the client's behavior if NFS3ERR_BAD_COOKIE is replied by
READDIRPLUS3 ?
I have this error when running bonnie++ on top of my (non knfsd) server.
At this step bonnie++ readdirs all dentries and erase them. One of the
readdir calls ends with NFS3ERR_BAD_COOKIE and immediatly after, the
client is calling RMDIR3, without having removed any of the found
dentries. Of course RMDIR3 replies NFS3ERR_NOT_EMPTY, but I do not
understand why REMOVE is not called. It looks like the clients behaves
that the directory is empty after having received NFS3ERR_BAD_COOKIE
(that just an hypothesis, I am not just this is what actually happens).
Do you have any idea ?

Regards

Philippe


2012-03-22 17:07:12

by Myklebust, Trond

[permalink] [raw]
Subject: Re: READDIRPLUS3 and NFS3ERR_BAD_COOKIE

T24gVGh1LCAyMDEyLTAzLTIyIGF0IDEzOjQ1ICswMTAwLCBERU5JRUwgUGhpbGlwcGUgd3JvdGU6
DQo+IEhpLA0KPiANCj4gd2hhdCBpcyB0aGUgY2xpZW50J3MgYmVoYXZpb3IgaWYgTkZTM0VSUl9C
QURfQ09PS0lFIGlzIHJlcGxpZWQgYnkgDQo+IFJFQURESVJQTFVTMyA/DQo+IEkgaGF2ZSB0aGlz
IGVycm9yIHdoZW4gcnVubmluZyBib25uaWUrKyBvbiB0b3Agb2YgbXkgKG5vbiBrbmZzZCkgc2Vy
dmVyLiANCj4gQXQgdGhpcyBzdGVwIGJvbm5pZSsrIHJlYWRkaXJzIGFsbCBkZW50cmllcyBhbmQg
ZXJhc2UgdGhlbS4gT25lIG9mIHRoZSANCj4gcmVhZGRpciBjYWxscyBlbmRzIHdpdGggTkZTM0VS
Ul9CQURfQ09PS0lFIGFuZCBpbW1lZGlhdGx5IGFmdGVyLCB0aGUgDQo+IGNsaWVudCBpcyBjYWxs
aW5nIFJNRElSMywgd2l0aG91dCBoYXZpbmcgcmVtb3ZlZCBhbnkgb2YgdGhlIGZvdW5kIA0KPiBk
ZW50cmllcy4gT2YgY291cnNlIFJNRElSMyByZXBsaWVzIE5GUzNFUlJfTk9UX0VNUFRZLCBidXQg
SSBkbyBub3QgDQo+IHVuZGVyc3RhbmQgd2h5IFJFTU9WRSBpcyBub3QgY2FsbGVkLiBJdCBsb29r
cyBsaWtlIHRoZSBjbGllbnRzIGJlaGF2ZXMgDQo+IHRoYXQgdGhlIGRpcmVjdG9yeSBpcyBlbXB0
eSBhZnRlciBoYXZpbmcgcmVjZWl2ZWQgTkZTM0VSUl9CQURfQ09PS0lFIA0KPiAodGhhdCBqdXN0
IGFuIGh5cG90aGVzaXMsIEkgYW0gbm90IGp1c3QgdGhpcyBpcyB3aGF0IGFjdHVhbGx5IGhhcHBl
bnMpLg0KPiBEbyB5b3UgaGF2ZSBhbnkgaWRlYSA/DQoNCkRvZXMgYm9ubmllKysgY2hlY2sgdGhl
IHJldHVybiB2YWx1ZSBvZiByZWFkZGlyPyBUaGVyZSBpcyBubyBlYXN5IHdheQ0KZm9yIHRoZSBj
bGllbnQgdG8gcmVjb3ZlciB3aGVuIHRoZSBzZXJ2ZXIgcmV0dXJucyBCQURfQ09PS0lFLCBzbyB3
ZQ0Kc2hvdWxkIGJlIHBhc3NpbmcgdGhhdCBlcnJvciBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbi4N
Cg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KDQpO
ZXRBcHANClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0KDQo=

2012-03-22 17:14:18

by DENIEL Philippe

[permalink] [raw]
Subject: Re: READDIRPLUS3 and NFS3ERR_BAD_COOKIE

Myklebust, Trond a écrit :
>
> Does bonnie++ check the return value of readdir? There is no easy way
> for the client to recover when the server returns BAD_COOKIE, so we
> should be passing that error back to the application
Thanks for your reply, Trond.
No, it does not. It uses the readdir() call that takes a directory as
argument and returns a pointer to an array of struct dirents.
When bad cookie is sent back to the application, which error will it be.
I saw errno = 523 ? Is this correct ?

Regards

Philippe

2012-03-22 17:17:00

by Myklebust, Trond

[permalink] [raw]
Subject: Re: READDIRPLUS3 and NFS3ERR_BAD_COOKIE

T24gVGh1LCAyMDEyLTAzLTIyIGF0IDE4OjE0ICswMTAwLCBERU5JRUwgUGhpbGlwcGUgd3JvdGU6
DQo+IE15a2xlYnVzdCwgVHJvbmQgYSDDqWNyaXQgOg0KPiA+DQo+ID4gRG9lcyBib25uaWUrKyBj
aGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlYWRkaXI/IFRoZXJlIGlzIG5vIGVhc3kgd2F5DQo+
ID4gZm9yIHRoZSBjbGllbnQgdG8gcmVjb3ZlciB3aGVuIHRoZSBzZXJ2ZXIgcmV0dXJucyBCQURf
Q09PS0lFLCBzbyB3ZQ0KPiA+IHNob3VsZCBiZSBwYXNzaW5nIHRoYXQgZXJyb3IgYmFjayB0byB0
aGUgYXBwbGljYXRpb24NCj4gVGhhbmtzIGZvciB5b3VyIHJlcGx5LCBUcm9uZC4NCj4gTm8sIGl0
IGRvZXMgbm90LiBJdCB1c2VzIHRoZSByZWFkZGlyKCkgY2FsbCB0aGF0IHRha2VzIGEgZGlyZWN0
b3J5IGFzIA0KPiBhcmd1bWVudCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2Yg
c3RydWN0IGRpcmVudHMuDQo+IFdoZW4gYmFkIGNvb2tpZSBpcyBzZW50IGJhY2sgdG8gdGhlIGFw
cGxpY2F0aW9uLCB3aGljaCBlcnJvciB3aWxsIGl0IGJlLiANCj4gSSBzYXcgZXJybm8gPSA1MjMg
PyBJcyB0aGlzIGNvcnJlY3QgPw0KDQpZZXMsIHRoYXQgc291bmRzIHJpZ2h0Lg0KDQotLSANClRy
b25kIE15a2xlYnVzdA0KTGludXggTkZTIGNsaWVudCBtYWludGFpbmVyDQoNCk5ldEFwcA0KVHJv
bmQuTXlrbGVidXN0QG5ldGFwcC5jb20NCnd3dy5uZXRhcHAuY29tDQoNCg==