dlm: keep cached master rsbs during recovery
To prevent the master of an rsb from changing rapidly, an unused rsb is kept
on the "toss list" for a period of time to be reused. The toss list was
being cleared completely for each recovery, which is unnecessary. Much of
the benefit of the toss list can be maintained if nodes keep rsb's in their
toss list that they are the master of. These rsb's need to be included
when the resource directory is rebuilt during recovery.
Signed-off-by: David Teigland <teigland@redhat.com>
diff --git a/fs/dlm/recoverd.c b/fs/dlm/recoverd.c
index 4b89e20..997f953 100644
--- a/fs/dlm/recoverd.c
+++ b/fs/dlm/recoverd.c
@@ -67,6 +67,13 @@
dlm_astd_resume();
/*
+ * Free non-master tossed rsb's. Master rsb's are kept on toss
+ * list and put on root list to be included in resdir recovery.
+ */
+
+ dlm_clear_toss_list(ls);
+
+ /*
* This list of root rsb's will be the basis of most of the recovery
* routines.
*/
@@ -74,12 +81,6 @@
dlm_create_root_list(ls);
/*
- * Free all the tossed rsb's so we don't have to recover them.
- */
-
- dlm_clear_toss_list(ls);
-
- /*
* Add or remove nodes from the lockspace's ls_nodes list.
* Also waits for all nodes to complete dlm_recover_members.
*/