summaryrefslogtreecommitdiffstats
path: root/fs/fscache/object.c
diff options
context:
space:
mode:
authorDavid Howells2015-02-25 12:53:57 +0100
committerDavid Howells2015-04-02 15:28:53 +0200
commit6515d1dbf424c5c3b94d44e9c7f581026e7fc0d3 (patch)
treef36db7b4a6e91ff358926ddfdb28fba8349620cf /fs/fscache/object.c
parentFS-Cache: When submitting an op, cancel it if the target object is dying (diff)
downloadkernel-qcow2-linux-6515d1dbf424c5c3b94d44e9c7f581026e7fc0d3.tar.gz
kernel-qcow2-linux-6515d1dbf424c5c3b94d44e9c7f581026e7fc0d3.tar.xz
kernel-qcow2-linux-6515d1dbf424c5c3b94d44e9c7f581026e7fc0d3.zip
FS-Cache: Handle a new operation submitted against a killed object
Reject new operations that are being submitted against an object if that object has failed its lookup or creation states or has been killed by the cache backend for some other reason, such as having been culled. Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: Steve Dickson <steved@redhat.com> Acked-by: Jeff Layton <jeff.layton@primarydata.com>
Diffstat (limited to 'fs/fscache/object.c')
-rw-r--r--fs/fscache/object.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/fscache/object.c b/fs/fscache/object.c
index 12bb468bf0ae..9b79fc9a1464 100644
--- a/fs/fscache/object.c
+++ b/fs/fscache/object.c
@@ -610,6 +610,8 @@ static const struct fscache_state *fscache_lookup_failure(struct fscache_object
object->cache->ops->lookup_complete(object);
fscache_stat_d(&fscache_n_cop_lookup_complete);
+ set_bit(FSCACHE_OBJECT_KILLED_BY_CACHE, &object->flags);
+
cookie = object->cookie;
set_bit(FSCACHE_COOKIE_UNAVAILABLE, &cookie->flags);
if (test_and_clear_bit(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags))