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
327 v9ses->uname = kstrdup(V9FS_DEFUSER, GFP_KERNEL); in v9fs_session_init()
328 if (!v9ses->uname) in v9fs_session_init()
331 v9ses->aname = kstrdup(V9FS_DEFANAME, GFP_KERNEL); in v9fs_session_init()
332 if (!v9ses->aname) { in v9fs_session_init()
333 kfree(v9ses->uname); in v9fs_session_init()
336 init_rwsem(&v9ses->rename_sem); in v9fs_session_init()
338 rc = bdi_setup_and_register(&v9ses->bdi, "9p"); in v9fs_session_init()
340 kfree(v9ses->aname); in v9fs_session_init()
341 kfree(v9ses->uname); in v9fs_session_init()
346 list_add(&v9ses->slist, &v9fs_sessionlist); in v9fs_session_init()
349 v9ses->uid = INVALID_UID; in v9fs_session_init()
350 v9ses->dfltuid = V9FS_DEFUID; in v9fs_session_init()
351 v9ses->dfltgid = V9FS_DEFGID; in v9fs_session_init()
353 v9ses->clnt = p9_client_create(dev_name, data); in v9fs_session_init()
354 if (IS_ERR(v9ses->clnt)) { in v9fs_session_init()
355 retval = PTR_ERR(v9ses->clnt); in v9fs_session_init()
356 v9ses->clnt = NULL; in v9fs_session_init()
361 v9ses->flags = V9FS_ACCESS_USER; in v9fs_session_init()
363 if (p9_is_proto_dotl(v9ses->clnt)) { in v9fs_session_init()
364 v9ses->flags = V9FS_ACCESS_CLIENT; in v9fs_session_init()
365 v9ses->flags |= V9FS_PROTO_2000L; in v9fs_session_init()
366 } else if (p9_is_proto_dotu(v9ses->clnt)) { in v9fs_session_init()
367 v9ses->flags |= V9FS_PROTO_2000U; in v9fs_session_init()
370 rc = v9fs_parse_options(v9ses, data); in v9fs_session_init()
376 v9ses->maxdata = v9ses->clnt->msize - P9_IOHDRSZ; in v9fs_session_init()
378 if (!v9fs_proto_dotl(v9ses) && in v9fs_session_init()
379 ((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_CLIENT)) { in v9fs_session_init()
384 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_session_init()
385 v9ses->flags |= V9FS_ACCESS_USER; in v9fs_session_init()
389 if (!(v9fs_proto_dotu(v9ses) || v9fs_proto_dotl(v9ses)) && in v9fs_session_init()
390 ((v9ses->flags&V9FS_ACCESS_MASK) == V9FS_ACCESS_USER)) { in v9fs_session_init()
392 v9ses->flags &= ~V9FS_ACCESS_MASK; in v9fs_session_init()
393 v9ses->flags |= V9FS_ACCESS_ANY; in v9fs_session_init()
394 v9ses->uid = INVALID_UID; in v9fs_session_init()
396 if (!v9fs_proto_dotl(v9ses) || in v9fs_session_init()
397 !((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_CLIENT)) { in v9fs_session_init()
402 v9ses->flags &= ~V9FS_ACL_MASK; in v9fs_session_init()
405 fid = p9_client_attach(v9ses->clnt, NULL, v9ses->uname, INVALID_UID, in v9fs_session_init()
406 v9ses->aname); in v9fs_session_init()
414 if ((v9ses->flags & V9FS_ACCESS_MASK) == V9FS_ACCESS_SINGLE) in v9fs_session_init()
415 fid->uid = v9ses->uid; in v9fs_session_init()
421 v9fs_cache_session_get_cookie(v9ses); in v9fs_session_init()
427 bdi_destroy(&v9ses->bdi); in v9fs_session_init()
437 void v9fs_session_close(struct v9fs_session_info *v9ses) in v9fs_session_close() argument
439 if (v9ses->clnt) { in v9fs_session_close()
440 p9_client_destroy(v9ses->clnt); in v9fs_session_close()
441 v9ses->clnt = NULL; in v9fs_session_close()
445 if (v9ses->fscache) { in v9fs_session_close()
446 v9fs_cache_session_put_cookie(v9ses); in v9fs_session_close()
447 kfree(v9ses->cachetag); in v9fs_session_close()
450 kfree(v9ses->uname); in v9fs_session_close()
451 kfree(v9ses->aname); in v9fs_session_close()
453 bdi_destroy(&v9ses->bdi); in v9fs_session_close()
456 list_del(&v9ses->slist); in v9fs_session_close()
467 void v9fs_session_cancel(struct v9fs_session_info *v9ses) { in v9fs_session_cancel() argument
468 p9_debug(P9_DEBUG_ERROR, "cancel session %p\n", v9ses); in v9fs_session_cancel()
469 p9_client_disconnect(v9ses->clnt); in v9fs_session_cancel()
479 void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses) in v9fs_session_begin_cancel() argument
481 p9_debug(P9_DEBUG_ERROR, "begin cancel session %p\n", v9ses); in v9fs_session_begin_cancel()
482 p9_client_begin_disconnect(v9ses->clnt); in v9fs_session_begin_cancel()
501 struct v9fs_session_info *v9ses; in caches_show() local
504 list_for_each_entry(v9ses, &v9fs_sessionlist, slist) { in caches_show()
505 if (v9ses->cachetag) { in caches_show()
506 n = snprintf(buf, limit, "%s\n", v9ses->cachetag); in caches_show()