Lines Matching refs:flc

72 static struct file_lock *file_lock(struct file_lock_core *flc)  in file_lock()  argument
74 return container_of(flc, struct file_lock, c); in file_lock()
77 static struct file_lease *file_lease(struct file_lock_core *flc) in file_lease() argument
79 return container_of(flc, struct file_lease, c); in file_lease()
211 struct file_lock_core *flc; in locks_dump_ctx_list() local
213 list_for_each_entry(flc, list, flc_list) in locks_dump_ctx_list()
215 list_type, flc->flc_owner, flc->flc_flags, in locks_dump_ctx_list()
216 flc->flc_type, flc->flc_pid); in locks_dump_ctx_list()
239 struct file_lock_core *flc; in locks_check_ctx_file_list() local
242 list_for_each_entry(flc, list, flc_list) in locks_check_ctx_file_list()
243 if (flc->flc_file == filp) in locks_check_ctx_file_list()
248 flc->flc_owner, flc->flc_flags, in locks_check_ctx_file_list()
249 flc->flc_type, flc->flc_pid); in locks_check_ctx_file_list()
263 static void locks_init_lock_heads(struct file_lock_core *flc) in locks_init_lock_heads() argument
265 INIT_HLIST_NODE(&flc->flc_link); in locks_init_lock_heads()
266 INIT_LIST_HEAD(&flc->flc_list); in locks_init_lock_heads()
267 INIT_LIST_HEAD(&flc->flc_blocked_requests); in locks_init_lock_heads()
268 INIT_LIST_HEAD(&flc->flc_blocked_member); in locks_init_lock_heads()
269 init_waitqueue_head(&flc->flc_wait); in locks_init_lock_heads()
298 struct file_lock_core *flc = &fl->c; in locks_release_private() local
300 BUG_ON(waitqueue_active(&flc->flc_wait)); in locks_release_private()
301 BUG_ON(!list_empty(&flc->flc_list)); in locks_release_private()
302 BUG_ON(!list_empty(&flc->flc_blocked_requests)); in locks_release_private()
303 BUG_ON(!list_empty(&flc->flc_blocked_member)); in locks_release_private()
304 BUG_ON(!hlist_unhashed(&flc->flc_link)); in locks_release_private()
314 fl->fl_lmops->lm_put_owner(flc->flc_owner); in locks_release_private()
315 flc->flc_owner = NULL; in locks_release_private()
333 struct file_lock_core *flc; in locks_owner_has_blockers() local
336 list_for_each_entry(flc, &flctx->flc_posix, flc_list) { in locks_owner_has_blockers()
337 if (flc->flc_owner != owner) in locks_owner_has_blockers()
339 if (!list_empty(&flc->flc_blocked_requests)) { in locks_owner_has_blockers()
367 struct file_lock_core *flc; in locks_dispose_list() local
370 flc = list_first_entry(dispose, struct file_lock_core, flc_list); in locks_dispose_list()
371 list_del_init(&flc->flc_list); in locks_dispose_list()
372 locks_free_lock(file_lock(flc)); in locks_dispose_list()
379 struct file_lock_core *flc; in lease_dispose_list() local
382 flc = list_first_entry(dispose, struct file_lock_core, flc_list); in lease_dispose_list()
383 list_del_init(&flc->flc_list); in lease_dispose_list()
384 locks_free_lease(file_lease(flc)); in lease_dispose_list()
486 static int assign_type(struct file_lock_core *flc, int type) in assign_type() argument
492 flc->flc_type = type; in assign_type()
685 static void locks_insert_global_locks(struct file_lock_core *flc) in locks_insert_global_locks() argument
692 flc->flc_link_cpu = smp_processor_id(); in locks_insert_global_locks()
693 hlist_add_head(&flc->flc_link, &fll->hlist); in locks_insert_global_locks()
698 static void locks_delete_global_locks(struct file_lock_core *flc) in locks_delete_global_locks() argument
709 if (hlist_unhashed(&flc->flc_link)) in locks_delete_global_locks()
712 fll = per_cpu_ptr(&file_lock_list, flc->flc_link_cpu); in locks_delete_global_locks()
714 hlist_del_init(&flc->flc_link); in locks_delete_global_locks()
719 posix_owner_key(struct file_lock_core *flc) in posix_owner_key() argument
721 return (unsigned long) flc->flc_owner; in posix_owner_key()
851 struct file_lock_core *flc; in __locks_insert_block() local
855 list_for_each_entry(flc, &blocker->flc_blocked_requests, flc_blocked_member) in __locks_insert_block()
856 if (conflict(flc, waiter)) { in __locks_insert_block()
857 blocker = flc; in __locks_insert_block()
1078 struct file_lock_core *flc; in what_owner_is_waiting_for() local
1080 hash_for_each_possible(blocked_hash, flc, flc_link, posix_owner_key(blocker)) { in what_owner_is_waiting_for()
1081 if (posix_same_owner(flc, blocker)) { in what_owner_is_waiting_for()
1082 while (flc->flc_blocker) in what_owner_is_waiting_for()
1083 flc = flc->flc_blocker; in what_owner_is_waiting_for()
1084 return flc; in what_owner_is_waiting_for()
1567 struct file_lock_core *flc; in any_leases_conflict() local
1571 list_for_each_entry(flc, &ctx->flc_lease, flc_list) { in any_leases_conflict()
1572 if (leases_conflict(flc, &breaker->c)) in any_leases_conflict()
1715 struct file_lock_core *flc; in lease_get_mtime() local
1720 flc = list_first_entry_or_null(&ctx->flc_lease, in lease_get_mtime()
1722 if (flc && flc->flc_type == F_WRLCK) in lease_get_mtime()
2819 static void lock_get_status(struct seq_file *f, struct file_lock_core *flc, in lock_get_status() argument
2825 int type = flc->flc_type; in lock_get_status()
2826 struct file_lock *fl = file_lock(flc); in lock_get_status()
2828 pid = locks_translate_pid(flc, proc_pidns); in lock_get_status()
2835 if (flc->flc_file != NULL) in lock_get_status()
2836 inode = file_inode(flc->flc_file); in lock_get_status()
2843 if (flc->flc_flags & FL_POSIX) { in lock_get_status()
2844 if (flc->flc_flags & FL_ACCESS) in lock_get_status()
2846 else if (flc->flc_flags & FL_OFDLCK) in lock_get_status()
2853 } else if (flc->flc_flags & FL_FLOCK) { in lock_get_status()
2855 } else if (flc->flc_flags & (FL_LEASE|FL_DELEG|FL_LAYOUT)) { in lock_get_status()
2856 struct file_lease *lease = file_lease(flc); in lock_get_status()
2860 if (flc->flc_flags & FL_DELEG) in lock_get_status()
2867 else if (flc->flc_file) in lock_get_status()
2885 if (flc->flc_flags & FL_POSIX) { in lock_get_status()