]> git.baikalelectronics.ru Git - kernel.git/commit
FS-Cache: The object-available state can't rely on the cookie to be available
authorDavid Howells <dhowells@redhat.com>
Thu, 19 Nov 2009 18:11:22 +0000 (18:11 +0000)
committerDavid Howells <dhowells@redhat.com>
Thu, 19 Nov 2009 18:11:22 +0000 (18:11 +0000)
commita54645acb264614aaaa22e6e141936f868e926b2
treee826cd96f0395775d4fea113dc283ae0282f0384
parent4e646ce4a6564d7936af7f21a3ac4f4a4dfe8f1e
FS-Cache: The object-available state can't rely on the cookie to be available

The object-available state in the object processing state machine (as
processed by fscache_object_available()) can't rely on the cookie to be
available because the FSCACHE_COOKIE_CREATING bit may have been cleared by
fscache_obtained_object() prior to the object being put into the
FSCACHE_OBJECT_AVAILABLE state.

Clearing the FSCACHE_COOKIE_CREATING bit on a cookie permits
__fscache_relinquish_cookie() to proceed and detach the cookie from the
object.

To deal with this, we don't dereference object->cookie in
fscache_object_available() if the object has already been detached.

In addition, a couple of assertions are added into fscache_drop_object() to
make sure the object is unbound from the cookie before it gets there.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/fscache/object.c