Lines Matching +full:fan +full:- +full:hat

1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved.
20 struct cachefiles_cache *cache = vcookie->cache->cache_priv; in cachefiles_acquire_volume()
22 struct dentry *vdentry, *fan; in cachefiles_acquire_volume() local
33 volume->vcookie = vcookie; in cachefiles_acquire_volume()
34 volume->cache = cache; in cachefiles_acquire_volume()
35 INIT_LIST_HEAD(&volume->cache_link); in cachefiles_acquire_volume()
39 len = vcookie->key[0]; in cachefiles_acquire_volume()
44 memcpy(name + 1, vcookie->key + 1, len); in cachefiles_acquire_volume()
48 vdentry = cachefiles_get_directory(cache, cache->store, name, &is_new); in cachefiles_acquire_volume()
51 volume->dentry = vdentry; in cachefiles_acquire_volume()
59 if (ret != -ESTALE) in cachefiles_acquire_volume()
61 inode_lock_nested(d_inode(cache->store), I_MUTEX_PARENT); in cachefiles_acquire_volume()
62 cachefiles_bury_object(cache, NULL, cache->store, vdentry, in cachefiles_acquire_volume()
64 cachefiles_put_directory(volume->dentry); in cachefiles_acquire_volume()
72 fan = cachefiles_get_directory(cache, vdentry, name, NULL); in cachefiles_acquire_volume()
73 if (IS_ERR(fan)) in cachefiles_acquire_volume()
75 volume->fanout[i] = fan; in cachefiles_acquire_volume()
80 vcookie->cache_priv = volume; in cachefiles_acquire_volume()
81 n_accesses = atomic_inc_return(&vcookie->n_accesses); /* Stop wakeups on dec-to-0 */ in cachefiles_acquire_volume()
82 trace_fscache_access_volume(vcookie->debug_id, 0, in cachefiles_acquire_volume()
83 refcount_read(&vcookie->ref), in cachefiles_acquire_volume()
86 spin_lock(&cache->object_list_lock); in cachefiles_acquire_volume()
87 list_add(&volume->cache_link, &volume->cache->volumes); in cachefiles_acquire_volume()
88 spin_unlock(&cache->object_list_lock); in cachefiles_acquire_volume()
95 cachefiles_put_directory(volume->fanout[i]); in cachefiles_acquire_volume()
97 cachefiles_put_directory(volume->dentry); in cachefiles_acquire_volume()
114 volume->vcookie->cache_priv = NULL; in __cachefiles_free_volume()
117 cachefiles_put_directory(volume->fanout[i]); in __cachefiles_free_volume()
118 cachefiles_put_directory(volume->dentry); in __cachefiles_free_volume()
124 struct cachefiles_volume *volume = vcookie->cache_priv; in cachefiles_free_volume()
127 spin_lock(&volume->cache->object_list_lock); in cachefiles_free_volume()
128 list_del_init(&volume->cache_link); in cachefiles_free_volume()
129 spin_unlock(&volume->cache->object_list_lock); in cachefiles_free_volume()