The patch looks simple and safe. Does it apply only to rhel6 or also upstream?
Fabio On 8/18/2011 9:38 PM, David Teigland wrote: > When a plock unlock is received due to the file > being closed (the CLOSE flag is set), we should > not write an unlock result back to the kernel. > If we do, the kernel, which does not expect a > reply, will report the error "dev_write no op". > > In cases where dlm_controld encounters and error > handling the unlock operation, it was writing > the error result back to the kernel, even though > the unlock was flagged with CLOSE. The fix is > to check for the CLOSE flag and skip writing > the error result, as we do with normal results. > > This problem is especially visible when using > flocks (not plocks). This is because the kernel > generates extraneous plock unlock requests > when files are closed with flocks. Because > dlm_controld finds no plocks on the files, > it replies to the kernel with an error, rather > than skipping the reply to do CLOSE. > > bz 731775 > > Signed-off-by: David Teigland <teigl...@redhat.com> > --- > group/dlm_controld/plock.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/group/dlm_controld/plock.c b/group/dlm_controld/plock.c > index 6d5dea8..556993b 100644 > --- a/group/dlm_controld/plock.c > +++ b/group/dlm_controld/plock.c > @@ -1583,8 +1583,10 @@ void process_plocks(int ci) > return; > > fail: > - info.rv = rv; > - rv = write(plock_device_fd, &info, sizeof(info)); > + if (!(info.flags & DLM_PLOCK_FL_CLOSE)) { > + info.rv = rv; > + rv = write(plock_device_fd, &info, sizeof(info)); > + } > } > > void process_saved_plocks(struct lockspace *ls)