Lines Matching refs:ft
431 static void __ksmbd_remove_fd(struct ksmbd_file_table *ft, struct ksmbd_file *fp) in __ksmbd_remove_fd() argument
440 write_lock(&ft->lock); in __ksmbd_remove_fd()
441 idr_remove(ft->idr, fp->volatile_id); in __ksmbd_remove_fd()
442 write_unlock(&ft->lock); in __ksmbd_remove_fd()
445 static void __ksmbd_close_fd(struct ksmbd_file_table *ft, struct ksmbd_file *fp) in __ksmbd_close_fd() argument
452 if (ft) in __ksmbd_close_fd()
453 __ksmbd_remove_fd(ft, fp); in __ksmbd_close_fd()
490 static struct ksmbd_file *__ksmbd_lookup_fd(struct ksmbd_file_table *ft, in __ksmbd_lookup_fd() argument
498 read_lock(&ft->lock); in __ksmbd_lookup_fd()
499 fp = idr_find(ft->idr, id); in __ksmbd_lookup_fd()
502 read_unlock(&ft->lock); in __ksmbd_lookup_fd()
528 struct ksmbd_file_table *ft; in ksmbd_close_fd() local
533 ft = &work->sess->file_table; in ksmbd_close_fd()
534 write_lock(&ft->lock); in ksmbd_close_fd()
535 fp = idr_find(ft->idr, id); in ksmbd_close_fd()
547 write_unlock(&ft->lock); in ksmbd_close_fd()
698 static int __open_id(struct ksmbd_file_table *ft, struct ksmbd_file *fp, in __open_id() argument
710 write_lock(&ft->lock); in __open_id()
711 ret = idr_alloc_cyclic(ft->idr, fp, 0, INT_MAX - 1, GFP_NOWAIT); in __open_id()
721 write_unlock(&ft->lock); in __open_id()
776 void ksmbd_update_fstate(struct ksmbd_file_table *ft, struct ksmbd_file *fp, in ksmbd_update_fstate() argument
782 write_lock(&ft->lock); in ksmbd_update_fstate()
784 write_unlock(&ft->lock); in ksmbd_update_fstate()
788 __close_file_table_ids(struct ksmbd_file_table *ft, in __close_file_table_ids() argument
798 write_lock(&ft->lock); in __close_file_table_ids()
799 fp = idr_get_next(ft->idr, &id); in __close_file_table_ids()
801 write_unlock(&ft->lock); in __close_file_table_ids()
808 write_unlock(&ft->lock); in __close_file_table_ids()
813 idr_remove(ft->idr, fp->volatile_id); in __close_file_table_ids()
815 write_unlock(&ft->lock); in __close_file_table_ids()
821 __ksmbd_close_fd(ft, fp); in __close_file_table_ids()
1127 int ksmbd_init_file_table(struct ksmbd_file_table *ft) in ksmbd_init_file_table() argument
1129 ft->idr = kzalloc_obj(struct idr, KSMBD_DEFAULT_GFP); in ksmbd_init_file_table()
1130 if (!ft->idr) in ksmbd_init_file_table()
1133 idr_init(ft->idr); in ksmbd_init_file_table()
1134 rwlock_init(&ft->lock); in ksmbd_init_file_table()
1138 void ksmbd_destroy_file_table(struct ksmbd_file_table *ft) in ksmbd_destroy_file_table() argument
1140 if (!ft->idr) in ksmbd_destroy_file_table()
1143 __close_file_table_ids(ft, NULL, session_fd_check); in ksmbd_destroy_file_table()
1144 idr_destroy(ft->idr); in ksmbd_destroy_file_table()
1145 kfree(ft->idr); in ksmbd_destroy_file_table()
1146 ft->idr = NULL; in ksmbd_destroy_file_table()