FS-Cache: Add interface to check consistency of a cached object
Extend the fscache netfs API so that the netfs can ask as to whether a cache object is up to date with respect to its corresponding netfs object: int fscache_check_consistency(struct fscache_cookie *cookie) This will call back to the netfs to check whether the auxiliary data associated with a cookie is correct. It returns 0 if it is and -ESTALE if it isn't; it may also return -ENOMEM and -ERESTARTSYS. The backends now have to implement a mandatory operation pointer: int (*check_consistency)(struct fscache_object *object) that corresponds to the above API call. FS-Cache takes care of pinning the object and the cookie in memory and managing this call with respect to the object state. Original-author: Hongyi Jia <jiayisuse@gmail.com> Signed-off-by: David Howells <dhowells@redhat.com> cc: Hongyi Jia <jiayisuse@gmail.com> cc: Milosz Tanski <milosz@adfin.com>
This commit is contained in:
@@ -183,6 +183,7 @@ extern struct fscache_cookie *__fscache_acquire_cookie(
|
||||
const struct fscache_cookie_def *,
|
||||
void *);
|
||||
extern void __fscache_relinquish_cookie(struct fscache_cookie *, int);
|
||||
extern int __fscache_check_consistency(struct fscache_cookie *);
|
||||
extern void __fscache_update_cookie(struct fscache_cookie *);
|
||||
extern int __fscache_attr_changed(struct fscache_cookie *);
|
||||
extern void __fscache_invalidate(struct fscache_cookie *);
|
||||
@@ -325,6 +326,25 @@ void fscache_relinquish_cookie(struct fscache_cookie *cookie, int retire)
|
||||
__fscache_relinquish_cookie(cookie, retire);
|
||||
}
|
||||
|
||||
/**
|
||||
* fscache_check_consistency - Request that if the cache is updated
|
||||
* @cookie: The cookie representing the cache object
|
||||
*
|
||||
* Request an consistency check from fscache, which passes the request
|
||||
* to the backing cache.
|
||||
*
|
||||
* Returns 0 if consistent and -ESTALE if inconsistent. May also
|
||||
* return -ENOMEM and -ERESTARTSYS.
|
||||
*/
|
||||
static inline
|
||||
int fscache_check_consistency(struct fscache_cookie *cookie)
|
||||
{
|
||||
if (fscache_cookie_valid(cookie))
|
||||
return __fscache_check_consistency(cookie);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* fscache_update_cookie - Request that a cache object be updated
|
||||
* @cookie: The cookie representing the cache object
|
||||
|
Reference in New Issue
Block a user