Lines Matching full:ci

174 	struct ksmbd_inode *ci = NULL, *ret_ci = NULL;  in __ksmbd_inode_lookup()  local
176 hlist_for_each_entry(ci, head, m_hash) { in __ksmbd_inode_lookup()
177 if (ci->m_de == de) { in __ksmbd_inode_lookup()
178 if (atomic_inc_not_zero(&ci->m_count)) in __ksmbd_inode_lookup()
179 ret_ci = ci; in __ksmbd_inode_lookup()
193 struct ksmbd_inode *ci; in ksmbd_inode_lookup_lock() local
196 ci = __ksmbd_inode_lookup(d); in ksmbd_inode_lookup_lock()
199 return ci; in ksmbd_inode_lookup_lock()
204 struct ksmbd_inode *ci; in ksmbd_query_inode_status() local
208 ci = __ksmbd_inode_lookup(dentry); in ksmbd_query_inode_status()
210 if (!ci) in ksmbd_query_inode_status()
213 down_read(&ci->m_lock); in ksmbd_query_inode_status()
214 if (ci->m_flags & (S_DEL_PENDING | S_DEL_ON_CLS)) in ksmbd_query_inode_status()
218 up_read(&ci->m_lock); in ksmbd_query_inode_status()
220 atomic_dec(&ci->m_count); in ksmbd_query_inode_status()
226 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_inode_pending_delete() local
229 down_read(&ci->m_lock); in ksmbd_inode_pending_delete()
230 ret = (ci->m_flags & (S_DEL_PENDING | S_DEL_ON_CLS)); in ksmbd_inode_pending_delete()
231 up_read(&ci->m_lock); in ksmbd_inode_pending_delete()
238 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_set_inode_pending_delete() local
240 down_write(&ci->m_lock); in ksmbd_set_inode_pending_delete()
241 ci->m_flags |= S_DEL_PENDING; in ksmbd_set_inode_pending_delete()
242 up_write(&ci->m_lock); in ksmbd_set_inode_pending_delete()
247 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_clear_inode_pending_delete() local
249 down_write(&ci->m_lock); in ksmbd_clear_inode_pending_delete()
250 ci->m_flags &= ~S_DEL_PENDING; in ksmbd_clear_inode_pending_delete()
251 up_write(&ci->m_lock); in ksmbd_clear_inode_pending_delete()
257 struct ksmbd_inode *ci = fp->f_ci; in ksmbd_fd_set_delete_on_close() local
259 down_write(&ci->m_lock); in ksmbd_fd_set_delete_on_close()
261 ci->m_flags |= S_DEL_ON_CLS_STREAM; in ksmbd_fd_set_delete_on_close()
263 ci->m_flags |= S_DEL_ON_CLS; in ksmbd_fd_set_delete_on_close()
264 up_write(&ci->m_lock); in ksmbd_fd_set_delete_on_close()
267 static void ksmbd_inode_hash(struct ksmbd_inode *ci) in ksmbd_inode_hash() argument
270 inode_hash(d_inode(ci->m_de)->i_sb, (unsigned long)ci->m_de); in ksmbd_inode_hash()
272 hlist_add_head(&ci->m_hash, b); in ksmbd_inode_hash()
275 static void ksmbd_inode_unhash(struct ksmbd_inode *ci) in ksmbd_inode_unhash() argument
278 hlist_del_init(&ci->m_hash); in ksmbd_inode_unhash()
282 static int ksmbd_inode_init(struct ksmbd_inode *ci, struct ksmbd_file *fp) in ksmbd_inode_init() argument
284 atomic_set(&ci->m_count, 1); in ksmbd_inode_init()
285 atomic_set(&ci->op_count, 0); in ksmbd_inode_init()
286 atomic_set(&ci->sop_count, 0); in ksmbd_inode_init()
287 ci->m_flags = 0; in ksmbd_inode_init()
288 ci->m_fattr = 0; in ksmbd_inode_init()
289 INIT_LIST_HEAD(&ci->m_fp_list); in ksmbd_inode_init()
290 INIT_LIST_HEAD(&ci->m_op_list); in ksmbd_inode_init()
291 init_rwsem(&ci->m_lock); in ksmbd_inode_init()
292 ci->m_de = fp->filp->f_path.dentry; in ksmbd_inode_init()
298 struct ksmbd_inode *ci, *tmpci; in ksmbd_inode_get() local
302 ci = ksmbd_inode_lookup(fp); in ksmbd_inode_get()
304 if (ci) in ksmbd_inode_get()
305 return ci; in ksmbd_inode_get()
307 ci = kmalloc_obj(struct ksmbd_inode, KSMBD_DEFAULT_GFP); in ksmbd_inode_get()
308 if (!ci) in ksmbd_inode_get()
311 rc = ksmbd_inode_init(ci, fp); in ksmbd_inode_get()
314 kfree(ci); in ksmbd_inode_get()
321 ksmbd_inode_hash(ci); in ksmbd_inode_get()
323 kfree(ci); in ksmbd_inode_get()
324 ci = tmpci; in ksmbd_inode_get()
327 return ci; in ksmbd_inode_get()
330 static void ksmbd_inode_free(struct ksmbd_inode *ci) in ksmbd_inode_free() argument
332 ksmbd_inode_unhash(ci); in ksmbd_inode_free()
333 kfree(ci); in ksmbd_inode_free()
336 void ksmbd_inode_put(struct ksmbd_inode *ci) in ksmbd_inode_put() argument
338 if (atomic_dec_and_test(&ci->m_count)) in ksmbd_inode_put()
339 ksmbd_inode_free(ci); in ksmbd_inode_put()
371 struct ksmbd_inode *ci = fp->f_ci; in __ksmbd_inode_close() local
380 down_write(&ci->m_lock); in __ksmbd_inode_close()
381 if (ci->m_flags & S_DEL_ON_CLS_STREAM) { in __ksmbd_inode_close()
382 ci->m_flags &= ~S_DEL_ON_CLS_STREAM; in __ksmbd_inode_close()
385 up_write(&ci->m_lock); in __ksmbd_inode_close()
398 if (atomic_dec_and_test(&ci->m_count)) { in __ksmbd_inode_close()
401 down_write(&ci->m_lock); in __ksmbd_inode_close()
402 if (ci->m_flags & (S_DEL_ON_CLS | S_DEL_PENDING)) { in __ksmbd_inode_close()
403 ci->m_flags &= ~(S_DEL_ON_CLS | S_DEL_PENDING); in __ksmbd_inode_close()
406 up_write(&ci->m_lock); in __ksmbd_inode_close()
411 ksmbd_inode_free(ci); in __ksmbd_inode_close()
669 struct ksmbd_inode *ci; in ksmbd_lookup_fd_inode() local
673 ci = __ksmbd_inode_lookup(dentry); in ksmbd_lookup_fd_inode()
675 if (!ci) in ksmbd_lookup_fd_inode()
678 down_read(&ci->m_lock); in ksmbd_lookup_fd_inode()
679 list_for_each_entry(lfp, &ci->m_fp_list, node) { in ksmbd_lookup_fd_inode()
681 atomic_dec(&ci->m_count); in ksmbd_lookup_fd_inode()
683 up_read(&ci->m_lock); in ksmbd_lookup_fd_inode()
687 atomic_dec(&ci->m_count); in ksmbd_lookup_fd_inode()
688 up_read(&ci->m_lock); in ksmbd_lookup_fd_inode()
1057 struct ksmbd_inode *ci; in session_fd_check() local
1069 ci = fp->f_ci; in session_fd_check()
1070 down_write(&ci->m_lock); in session_fd_check()
1071 list_for_each_entry_rcu(op, &ci->m_op_list, op_entry) { in session_fd_check()
1078 up_write(&ci->m_lock); in session_fd_check()
1163 struct ksmbd_inode *ci; in ksmbd_reopen_durable_fd() local
1196 ci = fp->f_ci; in ksmbd_reopen_durable_fd()
1197 down_write(&ci->m_lock); in ksmbd_reopen_durable_fd()
1198 list_for_each_entry_rcu(op, &ci->m_op_list, op_entry) { in ksmbd_reopen_durable_fd()
1204 up_write(&ci->m_lock); in ksmbd_reopen_durable_fd()