Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=b45... Commit: b45a6cf730bd9e4be9c8570e8cbaf670ad59172c Parent: 782091c04c4cd718d2279ec0ab31ced262adc7b2 Author: David Teigland teigland@redhat.com AuthorDate: Tue Jul 27 14:06:53 2010 -0500 Committer: David Teigland teigland@redhat.com CommitterDate: Tue Jul 27 16:39:32 2010 -0500
dlm_controld: fix plock owner in checkpoints
The wrong plock resource owner is written into checkpoints when plock_ownership is 0. This causes a node that mounts the fs to have incorrect owner values, which cause the plock operations to permanently hang.
This bug seems to have existed since the plock code was originally copied into dlm_controld from gfs_controld. As part of the copy, there were some small code changes. One was to always include the resource owner in the checkpoint data, instead of only including it when plock_ownership was 1. The owner was then written and read incorrectly when plock_ownership was 0.
bz 618814
Signed-off-by: David Teigland teigland@redhat.com --- group/dlm_controld/plock.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/group/dlm_controld/plock.c b/group/dlm_controld/plock.c index 861a39b..d18d1f5 100644 --- a/group/dlm_controld/plock.c +++ b/group/dlm_controld/plock.c @@ -1924,7 +1924,9 @@ void store_plocks(struct lockspace *ls, uint32_t *sig) (there should be no SYNCING plocks) */
list_for_each_entry(r, &ls->plock_resources, list) { - if (r->owner == -1) + if (!cfgd_plock_ownership) + owner = 0; + else if (r->owner == -1) continue; else if (r->owner == our_nodeid) owner = our_nodeid;
cluster-commits@lists.fedorahosted.org