Remove fscache_check_consistency() as that allows the netfs to pry into the
inner working of the cache - and what's in the cookie should be taken as
consistent with the disk (possibly lazily).

Signed-off-by: David Howells <dhowe...@redhat.com>
---

 fs/cachefiles/interface.c     |   26 -------------
 fs/fscache/cookie.c           |   79 -----------------------------------------
 include/linux/fscache-cache.h |    4 --
 include/linux/fscache.h       |   23 ------------
 4 files changed, 132 deletions(-)

diff --git a/fs/cachefiles/interface.c b/fs/cachefiles/interface.c
index 48f7de947a16..460dd190dad5 100644
--- a/fs/cachefiles/interface.c
+++ b/fs/cachefiles/interface.c
@@ -320,31 +320,6 @@ static void cachefiles_sync_cache(struct fscache_cache 
*_cache)
                                    ret);
 }
 
-/*
- * check if the backing cache is updated to FS-Cache
- * - called by FS-Cache when evaluates if need to invalidate the cache
- */
-static int cachefiles_check_consistency(struct fscache_operation *op)
-{
-       struct cachefiles_object *object;
-       struct cachefiles_cache *cache;
-       const struct cred *saved_cred;
-       int ret;
-
-       _enter("{OBJ%x}", op->object->debug_id);
-
-       object = container_of(op->object, struct cachefiles_object, fscache);
-       cache = container_of(object->fscache.cache,
-                            struct cachefiles_cache, cache);
-
-       cachefiles_begin_secure(cache, &saved_cred);
-       ret = cachefiles_check_auxdata(object);
-       cachefiles_end_secure(cache, saved_cred);
-
-       _leave(" = %d", ret);
-       return ret;
-}
-
 /*
  * notification the attributes on an object have changed
  * - called with reads/writes excluded by FS-Cache
@@ -468,6 +443,5 @@ const struct fscache_cache_ops cachefiles_cache_ops = {
        .put_object             = cachefiles_put_object,
        .sync_cache             = cachefiles_sync_cache,
        .attr_changed           = cachefiles_attr_changed,
-       .check_consistency      = cachefiles_check_consistency,
        .begin_operation        = cachefiles_begin_operation,
 };
diff --git a/fs/fscache/cookie.c b/fs/fscache/cookie.c
index 02998ec9f7c9..78938ea6ad1a 100644
--- a/fs/fscache/cookie.c
+++ b/fs/fscache/cookie.c
@@ -880,85 +880,6 @@ struct fscache_cookie *fscache_cookie_get(struct 
fscache_cookie *cookie,
        return cookie;
 }
 
-/*
- * check the consistency between the netfs inode and the backing cache
- *
- * NOTE: it only serves no-index type
- */
-int __fscache_check_consistency(struct fscache_cookie *cookie,
-                               const void *aux_data)
-{
-       struct fscache_operation *op;
-       struct fscache_object *object;
-       bool wake_cookie = false;
-       int ret;
-
-       _enter("%p,", cookie);
-
-       ASSERTCMP(cookie->type, ==, FSCACHE_COOKIE_TYPE_DATAFILE);
-
-       if (fscache_wait_for_deferred_lookup(cookie) < 0)
-               return -ERESTARTSYS;
-
-       if (hlist_empty(&cookie->backing_objects))
-               return 0;
-
-       op = kzalloc(sizeof(*op), GFP_NOIO | __GFP_NOMEMALLOC | __GFP_NORETRY);
-       if (!op)
-               return -ENOMEM;
-
-       fscache_operation_init(cookie, op, NULL, NULL, NULL);
-       op->flags = FSCACHE_OP_MYTHREAD |
-               (1 << FSCACHE_OP_WAITING) |
-               (1 << FSCACHE_OP_UNUSE_COOKIE);
-       trace_fscache_page_op(cookie, NULL, op, 
fscache_page_op_check_consistency);
-
-       spin_lock(&cookie->lock);
-
-       fscache_update_aux(cookie, aux_data);
-
-       if (!fscache_cookie_enabled(cookie) ||
-           hlist_empty(&cookie->backing_objects))
-               goto inconsistent;
-       object = hlist_entry(cookie->backing_objects.first,
-                            struct fscache_object, cookie_link);
-       if (test_bit(FSCACHE_IOERROR, &object->cache->flags))
-               goto inconsistent;
-
-       op->debug_id = atomic_inc_return(&fscache_op_debug_id);
-
-       __fscache_use_cookie(cookie);
-       if (fscache_submit_op(object, op) < 0)
-               goto submit_failed;
-
-       /* the work queue now carries its own ref on the object */
-       spin_unlock(&cookie->lock);
-
-       ret = fscache_wait_for_operation_activation(object, op, NULL, NULL);
-       if (ret == 0) {
-               /* ask the cache to honour the operation */
-               ret = object->cache->ops->check_consistency(op);
-               fscache_op_complete(op, false);
-       } else if (ret == -ENOBUFS) {
-               ret = 0;
-       }
-
-       fscache_put_operation(op);
-       _leave(" = %d", ret);
-       return ret;
-
-submit_failed:
-       wake_cookie = __fscache_unuse_cookie(cookie);
-inconsistent:
-       spin_unlock(&cookie->lock);
-       if (wake_cookie)
-               __fscache_wake_unused_cookie(cookie);
-       kfree(op);
-       _leave(" = -ESTALE");
-       return -ESTALE;
-}
-EXPORT_SYMBOL(__fscache_check_consistency);
-
 /*
  * Generate a list of extant cookies in /proc/fs/fscache/cookies
  */
diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
index 15cd2f04c9e6..15683b7876ff 100644
--- a/include/linux/fscache-cache.h
+++ b/include/linux/fscache-cache.h
@@ -167,10 +167,6 @@ struct fscache_cache_ops {
        /* unpin an object in the cache */
        void (*unpin_object)(struct fscache_object *object);
 
-       /* check the consistency between the backing cache and the FS-Cache
-        * cookie */
-       int (*check_consistency)(struct fscache_operation *op);
-
        /* store the updated auxiliary data on an object */
        void (*update_object)(struct fscache_object *object);
 
diff --git a/include/linux/fscache.h b/include/linux/fscache.h
index 98685bd7204b..75ca4fda93d5 100644
--- a/include/linux/fscache.h
+++ b/include/linux/fscache.h
@@ -131,7 +131,6 @@ extern struct fscache_cookie *__fscache_acquire_cookie(
        const void *, size_t,
        loff_t, bool);
 extern void __fscache_relinquish_cookie(struct fscache_cookie *, const void *, 
bool);
-extern int __fscache_check_consistency(struct fscache_cookie *, const void *);
 extern void __fscache_update_cookie(struct fscache_cookie *, const void *);
 extern int __fscache_attr_changed(struct fscache_cookie *);
 extern void __fscache_invalidate(struct fscache_cookie *);
@@ -290,28 +289,6 @@ void fscache_relinquish_cookie(struct fscache_cookie 
*cookie,
                __fscache_relinquish_cookie(cookie, aux_data, retire);
 }
 
-/**
- * fscache_check_consistency - Request validation of a cache's auxiliary data
- * @cookie: The cookie representing the cache object
- * @aux_data: The updated auxiliary data for the cookie (may be NULL)
- *
- * Request an consistency check from fscache, which passes the request to the
- * backing cache.  The auxiliary data on the cookie will be updated first if
- * @aux_data is set.
- *
- * Returns 0 if consistent and -ESTALE if inconsistent.  May also
- * return -ENOMEM and -ERESTARTSYS.
- */
-static inline
-int fscache_check_consistency(struct fscache_cookie *cookie,
-                             const void *aux_data)
-{
-       if (fscache_cookie_valid(cookie) && fscache_cookie_enabled(cookie))
-               return __fscache_check_consistency(cookie, aux_data);
-       else
-               return 0;
-}
-
 /**
  * fscache_update_cookie - Request that a cache object be updated
  * @cookie: The cookie representing the cache object


--
Linux-cachefs mailing list
Linux-cachefs@redhat.com
https://listman.redhat.com/mailman/listinfo/linux-cachefs

Reply via email to