Commit 85b08b31 authored by Baokun Li's avatar Baokun Li Committed by Christian Brauner

netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume()

Export fscache_put_volume() and add fscache_try_get_volume()
helper function to allow cachefiles to get/put fscache_volume
via linux/fscache-cache.h.
Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
Link: https://lore.kernel.org/r/20240628062930.2467993-2-libaokun@huaweicloud.comSigned-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 163eae0f
...@@ -27,6 +27,19 @@ struct fscache_volume *fscache_get_volume(struct fscache_volume *volume, ...@@ -27,6 +27,19 @@ struct fscache_volume *fscache_get_volume(struct fscache_volume *volume,
return volume; return volume;
} }
struct fscache_volume *fscache_try_get_volume(struct fscache_volume *volume,
enum fscache_volume_trace where)
{
int ref;
if (!__refcount_inc_not_zero(&volume->ref, &ref))
return NULL;
trace_fscache_volume(volume->debug_id, ref + 1, where);
return volume;
}
EXPORT_SYMBOL(fscache_try_get_volume);
static void fscache_see_volume(struct fscache_volume *volume, static void fscache_see_volume(struct fscache_volume *volume,
enum fscache_volume_trace where) enum fscache_volume_trace where)
{ {
...@@ -420,6 +433,7 @@ void fscache_put_volume(struct fscache_volume *volume, ...@@ -420,6 +433,7 @@ void fscache_put_volume(struct fscache_volume *volume,
fscache_free_volume(volume); fscache_free_volume(volume);
} }
} }
EXPORT_SYMBOL(fscache_put_volume);
/* /*
* Relinquish a volume representation cookie. * Relinquish a volume representation cookie.
......
...@@ -352,8 +352,6 @@ extern const struct seq_operations fscache_volumes_seq_ops; ...@@ -352,8 +352,6 @@ extern const struct seq_operations fscache_volumes_seq_ops;
struct fscache_volume *fscache_get_volume(struct fscache_volume *volume, struct fscache_volume *fscache_get_volume(struct fscache_volume *volume,
enum fscache_volume_trace where); enum fscache_volume_trace where);
void fscache_put_volume(struct fscache_volume *volume,
enum fscache_volume_trace where);
bool fscache_begin_volume_access(struct fscache_volume *volume, bool fscache_begin_volume_access(struct fscache_volume *volume,
struct fscache_cookie *cookie, struct fscache_cookie *cookie,
enum fscache_access_trace why); enum fscache_access_trace why);
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
enum fscache_cache_trace; enum fscache_cache_trace;
enum fscache_cookie_trace; enum fscache_cookie_trace;
enum fscache_access_trace; enum fscache_access_trace;
enum fscache_volume_trace;
enum fscache_cache_state { enum fscache_cache_state {
FSCACHE_CACHE_IS_NOT_PRESENT, /* No cache is present for this name */ FSCACHE_CACHE_IS_NOT_PRESENT, /* No cache is present for this name */
...@@ -97,6 +98,11 @@ extern void fscache_withdraw_cookie(struct fscache_cookie *cookie); ...@@ -97,6 +98,11 @@ extern void fscache_withdraw_cookie(struct fscache_cookie *cookie);
extern void fscache_io_error(struct fscache_cache *cache); extern void fscache_io_error(struct fscache_cache *cache);
extern struct fscache_volume *
fscache_try_get_volume(struct fscache_volume *volume,
enum fscache_volume_trace where);
extern void fscache_put_volume(struct fscache_volume *volume,
enum fscache_volume_trace where);
extern void fscache_end_volume_access(struct fscache_volume *volume, extern void fscache_end_volume_access(struct fscache_volume *volume,
struct fscache_cookie *cookie, struct fscache_cookie *cookie,
enum fscache_access_trace why); enum fscache_access_trace why);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment