1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #include <linux/wait.h> 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun struct fs_pin { 5*4882a593Smuzhiyun wait_queue_head_t wait; 6*4882a593Smuzhiyun int done; 7*4882a593Smuzhiyun struct hlist_node s_list; 8*4882a593Smuzhiyun struct hlist_node m_list; 9*4882a593Smuzhiyun void (*kill)(struct fs_pin *); 10*4882a593Smuzhiyun }; 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun struct vfsmount; 13*4882a593Smuzhiyun init_fs_pin(struct fs_pin * p,void (* kill)(struct fs_pin *))14*4882a593Smuzhiyunstatic inline void init_fs_pin(struct fs_pin *p, void (*kill)(struct fs_pin *)) 15*4882a593Smuzhiyun { 16*4882a593Smuzhiyun init_waitqueue_head(&p->wait); 17*4882a593Smuzhiyun INIT_HLIST_NODE(&p->s_list); 18*4882a593Smuzhiyun INIT_HLIST_NODE(&p->m_list); 19*4882a593Smuzhiyun p->kill = kill; 20*4882a593Smuzhiyun } 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun void pin_remove(struct fs_pin *); 23*4882a593Smuzhiyun void pin_insert(struct fs_pin *, struct vfsmount *); 24*4882a593Smuzhiyun void pin_kill(struct fs_pin *); 25