diff options
author | David Howells <dhowells@redhat.com> | 2021-10-20 15:00:26 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2022-01-07 09:22:19 +0000 |
commit | 29f18e79fe7c5f8011befeda9be6b220a350f947 (patch) | |
tree | 318350a47fd7b83e50dbf69821d897fa96807cb6 /fs/fscache | |
parent | bfa22da3ed652aa15acd4246fa13a0de6dbe4a59 (diff) | |
download | linux-next-29f18e79fe7c5f8011befeda9be6b220a350f947.tar.gz |
fscache: Add a function for a cache backend to note an I/O error
Add a function to the backend API to note an I/O error in a cache.
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
cc: linux-cachefs@redhat.com
Link: https://lore.kernel.org/r/163819598741.215744.891281275151382095.stgit@warthog.procyon.org.uk/ # v1
Link: https://lore.kernel.org/r/163906901316.143852.15225412215771586528.stgit@warthog.procyon.org.uk/ # v2
Link: https://lore.kernel.org/r/163967100721.1823006.16435671567428949398.stgit@warthog.procyon.org.uk/ # v3
Link: https://lore.kernel.org/r/164021508840.640689.11902836226570620424.stgit@warthog.procyon.org.uk/ # v4
Diffstat (limited to 'fs/fscache')
-rw-r--r-- | fs/fscache/cache.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/fs/fscache/cache.c b/fs/fscache/cache.c index bbd102be91c4..25eac61f1c29 100644 --- a/fs/fscache/cache.c +++ b/fs/fscache/cache.c @@ -322,6 +322,26 @@ void fscache_end_cache_access(struct fscache_cache *cache, enum fscache_access_t } /** + * fscache_io_error - Note a cache I/O error + * @cache: The record describing the cache + * + * Note that an I/O error occurred in a cache and that it should no longer be + * used for anything. This also reports the error into the kernel log. + * + * See Documentation/filesystems/caching/backend-api.rst for a complete + * description. + */ +void fscache_io_error(struct fscache_cache *cache) +{ + if (fscache_set_cache_state_maybe(cache, + FSCACHE_CACHE_IS_ACTIVE, + FSCACHE_CACHE_GOT_IOERROR)) + pr_err("Cache '%s' stopped due to I/O error\n", + cache->name); +} +EXPORT_SYMBOL(fscache_io_error); + +/** * fscache_withdraw_cache - Withdraw a cache from the active service * @cache: The cache cookie * |