summaryrefslogtreecommitdiffstats
path: root/fs/dlm/recoverd.c
diff options
context:
space:
mode:
authorDavid Teigland2008-03-18 20:22:11 +0100
committerDavid Teigland2008-04-21 18:18:01 +0200
commitd44e0fc704143624b3e88fbf8fbcfda7a83fd299 (patch)
treeaf6c5a5c6ae179051caf725e46f11ff8e2f0f7c8 /fs/dlm/recoverd.c
parentdlm: save master info after failed no-queue request (diff)
downloadkernel-qcow2-linux-d44e0fc704143624b3e88fbf8fbcfda7a83fd299.tar.gz
kernel-qcow2-linux-d44e0fc704143624b3e88fbf8fbcfda7a83fd299.tar.xz
kernel-qcow2-linux-d44e0fc704143624b3e88fbf8fbcfda7a83fd299.zip
dlm: recover nodes that are removed and re-added
If a node is removed from a lockspace, and then added back before the dlm is notified of the removal, the dlm will not detect the removal and won't clear the old state from the node. This is fixed by using a list of added nodes so the membership recovery can detect when a newly added node is already in the member list. Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/recoverd.c')
-rw-r--r--fs/dlm/recoverd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/dlm/recoverd.c b/fs/dlm/recoverd.c
index 997f9531d594..fd677c8c3d3b 100644
--- a/fs/dlm/recoverd.c
+++ b/fs/dlm/recoverd.c
@@ -257,6 +257,7 @@ static void do_ls_recovery(struct dlm_ls *ls)
if (rv) {
ls_recover(ls, rv);
kfree(rv->nodeids);
+ kfree(rv->new);
kfree(rv);
}
}