Lines Matching refs:v9ses
108 struct v9fs_session_info *v9ses = root->d_sb->s_fs_info; in v9fs_show_options() local
110 if (v9ses->debug) in v9fs_show_options()
111 seq_printf(m, ",debug=%x", v9ses->debug); in v9fs_show_options()
112 if (!uid_eq(v9ses->dfltuid, V9FS_DEFUID)) in v9fs_show_options()
114 from_kuid_munged(&init_user_ns, v9ses->dfltuid)); in v9fs_show_options()
115 if (!gid_eq(v9ses->dfltgid, V9FS_DEFGID)) in v9fs_show_options()
117 from_kgid_munged(&init_user_ns, v9ses->dfltgid)); in v9fs_show_options()
118 if (v9ses->afid != ~0) in v9fs_show_options()
119 seq_printf(m, ",afid=%u", v9ses->afid); in v9fs_show_options()
120 if (strcmp(v9ses->uname, V9FS_DEFUSER) != 0) in v9fs_show_options()
121 seq_printf(m, ",uname=%s", v9ses->uname); in v9fs_show_options()
122 if (strcmp(v9ses->aname, V9FS_DEFANAME) != 0) in v9fs_show_options()
123 seq_printf(m, ",aname=%s", v9ses->aname); in v9fs_show_options()
124 if (v9ses->nodev) in v9fs_show_options()
126 if (v9ses->cache) in v9fs_show_options()
127 seq_printf(m, ",%s", v9fs_cache_modes[v9ses->cache]); in v9fs_show_options()
129 if (v9ses->cachetag && v9ses->cache == CACHE_FSCACHE) in v9fs_show_options()
130 seq_printf(m, ",cachetag=%s", v9ses->cachetag); in v9fs_show_options()
133 switch (v9ses->flags & V9FS_ACCESS_MASK) { in v9fs_show_options()
145 from_kuid_munged(&init_user_ns, v9ses->uid)); in v9fs_show_options()
149 if (v9ses->flags & V9FS_POSIX_ACL) in v9fs_show_options()
152 return p9_show_client_options(m, v9ses->clnt); in v9fs_show_options()
162 static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts) in v9fs_parse_options() argument
172 v9ses->afid = ~0; in v9fs_parse_options()
173 v9ses->debug = 0; in v9fs_parse_options()
174 v9ses->cache = CACHE_NONE; in v9fs_parse_options()
176 v9ses->cachetag = NULL; in v9fs_parse_options()
178 v9ses->session_lock_timeout = P9_LOCK_TIMEOUT; in v9fs_parse_options()
203 v9ses->debug = option; in v9fs_parse_options()
218 v9ses->dfltuid = make_kuid(current_user_ns(), option); in v9fs_parse_options()
219 if (!uid_valid(v9ses->dfltuid)) { in v9fs_parse_options()
233 v9ses->dfltgid = make_kgid(current_user_ns(), option); in v9fs_parse_options()
234 if (!gid_valid(v9ses->dfltgid)) { in v9fs_parse_options()
247 v9ses->afid = option; in v9fs_parse_options()
251 kfree(v9ses->uname); in v9fs_parse_options()
252 v9ses->uname = match_strdup(&args[0]); in v9fs_parse_options()
253 if (!v9ses->uname) { in v9fs_parse_options()
259 kfree(v9ses->aname); in v9fs_parse_options()
260 v9ses->aname = match_strdup(&args[0]); in v9fs_parse_options()
261 if (!v9ses->aname) { in v9fs_parse_options()
267 v9ses->nodev = 1; in v9fs_parse_options()
270 v9ses->cache = CACHE_LOOSE; in v9fs_parse_options()
273 v9ses->cache = CACHE_FSCACHE; in v9fs_parse_options()
276 v9ses->cache = CACHE_MMAP; in v9fs_parse_options()
280 kfree(v9ses->cachetag); in v9fs_parse_options()
281 v9ses->cachetag = match_strdup(&args[0]); in v9fs_parse_options()
282 if (!v9ses->cachetag) { in v9fs_parse_options()
300 v9ses->cache = r; in v9fs_parse_options()
314 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_parse_options()
316 v9ses->flags |= V9FS_ACCESS_USER; in v9fs_parse_options()
318 v9ses->flags |= V9FS_ACCESS_ANY; in v9fs_parse_options()
320 v9ses->flags |= V9FS_ACCESS_CLIENT; in v9fs_parse_options()
323 v9ses->flags |= V9FS_ACCESS_SINGLE; in v9fs_parse_options()
332 v9ses->uid = make_kuid(current_user_ns(), uid); in v9fs_parse_options()
333 if (!uid_valid(v9ses->uid)) { in v9fs_parse_options()
344 v9ses->flags |= V9FS_POSIX_ACL; in v9fs_parse_options()
365 v9ses->session_lock_timeout = (long)option * HZ; in v9fs_parse_options()
387 struct p9_fid *v9fs_session_init(struct v9fs_session_info *v9ses, in v9fs_session_init() argument
393 v9ses->uname = kstrdup(V9FS_DEFUSER, GFP_KERNEL); in v9fs_session_init()
394 if (!v9ses->uname) in v9fs_session_init()
397 v9ses->aname = kstrdup(V9FS_DEFANAME, GFP_KERNEL); in v9fs_session_init()
398 if (!v9ses->aname) in v9fs_session_init()
400 init_rwsem(&v9ses->rename_sem); in v9fs_session_init()
402 v9ses->uid = INVALID_UID; in v9fs_session_init()
403 v9ses->dfltuid = V9FS_DEFUID; in v9fs_session_init()
404 v9ses->dfltgid = V9FS_DEFGID; in v9fs_session_init()
406 v9ses->clnt = p9_client_create(dev_name, data); in v9fs_session_init()
407 if (IS_ERR(v9ses->clnt)) { in v9fs_session_init()
408 rc = PTR_ERR(v9ses->clnt); in v9fs_session_init()
413 v9ses->flags = V9FS_ACCESS_USER; in v9fs_session_init()
415 if (p9_is_proto_dotl(v9ses->clnt)) { in v9fs_session_init()
416 v9ses->flags = V9FS_ACCESS_CLIENT; in v9fs_session_init()
417 v9ses->flags |= V9FS_PROTO_2000L; in v9fs_session_init()
418 } else if (p9_is_proto_dotu(v9ses->clnt)) { in v9fs_session_init()
419 v9ses->flags |= V9FS_PROTO_2000U; in v9fs_session_init()
422 rc = v9fs_parse_options(v9ses, data); in v9fs_session_init()
426 v9ses->maxdata = v9ses->clnt->msize - P9_IOHDRSZ; in v9fs_session_init()
428 if (!v9fs_proto_dotl(v9ses) && in v9fs_session_init()
429 ((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_CLIENT)) { in v9fs_session_init()
434 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_session_init()
435 v9ses->flags |= V9FS_ACCESS_USER; in v9fs_session_init()
439 if (!(v9fs_proto_dotu(v9ses) || v9fs_proto_dotl(v9ses)) && in v9fs_session_init()
440 ((v9ses->flags&V9FS_ACCESS_MASK) == V9FS_ACCESS_USER)) { in v9fs_session_init()
442 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_session_init()
443 v9ses->flags |= V9FS_ACCESS_ANY; in v9fs_session_init()
444 v9ses->uid = INVALID_UID; in v9fs_session_init()
446 if (!v9fs_proto_dotl(v9ses) || in v9fs_session_init()
447 !((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_CLIENT)) { in v9fs_session_init()
452 v9ses->flags &= ~V9FS_ACL_MASK; in v9fs_session_init()
455 fid = p9_client_attach(v9ses->clnt, NULL, v9ses->uname, INVALID_UID, in v9fs_session_init()
456 v9ses->aname); in v9fs_session_init()
463 if ((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_SINGLE) in v9fs_session_init()
464 fid->uid = v9ses->uid; in v9fs_session_init()
470 v9fs_cache_session_get_cookie(v9ses); in v9fs_session_init()
473 list_add(&v9ses->slist, &v9fs_sessionlist); in v9fs_session_init()
480 kfree(v9ses->cachetag); in v9fs_session_init()
482 p9_client_destroy(v9ses->clnt); in v9fs_session_init()
484 kfree(v9ses->uname); in v9fs_session_init()
485 kfree(v9ses->aname); in v9fs_session_init()
495 void v9fs_session_close(struct v9fs_session_info *v9ses) in v9fs_session_close() argument
497 if (v9ses->clnt) { in v9fs_session_close()
498 p9_client_destroy(v9ses->clnt); in v9fs_session_close()
499 v9ses->clnt = NULL; in v9fs_session_close()
503 if (v9ses->fscache) in v9fs_session_close()
504 v9fs_cache_session_put_cookie(v9ses); in v9fs_session_close()
505 kfree(v9ses->cachetag); in v9fs_session_close()
507 kfree(v9ses->uname); in v9fs_session_close()
508 kfree(v9ses->aname); in v9fs_session_close()
511 list_del(&v9ses->slist); in v9fs_session_close()
522 void v9fs_session_cancel(struct v9fs_session_info *v9ses) { in v9fs_session_cancel() argument
523 p9_debug(P9_DEBUG_ERROR, "cancel session %p\n", v9ses); in v9fs_session_cancel()
524 p9_client_disconnect(v9ses->clnt); in v9fs_session_cancel()
534 void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses) in v9fs_session_begin_cancel() argument
536 p9_debug(P9_DEBUG_ERROR, "begin cancel session %p\n", v9ses); in v9fs_session_begin_cancel()
537 p9_client_begin_disconnect(v9ses->clnt); in v9fs_session_begin_cancel()
556 struct v9fs_session_info *v9ses; in caches_show() local
559 list_for_each_entry(v9ses, &v9fs_sessionlist, slist) { in caches_show()
560 if (v9ses->cachetag) { in caches_show()
561 n = snprintf(buf, limit, "%s\n", v9ses->cachetag); in caches_show()