diff options
Diffstat (limited to 'fs/9p/v9fs.c')
| -rw-r--r-- | fs/9p/v9fs.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c index 6c7f6a251115..5c5bc8480070 100644 --- a/fs/9p/v9fs.c +++ b/fs/9p/v9fs.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #include <linux/sched.h> | 29 | #include <linux/sched.h> |
| 30 | #include <linux/parser.h> | 30 | #include <linux/parser.h> |
| 31 | #include <linux/idr.h> | 31 | #include <linux/idr.h> |
| 32 | #include <linux/slab.h> | ||
| 32 | #include <net/9p/9p.h> | 33 | #include <net/9p/9p.h> |
| 33 | #include <net/9p/client.h> | 34 | #include <net/9p/client.h> |
| 34 | #include <net/9p/transport.h> | 35 | #include <net/9p/transport.h> |
| @@ -241,7 +242,7 @@ struct p9_fid *v9fs_session_init(struct v9fs_session_info *v9ses, | |||
| 241 | list_add(&v9ses->slist, &v9fs_sessionlist); | 242 | list_add(&v9ses->slist, &v9fs_sessionlist); |
| 242 | spin_unlock(&v9fs_sessionlist_lock); | 243 | spin_unlock(&v9fs_sessionlist_lock); |
| 243 | 244 | ||
| 244 | v9ses->flags = V9FS_PROTO_2000U | V9FS_ACCESS_USER; | 245 | v9ses->flags = V9FS_ACCESS_USER; |
| 245 | strcpy(v9ses->uname, V9FS_DEFUSER); | 246 | strcpy(v9ses->uname, V9FS_DEFUSER); |
| 246 | strcpy(v9ses->aname, V9FS_DEFANAME); | 247 | strcpy(v9ses->aname, V9FS_DEFANAME); |
| 247 | v9ses->uid = ~0; | 248 | v9ses->uid = ~0; |
| @@ -262,8 +263,10 @@ struct p9_fid *v9fs_session_init(struct v9fs_session_info *v9ses, | |||
| 262 | goto error; | 263 | goto error; |
| 263 | } | 264 | } |
| 264 | 265 | ||
| 265 | if (!p9_is_proto_dotu(v9ses->clnt)) | 266 | if (p9_is_proto_dotl(v9ses->clnt)) |
| 266 | v9ses->flags &= ~V9FS_PROTO_2000U; | 267 | v9ses->flags |= V9FS_PROTO_2000L; |
| 268 | else if (p9_is_proto_dotu(v9ses->clnt)) | ||
| 269 | v9ses->flags |= V9FS_PROTO_2000U; | ||
| 267 | 270 | ||
| 268 | v9ses->maxdata = v9ses->clnt->msize - P9_IOHDRSZ; | 271 | v9ses->maxdata = v9ses->clnt->msize - P9_IOHDRSZ; |
| 269 | 272 | ||
| @@ -340,6 +343,19 @@ void v9fs_session_cancel(struct v9fs_session_info *v9ses) { | |||
| 340 | p9_client_disconnect(v9ses->clnt); | 343 | p9_client_disconnect(v9ses->clnt); |
| 341 | } | 344 | } |
| 342 | 345 | ||
| 346 | /** | ||
| 347 | * v9fs_session_begin_cancel - Begin terminate of a session | ||
| 348 | * @v9ses: session to terminate | ||
| 349 | * | ||
| 350 | * After this call we don't allow any request other than clunk. | ||
| 351 | */ | ||
| 352 | |||
| 353 | void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses) | ||
| 354 | { | ||
| 355 | P9_DPRINTK(P9_DEBUG_ERROR, "begin cancel session %p\n", v9ses); | ||
| 356 | p9_client_begin_disconnect(v9ses->clnt); | ||
| 357 | } | ||
| 358 | |||
| 343 | extern int v9fs_error_init(void); | 359 | extern int v9fs_error_init(void); |
| 344 | 360 | ||
| 345 | static struct kobject *v9fs_kobj; | 361 | static struct kobject *v9fs_kobj; |
