Commit 96969521 authored by David Howells's avatar David Howells

FS-Cache: Add transition to handle invalidate immediately after lookup

Add a missing transition to the FS-Cache object state machine to handle an
invalidation event occuring between the back end completing the object lookup
by calling fscache_obtained_object() (which moves to state OBJECT_AVAILABLE)
and the backend returning to fscache_lookup_object() and thence to
fscache_object_state_machine() which then does a goto lookup_transit to handle
the transition - but lookup_transit doesn't handle EV_INVALIDATE.

Without this, the following BUG can be logged:

	FS-Cache: Unsupported event 2 [5/f7] in state OBJECT_AVAILABLE
	------------[ cut here ]------------
	kernel BUG at fs/fscache/object.c:357!

Where event 2 is EV_INVALIDATE.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 8c209ce7
...@@ -284,6 +284,9 @@ static void fscache_object_state_machine(struct fscache_object *object) ...@@ -284,6 +284,9 @@ static void fscache_object_state_machine(struct fscache_object *object)
case FSCACHE_OBJECT_EV_ERROR: case FSCACHE_OBJECT_EV_ERROR:
new_state = FSCACHE_OBJECT_LC_DYING; new_state = FSCACHE_OBJECT_LC_DYING;
goto change_state; goto change_state;
case FSCACHE_OBJECT_EV_INVALIDATE:
new_state = FSCACHE_OBJECT_INVALIDATING;
goto change_state;
case FSCACHE_OBJECT_EV_REQUEUE: case FSCACHE_OBJECT_EV_REQUEUE:
goto done; goto done;
case -1: case -1:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment