diff options
author | David Teigland <teigland@redhat.com> | 2008-12-08 18:14:10 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2008-12-23 11:16:32 -0500 |
commit | 03339696314fffb95dafb349b84243358e945ce6 (patch) | |
tree | 4fcdacf43dbe0adaeba79374d54395b5b4f0c035 /fs | |
parent | d61e9aac96317a43c192f1faabfa95d4d675b7ce (diff) |
dlm: remove extra blocking callback check
Just before delivering a blocking callback (bast), the dlm_astd
thread checks again that the granted mode of the lkb actually
blocks the mode requested by the bast. The idea behind this was
originally that the granted mode may have changed since the bast
was queued, making the callback now unnecessary. Reasons for
removing this extra check are:
- dlm_astd doesn't lock the rsb before reading the lkb grmode, so
it's not technically safe (this removes the long standing FIXME)
- after running some tests, it doesn't appear the check ever actually
eliminates a bast
- delivering an unnecessary blocking callback isn't a bad thing and
can happen anyway
Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/dlm/ast.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/fs/dlm/ast.c b/fs/dlm/ast.c index 30c11f3855b3..09b167df790e 100644 --- a/fs/dlm/ast.c +++ b/fs/dlm/ast.c | |||
@@ -89,13 +89,8 @@ static void process_asts(void) | |||
89 | if ((type & AST_COMP) && cast) | 89 | if ((type & AST_COMP) && cast) |
90 | cast(lkb->lkb_astparam); | 90 | cast(lkb->lkb_astparam); |
91 | 91 | ||
92 | /* FIXME: Is it safe to look at lkb_grmode here | ||
93 | without doing a lock_rsb() ? | ||
94 | Look at other checks in v1 to avoid basts. */ | ||
95 | |||
96 | if ((type & AST_BAST) && bast) | 92 | if ((type & AST_BAST) && bast) |
97 | if (!dlm_modes_compat(lkb->lkb_grmode, bmode)) | 93 | bast(lkb->lkb_astparam, bmode); |
98 | bast(lkb->lkb_astparam, bmode); | ||
99 | 94 | ||
100 | /* this removes the reference added by dlm_add_ast | 95 | /* this removes the reference added by dlm_add_ast |
101 | and may result in the lkb being freed */ | 96 | and may result in the lkb being freed */ |