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