Lines Matching refs:ci

72 	struct ksmbd_inode *ci = NULL, *ret_ci = NULL;  in __ksmbd_inode_lookup()  local
74 hlist_for_each_entry(ci, head, m_hash) { in __ksmbd_inode_lookup()
75 if (ci->m_inode == inode) { in __ksmbd_inode_lookup()
76 if (atomic_inc_not_zero(&ci->m_count)) in __ksmbd_inode_lookup()
77 ret_ci = ci; in __ksmbd_inode_lookup()
91 struct ksmbd_inode *ci; in ksmbd_inode_lookup_by_vfsinode() local
94 ci = __ksmbd_inode_lookup(inode); in ksmbd_inode_lookup_by_vfsinode()
96 return ci; in ksmbd_inode_lookup_by_vfsinode()
101 struct ksmbd_inode *ci; in ksmbd_query_inode_status() local
105 ci = __ksmbd_inode_lookup(inode); in ksmbd_query_inode_status()
106 if (ci) { in ksmbd_query_inode_status()
108 if (ci->m_flags & S_DEL_PENDING) in ksmbd_query_inode_status()
110 atomic_dec(&ci->m_count); in ksmbd_query_inode_status()
142 static void ksmbd_inode_hash(struct ksmbd_inode *ci) in ksmbd_inode_hash() argument
145 inode_hash(ci->m_inode->i_sb, ci->m_inode->i_ino); in ksmbd_inode_hash()
147 hlist_add_head(&ci->m_hash, b); in ksmbd_inode_hash()
150 static void ksmbd_inode_unhash(struct ksmbd_inode *ci) in ksmbd_inode_unhash() argument
153 hlist_del_init(&ci->m_hash); in ksmbd_inode_unhash()
157 static int ksmbd_inode_init(struct ksmbd_inode *ci, struct ksmbd_file *fp) in ksmbd_inode_init() argument
159 ci->m_inode = file_inode(fp->filp); in ksmbd_inode_init()
160 atomic_set(&ci->m_count, 1); in ksmbd_inode_init()
161 atomic_set(&ci->op_count, 0); in ksmbd_inode_init()
162 atomic_set(&ci->sop_count, 0); in ksmbd_inode_init()
163 ci->m_flags = 0; in ksmbd_inode_init()
164 ci->m_fattr = 0; in ksmbd_inode_init()
165 INIT_LIST_HEAD(&ci->m_fp_list); in ksmbd_inode_init()
166 INIT_LIST_HEAD(&ci->m_op_list); in ksmbd_inode_init()
167 rwlock_init(&ci->m_lock); in ksmbd_inode_init()
173 struct ksmbd_inode *ci, *tmpci; in ksmbd_inode_get() local
177 ci = ksmbd_inode_lookup(fp); in ksmbd_inode_get()
179 if (ci) in ksmbd_inode_get()
180 return ci; in ksmbd_inode_get()
182 ci = kmalloc(sizeof(struct ksmbd_inode), GFP_KERNEL); in ksmbd_inode_get()
183 if (!ci) in ksmbd_inode_get()
186 rc = ksmbd_inode_init(ci, fp); in ksmbd_inode_get()
189 kfree(ci); in ksmbd_inode_get()
196 ksmbd_inode_hash(ci); in ksmbd_inode_get()
198 kfree(ci); in ksmbd_inode_get()
199 ci = tmpci; in ksmbd_inode_get()
202 return ci; in ksmbd_inode_get()
205 static void ksmbd_inode_free(struct ksmbd_inode *ci) in ksmbd_inode_free() argument
207 ksmbd_inode_unhash(ci); in ksmbd_inode_free()
208 kfree(ci); in ksmbd_inode_free()
211 static void ksmbd_inode_put(struct ksmbd_inode *ci) in ksmbd_inode_put() argument
213 if (atomic_dec_and_test(&ci->m_count)) in ksmbd_inode_put()
214 ksmbd_inode_free(ci); in ksmbd_inode_put()
247 struct ksmbd_inode *ci = fp->f_ci; in __ksmbd_inode_close() local
252 if (ksmbd_stream_fd(fp) && (ci->m_flags & S_DEL_ON_CLS_STREAM)) { in __ksmbd_inode_close()
253 ci->m_flags &= ~S_DEL_ON_CLS_STREAM; in __ksmbd_inode_close()
262 if (atomic_dec_and_test(&ci->m_count)) { in __ksmbd_inode_close()
263 write_lock(&ci->m_lock); in __ksmbd_inode_close()
264 if (ci->m_flags & (S_DEL_ON_CLS | S_DEL_PENDING)) { in __ksmbd_inode_close()
267 ci->m_flags &= ~(S_DEL_ON_CLS | S_DEL_PENDING); in __ksmbd_inode_close()
268 write_unlock(&ci->m_lock); in __ksmbd_inode_close()
270 write_lock(&ci->m_lock); in __ksmbd_inode_close()
272 write_unlock(&ci->m_lock); in __ksmbd_inode_close()
274 ksmbd_inode_free(ci); in __ksmbd_inode_close()
490 struct ksmbd_inode *ci; in ksmbd_lookup_fd_inode() local
492 ci = ksmbd_inode_lookup_by_vfsinode(inode); in ksmbd_lookup_fd_inode()
493 if (!ci) in ksmbd_lookup_fd_inode()
496 read_lock(&ci->m_lock); in ksmbd_lookup_fd_inode()
497 list_for_each_entry(lfp, &ci->m_fp_list, node) { in ksmbd_lookup_fd_inode()
499 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()