Lines Matching refs:v9ses
113 static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts) in v9fs_parse_options() argument
123 v9ses->afid = ~0; in v9fs_parse_options()
124 v9ses->debug = 0; in v9fs_parse_options()
125 v9ses->cache = CACHE_NONE; in v9fs_parse_options()
127 v9ses->cachetag = NULL; in v9fs_parse_options()
154 v9ses->debug = option; in v9fs_parse_options()
168 v9ses->dfltuid = make_kuid(current_user_ns(), option); in v9fs_parse_options()
169 if (!uid_valid(v9ses->dfltuid)) { in v9fs_parse_options()
184 v9ses->dfltgid = make_kgid(current_user_ns(), option); in v9fs_parse_options()
185 if (!gid_valid(v9ses->dfltgid)) { in v9fs_parse_options()
200 v9ses->afid = option; in v9fs_parse_options()
203 kfree(v9ses->uname); in v9fs_parse_options()
204 v9ses->uname = match_strdup(&args[0]); in v9fs_parse_options()
205 if (!v9ses->uname) { in v9fs_parse_options()
211 kfree(v9ses->aname); in v9fs_parse_options()
212 v9ses->aname = match_strdup(&args[0]); in v9fs_parse_options()
213 if (!v9ses->aname) { in v9fs_parse_options()
219 v9ses->nodev = 1; in v9fs_parse_options()
222 v9ses->cache = CACHE_LOOSE; in v9fs_parse_options()
225 v9ses->cache = CACHE_FSCACHE; in v9fs_parse_options()
228 v9ses->cache = CACHE_MMAP; in v9fs_parse_options()
232 v9ses->cachetag = match_strdup(&args[0]); in v9fs_parse_options()
249 v9ses->cache = ret; in v9fs_parse_options()
262 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_parse_options()
264 v9ses->flags |= V9FS_ACCESS_USER; in v9fs_parse_options()
266 v9ses->flags |= V9FS_ACCESS_ANY; in v9fs_parse_options()
268 v9ses->flags |= V9FS_ACCESS_CLIENT; in v9fs_parse_options()
271 v9ses->flags |= V9FS_ACCESS_SINGLE; in v9fs_parse_options()
280 v9ses->uid = make_kuid(current_user_ns(), uid); in v9fs_parse_options()
281 if (!uid_valid(v9ses->uid)) { in v9fs_parse_options()
294 v9ses->flags |= V9FS_POSIX_ACL; in v9fs_parse_options()
320 struct p9_fid *v9fs_session_init(struct v9fs_session_info *v9ses, in v9fs_session_init() argument
326 v9ses->uname = kstrdup(V9FS_DEFUSER, GFP_KERNEL); in v9fs_session_init()
327 if (!v9ses->uname) in v9fs_session_init()
330 v9ses->aname = kstrdup(V9FS_DEFANAME, GFP_KERNEL); in v9fs_session_init()
331 if (!v9ses->aname) in v9fs_session_init()
333 init_rwsem(&v9ses->rename_sem); in v9fs_session_init()
335 rc = bdi_setup_and_register(&v9ses->bdi, "9p"); in v9fs_session_init()
339 v9ses->uid = INVALID_UID; in v9fs_session_init()
340 v9ses->dfltuid = V9FS_DEFUID; in v9fs_session_init()
341 v9ses->dfltgid = V9FS_DEFGID; in v9fs_session_init()
343 v9ses->clnt = p9_client_create(dev_name, data); in v9fs_session_init()
344 if (IS_ERR(v9ses->clnt)) { in v9fs_session_init()
345 rc = PTR_ERR(v9ses->clnt); in v9fs_session_init()
350 v9ses->flags = V9FS_ACCESS_USER; in v9fs_session_init()
352 if (p9_is_proto_dotl(v9ses->clnt)) { in v9fs_session_init()
353 v9ses->flags = V9FS_ACCESS_CLIENT; in v9fs_session_init()
354 v9ses->flags |= V9FS_PROTO_2000L; in v9fs_session_init()
355 } else if (p9_is_proto_dotu(v9ses->clnt)) { in v9fs_session_init()
356 v9ses->flags |= V9FS_PROTO_2000U; in v9fs_session_init()
359 rc = v9fs_parse_options(v9ses, data); in v9fs_session_init()
363 v9ses->maxdata = v9ses->clnt->msize - P9_IOHDRSZ; in v9fs_session_init()
365 if (!v9fs_proto_dotl(v9ses) && in v9fs_session_init()
366 ((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_CLIENT)) { in v9fs_session_init()
371 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_session_init()
372 v9ses->flags |= V9FS_ACCESS_USER; in v9fs_session_init()
376 if (!(v9fs_proto_dotu(v9ses) || v9fs_proto_dotl(v9ses)) && in v9fs_session_init()
377 ((v9ses->flags&V9FS_ACCESS_MASK) == V9FS_ACCESS_USER)) { in v9fs_session_init()
379 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_session_init()
380 v9ses->flags |= V9FS_ACCESS_ANY; in v9fs_session_init()
381 v9ses->uid = INVALID_UID; in v9fs_session_init()
383 if (!v9fs_proto_dotl(v9ses) || in v9fs_session_init()
384 !((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_CLIENT)) { in v9fs_session_init()
389 v9ses->flags &= ~V9FS_ACL_MASK; in v9fs_session_init()
392 fid = p9_client_attach(v9ses->clnt, NULL, v9ses->uname, INVALID_UID, in v9fs_session_init()
393 v9ses->aname); in v9fs_session_init()
400 if ((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_SINGLE) in v9fs_session_init()
401 fid->uid = v9ses->uid; in v9fs_session_init()
407 v9fs_cache_session_get_cookie(v9ses); in v9fs_session_init()
410 list_add(&v9ses->slist, &v9fs_sessionlist); in v9fs_session_init()
416 p9_client_destroy(v9ses->clnt); in v9fs_session_init()
418 bdi_destroy(&v9ses->bdi); in v9fs_session_init()
420 kfree(v9ses->uname); in v9fs_session_init()
421 kfree(v9ses->aname); in v9fs_session_init()
431 void v9fs_session_close(struct v9fs_session_info *v9ses) in v9fs_session_close() argument
433 if (v9ses->clnt) { in v9fs_session_close()
434 p9_client_destroy(v9ses->clnt); in v9fs_session_close()
435 v9ses->clnt = NULL; in v9fs_session_close()
439 if (v9ses->fscache) { in v9fs_session_close()
440 v9fs_cache_session_put_cookie(v9ses); in v9fs_session_close()
441 kfree(v9ses->cachetag); in v9fs_session_close()
444 kfree(v9ses->uname); in v9fs_session_close()
445 kfree(v9ses->aname); in v9fs_session_close()
447 bdi_destroy(&v9ses->bdi); in v9fs_session_close()
450 list_del(&v9ses->slist); in v9fs_session_close()
461 void v9fs_session_cancel(struct v9fs_session_info *v9ses) { in v9fs_session_cancel() argument
462 p9_debug(P9_DEBUG_ERROR, "cancel session %p\n", v9ses); in v9fs_session_cancel()
463 p9_client_disconnect(v9ses->clnt); in v9fs_session_cancel()
473 void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses) in v9fs_session_begin_cancel() argument
475 p9_debug(P9_DEBUG_ERROR, "begin cancel session %p\n", v9ses); in v9fs_session_begin_cancel()
476 p9_client_begin_disconnect(v9ses->clnt); in v9fs_session_begin_cancel()
495 struct v9fs_session_info *v9ses; in caches_show() local
498 list_for_each_entry(v9ses, &v9fs_sessionlist, slist) { in caches_show()
499 if (v9ses->cachetag) { in caches_show()
500 n = snprintf(buf, limit, "%s\n", v9ses->cachetag); in caches_show()