Lines Matching refs:fsd

52 	struct debugfs_fsdata *fsd = F_DENTRY(filp)->d_fsdata;  in debugfs_real_fops()  local
54 if ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT) { in debugfs_real_fops()
63 return fsd->real_fops; in debugfs_real_fops()
84 struct debugfs_fsdata *fsd; in debugfs_file_get() local
97 fsd = d_fsd; in debugfs_file_get()
99 fsd = kmalloc(sizeof(*fsd), GFP_KERNEL); in debugfs_file_get()
100 if (!fsd) in debugfs_file_get()
103 fsd->real_fops = (void *)((unsigned long)d_fsd & in debugfs_file_get()
105 refcount_set(&fsd->active_users, 1); in debugfs_file_get()
106 init_completion(&fsd->active_users_drained); in debugfs_file_get()
107 INIT_LIST_HEAD(&fsd->cancellations); in debugfs_file_get()
108 mutex_init(&fsd->cancellations_mtx); in debugfs_file_get()
110 if (cmpxchg(&dentry->d_fsdata, d_fsd, fsd) != d_fsd) { in debugfs_file_get()
111 mutex_destroy(&fsd->cancellations_mtx); in debugfs_file_get()
112 kfree(fsd); in debugfs_file_get()
113 fsd = READ_ONCE(dentry->d_fsdata); in debugfs_file_get()
128 if (!refcount_inc_not_zero(&fsd->active_users)) in debugfs_file_get()
146 struct debugfs_fsdata *fsd = READ_ONCE(dentry->d_fsdata); in debugfs_file_put() local
148 if (refcount_dec_and_test(&fsd->active_users)) in debugfs_file_put()
149 complete(&fsd->active_users_drained); in debugfs_file_put()
178 struct debugfs_fsdata *fsd; in debugfs_enter_cancellation() local
189 fsd = READ_ONCE(dentry->d_fsdata); in debugfs_enter_cancellation()
190 if (WARN_ON(!fsd || in debugfs_enter_cancellation()
191 ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT))) in debugfs_enter_cancellation()
194 mutex_lock(&fsd->cancellations_mtx); in debugfs_enter_cancellation()
195 list_add(&cancellation->list, &fsd->cancellations); in debugfs_enter_cancellation()
196 mutex_unlock(&fsd->cancellations_mtx); in debugfs_enter_cancellation()
200 complete(&fsd->active_users_drained); in debugfs_enter_cancellation()
215 struct debugfs_fsdata *fsd; in debugfs_leave_cancellation() local
221 fsd = READ_ONCE(dentry->d_fsdata); in debugfs_leave_cancellation()
222 if (WARN_ON(!fsd || in debugfs_leave_cancellation()
223 ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT))) in debugfs_leave_cancellation()
226 mutex_lock(&fsd->cancellations_mtx); in debugfs_leave_cancellation()
229 mutex_unlock(&fsd->cancellations_mtx); in debugfs_leave_cancellation()