Lines Matching refs:ci

173 	struct ksmbd_inode *ci = NULL, *ret_ci = NULL;  in __ksmbd_inode_lookup()  local
175 hlist_for_each_entry(ci, head, m_hash) { in __ksmbd_inode_lookup()
176 if (ci->m_de == de) { in __ksmbd_inode_lookup()
177 if (atomic_inc_not_zero(&ci->m_count)) in __ksmbd_inode_lookup()
178 ret_ci = ci; in __ksmbd_inode_lookup()
192 struct ksmbd_inode *ci; in ksmbd_inode_lookup_lock() local
195 ci = __ksmbd_inode_lookup(d); in ksmbd_inode_lookup_lock()
198 return ci; in ksmbd_inode_lookup_lock()
203 struct ksmbd_inode *ci; in ksmbd_query_inode_status() local
207 ci = __ksmbd_inode_lookup(dentry); in ksmbd_query_inode_status()
209 if (!ci) in ksmbd_query_inode_status()
212 down_read(&ci->m_lock); in ksmbd_query_inode_status()
213 if (ci->m_flags & (S_DEL_PENDING | S_DEL_ON_CLS)) in ksmbd_query_inode_status()
217 up_read(&ci->m_lock); in ksmbd_query_inode_status()
219 atomic_dec(&ci->m_count); in ksmbd_query_inode_status()
225 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_inode_pending_delete() local
228 down_read(&ci->m_lock); in ksmbd_inode_pending_delete()
229 ret = (ci->m_flags & (S_DEL_PENDING | S_DEL_ON_CLS)); in ksmbd_inode_pending_delete()
230 up_read(&ci->m_lock); in ksmbd_inode_pending_delete()
237 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_set_inode_pending_delete() local
239 down_write(&ci->m_lock); in ksmbd_set_inode_pending_delete()
240 ci->m_flags |= S_DEL_PENDING; in ksmbd_set_inode_pending_delete()
241 up_write(&ci->m_lock); in ksmbd_set_inode_pending_delete()
246 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_clear_inode_pending_delete() local
248 down_write(&ci->m_lock); in ksmbd_clear_inode_pending_delete()
249 ci->m_flags &= ~S_DEL_PENDING; in ksmbd_clear_inode_pending_delete()
250 up_write(&ci->m_lock); in ksmbd_clear_inode_pending_delete()
256 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_fd_set_delete_on_close() local
258 down_write(&ci->m_lock); in ksmbd_fd_set_delete_on_close()
260 ci->m_flags |= S_DEL_ON_CLS_STREAM; in ksmbd_fd_set_delete_on_close()
262 ci->m_flags |= S_DEL_ON_CLS; in ksmbd_fd_set_delete_on_close()
263 up_write(&ci->m_lock); in ksmbd_fd_set_delete_on_close()
266 static void ksmbd_inode_hash(struct ksmbd_inode *ci) in ksmbd_inode_hash() argument
269 inode_hash(d_inode(ci->m_de)->i_sb, (unsigned long)ci->m_de); in ksmbd_inode_hash()
271 hlist_add_head(&ci->m_hash, b); in ksmbd_inode_hash()
274 static void ksmbd_inode_unhash(struct ksmbd_inode *ci) in ksmbd_inode_unhash() argument
277 hlist_del_init(&ci->m_hash); in ksmbd_inode_unhash()
281 static int ksmbd_inode_init(struct ksmbd_inode *ci, struct ksmbd_file *fp) in ksmbd_inode_init() argument
283 atomic_set(&ci->m_count, 1); in ksmbd_inode_init()
284 atomic_set(&ci->op_count, 0); in ksmbd_inode_init()
285 atomic_set(&ci->sop_count, 0); in ksmbd_inode_init()
286 ci->m_flags = 0; in ksmbd_inode_init()
287 ci->m_fattr = 0; in ksmbd_inode_init()
288 INIT_LIST_HEAD(&ci->m_fp_list); in ksmbd_inode_init()
289 INIT_LIST_HEAD(&ci->m_op_list); in ksmbd_inode_init()
290 init_rwsem(&ci->m_lock); in ksmbd_inode_init()
291 ci->m_de = fp->filp->f_path.dentry; in ksmbd_inode_init()
297 struct ksmbd_inode *ci, *tmpci; in ksmbd_inode_get() local
301 ci = ksmbd_inode_lookup(fp); in ksmbd_inode_get()
303 if (ci) in ksmbd_inode_get()
304 return ci; in ksmbd_inode_get()
306 ci = kmalloc_obj(struct ksmbd_inode, KSMBD_DEFAULT_GFP); in ksmbd_inode_get()
307 if (!ci) in ksmbd_inode_get()
310 rc = ksmbd_inode_init(ci, fp); in ksmbd_inode_get()
313 kfree(ci); in ksmbd_inode_get()
320 ksmbd_inode_hash(ci); in ksmbd_inode_get()
322 kfree(ci); in ksmbd_inode_get()
323 ci = tmpci; in ksmbd_inode_get()
326 return ci; in ksmbd_inode_get()
329 static void ksmbd_inode_free(struct ksmbd_inode *ci) in ksmbd_inode_free() argument
331 ksmbd_inode_unhash(ci); in ksmbd_inode_free()
332 kfree(ci); in ksmbd_inode_free()
335 void ksmbd_inode_put(struct ksmbd_inode *ci) in ksmbd_inode_put() argument
337 if (atomic_dec_and_test(&ci->m_count)) in ksmbd_inode_put()
338 ksmbd_inode_free(ci); in ksmbd_inode_put()
370 struct ksmbd_inode *ci = fp->f_ci; in __ksmbd_inode_close() local
379 down_write(&ci->m_lock); in __ksmbd_inode_close()
380 if (ci->m_flags & S_DEL_ON_CLS_STREAM) { in __ksmbd_inode_close()
381 ci->m_flags &= ~S_DEL_ON_CLS_STREAM; in __ksmbd_inode_close()
384 up_write(&ci->m_lock); in __ksmbd_inode_close()
397 if (atomic_dec_and_test(&ci->m_count)) { in __ksmbd_inode_close()
400 down_write(&ci->m_lock); in __ksmbd_inode_close()
401 if (ci->m_flags & (S_DEL_ON_CLS | S_DEL_PENDING)) { in __ksmbd_inode_close()
402 ci->m_flags &= ~(S_DEL_ON_CLS | S_DEL_PENDING); in __ksmbd_inode_close()
405 up_write(&ci->m_lock); in __ksmbd_inode_close()
410 ksmbd_inode_free(ci); in __ksmbd_inode_close()
664 struct ksmbd_inode *ci; in ksmbd_lookup_fd_inode() local
668 ci = __ksmbd_inode_lookup(dentry); in ksmbd_lookup_fd_inode()
670 if (!ci) in ksmbd_lookup_fd_inode()
673 down_read(&ci->m_lock); in ksmbd_lookup_fd_inode()
674 list_for_each_entry(lfp, &ci->m_fp_list, node) { in ksmbd_lookup_fd_inode()
676 atomic_dec(&ci->m_count); in ksmbd_lookup_fd_inode()
678 up_read(&ci->m_lock); in ksmbd_lookup_fd_inode()
682 atomic_dec(&ci->m_count); in ksmbd_lookup_fd_inode()
683 up_read(&ci->m_lock); in ksmbd_lookup_fd_inode()
995 struct ksmbd_inode *ci; in session_fd_check() local
1003 ci = fp->f_ci; in session_fd_check()
1004 down_write(&ci->m_lock); in session_fd_check()
1005 list_for_each_entry_rcu(op, &ci->m_op_list, op_entry) { in session_fd_check()
1012 up_write(&ci->m_lock); in session_fd_check()
1091 struct ksmbd_inode *ci; in ksmbd_reopen_durable_fd() local
1107 ci = fp->f_ci; in ksmbd_reopen_durable_fd()
1108 down_write(&ci->m_lock); in ksmbd_reopen_durable_fd()
1109 list_for_each_entry_rcu(op, &ci->m_op_list, op_entry) { in ksmbd_reopen_durable_fd()
1115 up_write(&ci->m_lock); in ksmbd_reopen_durable_fd()