GFS2: Fix incorrect invalidation for DIO/buffered I/O
authorSteven Whitehouse <swhiteho@redhat.com>
Wed, 18 Dec 2013 14:14:52 +0000 (14:14 +0000)
committerSteven Whitehouse <swhiteho@redhat.com>
Fri, 20 Dec 2013 10:41:21 +0000 (10:41 +0000)
commitdfd11184d894cd0a92397b25cac18831a1a6a5bc
treeb9b52451fc269f124312b91d6da6a5c894f4e6b9
parent502be2a32f09f388e4ff34ef2e3ebcabbbb261da
GFS2: Fix incorrect invalidation for DIO/buffered I/O

In patch 209806aba9d540dde3db0a5ce72307f85f33468f we allowed
local deferred locks to be granted against a cached exclusive
lock. That opened up a corner case which this patch now
fixes.

The solution to the problem is to check whether we have cached
pages each time we do direct I/O and if so to unmap, flush
and invalidate those pages. Since the glock state machine
normally does that for us, mostly the code will be a no-op.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/aops.c