diff options
author | David Teigland <teigland@redhat.com> | 2008-01-16 13:02:31 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2008-01-30 11:04:43 -0600 |
commit | 85f0379aa0f9366bb6918e2e898a915231176fbd (patch) | |
tree | 359544ba2ad34c1e49d4e6333b7c36cf8c7685f5 /fs/dlm/recoverd.c | |
parent | 594199ebaae5d77f025974dfcfa6651cc81325a8 (diff) | |
download | op-kernel-dev-85f0379aa0f9366bb6918e2e898a915231176fbd.zip op-kernel-dev-85f0379aa0f9366bb6918e2e898a915231176fbd.tar.gz |
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>
Diffstat (limited to 'fs/dlm/recoverd.c')
-rw-r--r-- | fs/dlm/recoverd.c | 11 |
1 files changed, 6 insertions, 5 deletions
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,17 +67,18 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) dlm_astd_resume(); /* - * This list of root rsb's will be the basis of most of the recovery - * routines. + * 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_create_root_list(ls); + dlm_clear_toss_list(ls); /* - * Free all the tossed rsb's so we don't have to recover them. + * This list of root rsb's will be the basis of most of the recovery + * routines. */ - dlm_clear_toss_list(ls); + dlm_create_root_list(ls); /* * Add or remove nodes from the lockspace's ls_nodes list. |