Lines Matching refs:ft
302 static void __ksmbd_remove_fd(struct ksmbd_file_table *ft, struct ksmbd_file *fp) in __ksmbd_remove_fd() argument
311 write_lock(&ft->lock); in __ksmbd_remove_fd()
312 idr_remove(ft->idr, fp->volatile_id); in __ksmbd_remove_fd()
313 write_unlock(&ft->lock); in __ksmbd_remove_fd()
316 static void __ksmbd_close_fd(struct ksmbd_file_table *ft, struct ksmbd_file *fp) in __ksmbd_close_fd() argument
323 if (ft) in __ksmbd_close_fd()
324 __ksmbd_remove_fd(ft, fp); in __ksmbd_close_fd()
361 static struct ksmbd_file *__ksmbd_lookup_fd(struct ksmbd_file_table *ft, in __ksmbd_lookup_fd() argument
369 read_lock(&ft->lock); in __ksmbd_lookup_fd()
370 fp = idr_find(ft->idr, id); in __ksmbd_lookup_fd()
373 read_unlock(&ft->lock); in __ksmbd_lookup_fd()
399 struct ksmbd_file_table *ft; in ksmbd_close_fd() local
404 ft = &work->sess->file_table; in ksmbd_close_fd()
405 write_lock(&ft->lock); in ksmbd_close_fd()
406 fp = idr_find(ft->idr, id); in ksmbd_close_fd()
418 write_unlock(&ft->lock); in ksmbd_close_fd()
569 static int __open_id(struct ksmbd_file_table *ft, struct ksmbd_file *fp, in __open_id() argument
581 write_lock(&ft->lock); in __open_id()
582 ret = idr_alloc_cyclic(ft->idr, fp, 0, INT_MAX - 1, GFP_NOWAIT); in __open_id()
592 write_unlock(&ft->lock); in __open_id()
647 void ksmbd_update_fstate(struct ksmbd_file_table *ft, struct ksmbd_file *fp, in ksmbd_update_fstate() argument
653 write_lock(&ft->lock); in ksmbd_update_fstate()
655 write_unlock(&ft->lock); in ksmbd_update_fstate()
659 __close_file_table_ids(struct ksmbd_file_table *ft, in __close_file_table_ids() argument
668 idr_for_each_entry(ft->idr, fp, id) { in __close_file_table_ids()
676 __ksmbd_close_fd(ft, fp); in __close_file_table_ids()
984 int ksmbd_init_file_table(struct ksmbd_file_table *ft) in ksmbd_init_file_table() argument
986 ft->idr = kzalloc(sizeof(struct idr), GFP_KERNEL); in ksmbd_init_file_table()
987 if (!ft->idr) in ksmbd_init_file_table()
990 idr_init(ft->idr); in ksmbd_init_file_table()
991 rwlock_init(&ft->lock); in ksmbd_init_file_table()
995 void ksmbd_destroy_file_table(struct ksmbd_file_table *ft) in ksmbd_destroy_file_table() argument
997 if (!ft->idr) in ksmbd_destroy_file_table()
1000 __close_file_table_ids(ft, NULL, session_fd_check); in ksmbd_destroy_file_table()
1001 idr_destroy(ft->idr); in ksmbd_destroy_file_table()
1002 kfree(ft->idr); in ksmbd_destroy_file_table()
1003 ft->idr = NULL; in ksmbd_destroy_file_table()