Lines Matching refs:ci

73 	struct ksmbd_inode *ci = NULL, *ret_ci = NULL;  in __ksmbd_inode_lookup()  local
75 hlist_for_each_entry(ci, head, m_hash) { in __ksmbd_inode_lookup()
76 if (ci->m_inode == inode) { in __ksmbd_inode_lookup()
77 if (atomic_inc_not_zero(&ci->m_count)) in __ksmbd_inode_lookup()
78 ret_ci = ci; in __ksmbd_inode_lookup()
92 struct ksmbd_inode *ci; in ksmbd_inode_lookup_by_vfsinode() local
95 ci = __ksmbd_inode_lookup(inode); in ksmbd_inode_lookup_by_vfsinode()
97 return ci; in ksmbd_inode_lookup_by_vfsinode()
102 struct ksmbd_inode *ci; in ksmbd_query_inode_status() local
106 ci = __ksmbd_inode_lookup(inode); in ksmbd_query_inode_status()
107 if (ci) { in ksmbd_query_inode_status()
109 if (ci->m_flags & S_DEL_PENDING) in ksmbd_query_inode_status()
111 atomic_dec(&ci->m_count); in ksmbd_query_inode_status()
143 static void ksmbd_inode_hash(struct ksmbd_inode *ci) in ksmbd_inode_hash() argument
146 inode_hash(ci->m_inode->i_sb, ci->m_inode->i_ino); in ksmbd_inode_hash()
148 hlist_add_head(&ci->m_hash, b); in ksmbd_inode_hash()
151 static void ksmbd_inode_unhash(struct ksmbd_inode *ci) in ksmbd_inode_unhash() argument
154 hlist_del_init(&ci->m_hash); in ksmbd_inode_unhash()
158 static int ksmbd_inode_init(struct ksmbd_inode *ci, struct ksmbd_file *fp) in ksmbd_inode_init() argument
160 ci->m_inode = file_inode(fp->filp); in ksmbd_inode_init()
161 atomic_set(&ci->m_count, 1); in ksmbd_inode_init()
162 atomic_set(&ci->op_count, 0); in ksmbd_inode_init()
163 atomic_set(&ci->sop_count, 0); in ksmbd_inode_init()
164 ci->m_flags = 0; in ksmbd_inode_init()
165 ci->m_fattr = 0; in ksmbd_inode_init()
166 INIT_LIST_HEAD(&ci->m_fp_list); in ksmbd_inode_init()
167 INIT_LIST_HEAD(&ci->m_op_list); in ksmbd_inode_init()
168 rwlock_init(&ci->m_lock); in ksmbd_inode_init()
174 struct ksmbd_inode *ci, *tmpci; in ksmbd_inode_get() local
178 ci = ksmbd_inode_lookup(fp); in ksmbd_inode_get()
180 if (ci) in ksmbd_inode_get()
181 return ci; in ksmbd_inode_get()
183 ci = kmalloc(sizeof(struct ksmbd_inode), GFP_KERNEL); in ksmbd_inode_get()
184 if (!ci) in ksmbd_inode_get()
187 rc = ksmbd_inode_init(ci, fp); in ksmbd_inode_get()
190 kfree(ci); in ksmbd_inode_get()
197 ksmbd_inode_hash(ci); in ksmbd_inode_get()
199 kfree(ci); in ksmbd_inode_get()
200 ci = tmpci; in ksmbd_inode_get()
203 return ci; in ksmbd_inode_get()
206 static void ksmbd_inode_free(struct ksmbd_inode *ci) in ksmbd_inode_free() argument
208 ksmbd_inode_unhash(ci); in ksmbd_inode_free()
209 kfree(ci); in ksmbd_inode_free()
212 static void ksmbd_inode_put(struct ksmbd_inode *ci) in ksmbd_inode_put() argument
214 if (atomic_dec_and_test(&ci->m_count)) in ksmbd_inode_put()
215 ksmbd_inode_free(ci); in ksmbd_inode_put()
248 struct ksmbd_inode *ci = fp->f_ci; in __ksmbd_inode_close() local
253 if (ksmbd_stream_fd(fp) && (ci->m_flags & S_DEL_ON_CLS_STREAM)) { in __ksmbd_inode_close()
254 ci->m_flags &= ~S_DEL_ON_CLS_STREAM; in __ksmbd_inode_close()
263 if (atomic_dec_and_test(&ci->m_count)) { in __ksmbd_inode_close()
264 write_lock(&ci->m_lock); in __ksmbd_inode_close()
265 if (ci->m_flags & (S_DEL_ON_CLS | S_DEL_PENDING)) { in __ksmbd_inode_close()
268 ci->m_flags &= ~(S_DEL_ON_CLS | S_DEL_PENDING); in __ksmbd_inode_close()
269 write_unlock(&ci->m_lock); in __ksmbd_inode_close()
271 write_lock(&ci->m_lock); in __ksmbd_inode_close()
273 write_unlock(&ci->m_lock); in __ksmbd_inode_close()
275 ksmbd_inode_free(ci); in __ksmbd_inode_close()
489 struct ksmbd_inode *ci; in ksmbd_lookup_fd_inode() local
491 ci = ksmbd_inode_lookup_by_vfsinode(inode); in ksmbd_lookup_fd_inode()
492 if (!ci) in ksmbd_lookup_fd_inode()
495 read_lock(&ci->m_lock); in ksmbd_lookup_fd_inode()
496 list_for_each_entry(lfp, &ci->m_fp_list, node) { in ksmbd_lookup_fd_inode()
498 atomic_dec(&ci->m_count); in ksmbd_lookup_fd_inode()
500 read_unlock(&ci->m_lock); in ksmbd_lookup_fd_inode()
504 atomic_dec(&ci->m_count); in ksmbd_lookup_fd_inode()
505 read_unlock(&ci->m_lock); in ksmbd_lookup_fd_inode()