lock reclaims outside grace period
Subsystems (2)
Current lockd code appears to reject regular locks done during the grace period, but not reclaims that come outside of the grace period.
(That's based on inspecting the code--I haven't run tests.)
That seems like an obvious bug. (We're not giving the client any way to determine whether conflicting locks might have been granted.)
Can we fix it, or is there a chance that people have been depending on this behavior? (Maybe for failing over to an already-active server??)
--b.
Quoted 10 lines · J. Bruce Fields
Current lockd code appears to reject regular locks done during the grace period, but not reclaims that come outside of the grace period.
(That's based on inspecting the code--I haven't run tests.)
That seems like an obvious bug. (We're not giving the client any way to determine whether conflicting locks might have been granted.)
Can we fix it, or is there a chance that people have been depending on this behavior? (Maybe for failing over to an already-active server??)
Sorry, but I really don't care if anyone has been relying on it: that is a _major_ bug and needs to be fixed ASAP.
Trond
A message that is not in the archive (sent off-list or not yet received): 1209507531.8321.11.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org
Quoted 7 lines · Trond Myklebust
Quoted 5 lines · J. Bruce Fields
Current lockd code appears to reject regular locks done during the grace period, but not reclaims that come outside of the grace period.
(That's based on inspecting the code--I haven't run tests.)
Quoted 8 lines
Quoted 5 lines
That seems like an obvious bug. (We're not giving the client any way to determine whether conflicting locks might have been granted.)
Can we fix it, or is there a chance that people have been depending on this behavior? (Maybe for failing over to an already-active server??)
Sorry, but I really don't care if anyone has been relying on it: that is a _major_ bug and needs to be fixed ASAP.
OK, good, I'll do some tests to confirm and then submit a patch.
When I ran across this I checked what specs I could find (mostly wondering which error to return), and was surprised to find no mention of this case. For example, from the Open Group XNFS spec
(http://www.opengroup.org/onlinepubs/9629799/):
"If "reclaim" is true, then the server will assume this is a request to re-establish a previous lock (for example, after the server has crashed and rebooted). During the grace period the server will only accept locks with "reclaim" set to true."
But they don't state the converse.
And LCK_DENIED_GRACE_PERIOD "Indicates that the procedure failed because the server host has recently been rebooted and the server NLM is re-establishing existing locks, and is not yet ready to accept normal service requests." But absent an objection I suppose I'll use LCK_DENIED_GRACE_PERIOD for the other case too.
Anyway, it all made me worry whether ignoring the late-reclaim case was actually standard behavior. It wouldn't be the only weird thing about NLM.
--b.
Quoted 12 lines · J. Bruce Fields
Quoted 10 lines · Trond Myklebust
Quoted 8 lines · J. Bruce Fields
Current lockd code appears to reject regular locks done during the grace period, but not reclaims that come outside of the grace period.
(That's based on inspecting the code--I haven't run tests.)
That seems like an obvious bug. (We're not giving the client any way to determine whether conflicting locks might have been granted.)
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines
Can we fix it, or is there a chance that people have been depending on this behavior? (Maybe for failing over to an already-active server??)
Sorry, but I really don't care if anyone has been relying on it: that is a _major_ bug and needs to be fixed ASAP.
OK, good, I'll do some tests to confirm and then submit a patch.
I can't disagree - but do prepare people start to ask why after kernel version 2.6.x, they have to extend grace period to get NFS locking works :) ...
-- Wendy
Quoted 11 lines · bfields
Quoted 10 lines · Trond Myklebust
Quoted 8 lines · J. Bruce Fields
Current lockd code appears to reject regular locks done during the grace period, but not reclaims that come outside of the grace period.
(That's based on inspecting the code--I haven't run tests.)
That seems like an obvious bug. (We're not giving the client any way to determine whether conflicting locks might have been granted.)
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
Can we fix it, or is there a chance that people have been depending on this behavior? (Maybe for failing over to an already-active server??)
Sorry, but I really don't care if anyone has been relying on it: that is a _major_ bug and needs to be fixed ASAP.
OK, good, I'll do some tests to confirm and then submit a patch.
Well, I figured the easiest way to reproduce the problem would be just by acquiring a lock on a client, then playing tricks with the network to cause it to miss the grace period.
But I'm not getting statd to work--or at least, I'm not seeing any statd activity on the network. There must be something basic wrong with my configuration, but I haven't found it yet.
--b.
Quoted 24 lines
When I ran across this I checked what specs I could find (mostly wondering which error to return), and was surprised to find no mention of this case. For example, from the Open Group XNFS spec
(http://www.opengroup.org/onlinepubs/9629799/):"If "reclaim" is true, then the server will assume this is a request to re-establish a previous lock (for example, after the server has crashed and rebooted). During the grace period the server will only accept locks with "reclaim" set to true."
But they don't state the converse.
And
LCK_DENIED_GRACE_PERIOD"Indicates that the procedure failed because the server host has recently been rebooted and the server NLM is re-establishing existing locks, and is not yet ready to accept normal service requests." But absent an objection I suppose I'll useLCK_DENIED_GRACE_PERIODfor the other case too.Anyway, it all made me worry whether ignoring the late-reclaim case was actually standard behavior. It wouldn't be the only weird thing about NLM.
--b.