Lines Matching refs:sbi
27 void autofs4_catatonic_mode(struct autofs_sb_info *sbi) in autofs4_catatonic_mode() argument
31 mutex_lock(&sbi->wq_mutex); in autofs4_catatonic_mode()
32 if (sbi->catatonic) { in autofs4_catatonic_mode()
33 mutex_unlock(&sbi->wq_mutex); in autofs4_catatonic_mode()
39 sbi->catatonic = 1; in autofs4_catatonic_mode()
40 wq = sbi->queues; in autofs4_catatonic_mode()
41 sbi->queues = NULL; /* Erase all wait queues */ in autofs4_catatonic_mode()
51 fput(sbi->pipe); /* Close the pipe */ in autofs4_catatonic_mode()
52 sbi->pipe = NULL; in autofs4_catatonic_mode()
53 sbi->pipefd = -1; in autofs4_catatonic_mode()
54 mutex_unlock(&sbi->wq_mutex); in autofs4_catatonic_mode()
57 static int autofs4_write(struct autofs_sb_info *sbi, in autofs4_write() argument
71 mutex_lock(&sbi->pipe_mutex); in autofs4_write()
77 mutex_unlock(&sbi->pipe_mutex); in autofs4_write()
93 static void autofs4_notify_daemon(struct autofs_sb_info *sbi, in autofs4_notify_daemon() argument
110 pkt.hdr.proto_version = sbi->version; in autofs4_notify_daemon()
149 struct user_namespace *user_ns = sbi->pipe->f_cred->user_ns; in autofs4_notify_daemon()
167 mutex_unlock(&sbi->wq_mutex); in autofs4_notify_daemon()
171 pipe = get_file(sbi->pipe); in autofs4_notify_daemon()
173 mutex_unlock(&sbi->wq_mutex); in autofs4_notify_daemon()
175 if (autofs4_write(sbi, pipe, &pkt, pktsz)) in autofs4_notify_daemon()
176 autofs4_catatonic_mode(sbi); in autofs4_notify_daemon()
180 static int autofs4_getpath(struct autofs_sb_info *sbi, in autofs4_getpath() argument
183 struct dentry *root = sbi->sb->s_root; in autofs4_getpath()
196 spin_lock(&sbi->fs_lock); in autofs4_getpath()
201 spin_unlock(&sbi->fs_lock); in autofs4_getpath()
217 spin_unlock(&sbi->fs_lock); in autofs4_getpath()
226 autofs4_find_wait(struct autofs_sb_info *sbi, struct qstr *qstr) in autofs4_find_wait() argument
230 for (wq = sbi->queues; wq; wq = wq->next) { in autofs4_find_wait()
249 struct autofs_sb_info *sbi, in validate_request() argument
256 if (sbi->catatonic) in validate_request()
260 wq = autofs4_find_wait(sbi, qstr); in validate_request()
286 mutex_unlock(&sbi->wq_mutex); in validate_request()
288 if (mutex_lock_interruptible(&sbi->wq_mutex)) in validate_request()
291 if (sbi->catatonic) in validate_request()
294 wq = autofs4_find_wait(sbi, qstr); in validate_request()
343 int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry, in autofs4_wait() argument
354 if (sbi->catatonic) in autofs4_wait()
362 pid = task_pid_nr_ns(current, ns_of_pid(sbi->oz_pgrp)); in autofs4_wait()
363 tgid = task_tgid_nr_ns(current, ns_of_pid(sbi->oz_pgrp)); in autofs4_wait()
376 if (autofs_type_trigger(sbi->type)) in autofs4_wait()
387 if (IS_ROOT(dentry) && autofs_type_trigger(sbi->type)) in autofs4_wait()
390 qstr.len = autofs4_getpath(sbi, dentry, &name); in autofs4_wait()
399 if (mutex_lock_interruptible(&sbi->wq_mutex)) { in autofs4_wait()
404 ret = validate_request(&wq, sbi, &qstr, dentry, notify); in autofs4_wait()
407 mutex_unlock(&sbi->wq_mutex); in autofs4_wait()
417 mutex_unlock(&sbi->wq_mutex); in autofs4_wait()
424 wq->next = sbi->queues; in autofs4_wait()
425 sbi->queues = wq; in autofs4_wait()
428 wq->dev = autofs4_get_dev(sbi); in autofs4_wait()
429 wq->ino = autofs4_get_ino(sbi); in autofs4_wait()
437 if (sbi->version < 5) { in autofs4_wait()
444 type = autofs_type_trigger(sbi->type) ? in autofs4_wait()
448 type = autofs_type_trigger(sbi->type) ? in autofs4_wait()
458 autofs4_notify_daemon(sbi, wq, type); in autofs4_wait()
464 mutex_unlock(&sbi->wq_mutex); in autofs4_wait()
519 spin_lock(&sbi->fs_lock); in autofs4_wait()
522 spin_unlock(&sbi->fs_lock); in autofs4_wait()
530 mutex_lock(&sbi->wq_mutex); in autofs4_wait()
533 mutex_unlock(&sbi->wq_mutex); in autofs4_wait()
539 int autofs4_wait_release(struct autofs_sb_info *sbi, autofs_wqt_t wait_queue_token, int status) in autofs4_wait_release() argument
543 mutex_lock(&sbi->wq_mutex); in autofs4_wait_release()
544 for (wql = &sbi->queues; (wq = *wql) != NULL; wql = &wq->next) { in autofs4_wait_release()
550 mutex_unlock(&sbi->wq_mutex); in autofs4_wait_release()
561 mutex_unlock(&sbi->wq_mutex); in autofs4_wait_release()