[GFS2] Invalidate cache at correct point
authorBenjamin Marzinski <bmarzins@redhat.com>
Fri, 14 Mar 2008 18:52:52 +0000 (13:52 -0500)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 31 Mar 2008 09:41:44 +0000 (10:41 +0100)
commit58e9fee13e579df44922172dbe3c9e3ba3edf7a3
tree7b134f28032a3cd498b2d9a18c02ea085c0725e2
parentf5a8cd020173c455705fc0095b7d299da6f8f87b
[GFS2] Invalidate cache at correct point

GFS2 wasn't invalidating its cache before it called into the lock manager
with a request that could potentially drop a lock.  This was leaving a
window where the lock could be actually be held by another node, but the
file's page cache would still appear valid, causing coherency problems.
This patch moves the cache invalidation to before the lock manager call
when dropping a lock. It also adds the option to the lock_dlm lock
manager to not use conversion mode deadlock avoidance, which, on a
conversion from shared to exclusive, could internally drop the lock, and
then reacquire in. GFS2 now asks lock_dlm to not do this.  Instead, GFS2
manually drops the lock and reacquires it.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/glock.c
fs/gfs2/incore.h
fs/gfs2/locking/dlm/lock.c
fs/gfs2/locking/dlm/thread.c
fs/gfs2/ops_fstype.c
include/linux/lm_interface.h