diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-25 12:21:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-25 12:21:56 -0400 |
commit | 2a651c7f8d377cf88271374315cbb5fe82eac784 (patch) | |
tree | 00bef7fdd1541d0a96d36410630280dfba24f8b5 | |
parent | c88bc60a3bd3c63da3960076f13a4606c76bf013 (diff) | |
parent | ee294bedb6d0658c9934ef5d96951a22003c8886 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
9p: update Documentation pointers
net/9p: enable 9p to work in non-default network namespace
net/9p: p9_idpool_get return -1 on error
fs/9p: Don't clunk dentry fid when we fail to get a writeback inode
9p: Small cleanup in <net/9p/9p.h>
9p: remove experimental tag from tested configurations
9p: typo fixes and minor cleanups
net/9p: Change linuxdoc names to match functions.
-rw-r--r-- | Documentation/filesystems/9p.txt | 29 | ||||
-rw-r--r-- | fs/9p/Kconfig | 5 | ||||
-rw-r--r-- | fs/9p/vfs_inode_dotl.c | 11 | ||||
-rw-r--r-- | include/net/9p/9p.h | 13 | ||||
-rw-r--r-- | include/net/9p/client.h | 2 | ||||
-rw-r--r-- | include/net/9p/transport.h | 3 | ||||
-rw-r--r-- | net/9p/Kconfig | 8 | ||||
-rw-r--r-- | net/9p/client.c | 30 | ||||
-rw-r--r-- | net/9p/mod.c | 4 | ||||
-rw-r--r-- | net/9p/trans_fd.c | 7 | ||||
-rw-r--r-- | net/9p/util.c | 2 |
11 files changed, 55 insertions, 59 deletions
diff --git a/Documentation/filesystems/9p.txt b/Documentation/filesystems/9p.txt index b22abba78fed..13de64c7f0ab 100644 --- a/Documentation/filesystems/9p.txt +++ b/Documentation/filesystems/9p.txt | |||
@@ -25,6 +25,8 @@ Other applications are described in the following papers: | |||
25 | http://xcpu.org/papers/cellfs-talk.pdf | 25 | http://xcpu.org/papers/cellfs-talk.pdf |
26 | * PROSE I/O: Using 9p to enable Application Partitions | 26 | * PROSE I/O: Using 9p to enable Application Partitions |
27 | http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf | 27 | http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf |
28 | * VirtFS: A Virtualization Aware File System pass-through | ||
29 | http://goo.gl/3WPDg | ||
28 | 30 | ||
29 | USAGE | 31 | USAGE |
30 | ===== | 32 | ===== |
@@ -130,31 +132,20 @@ OPTIONS | |||
130 | RESOURCES | 132 | RESOURCES |
131 | ========= | 133 | ========= |
132 | 134 | ||
133 | Our current recommendation is to use Inferno (http://www.vitanuova.com/nferno/index.html) | 135 | Protocol specifications are maintained on github: |
134 | as the 9p server. You can start a 9p server under Inferno by issuing the | 136 | http://ericvh.github.com/9p-rfc/ |
135 | following command: | ||
136 | ; styxlisten -A tcp!*!564 export '#U*' | ||
137 | 137 | ||
138 | The -A specifies an unauthenticated export. The 564 is the port # (you may | 138 | 9p client and server implementations are listed on |
139 | have to choose a higher port number if running as a normal user). The '#U*' | 139 | http://9p.cat-v.org/implementations |
140 | specifies exporting the root of the Linux name space. You may specify a | ||
141 | subset of the namespace by extending the path: '#U*'/tmp would just export | ||
142 | /tmp. For more information, see the Inferno manual pages covering styxlisten | ||
143 | and export. | ||
144 | 140 | ||
145 | A Linux version of the 9p server is now maintained under the npfs project | 141 | A 9p2000.L server is being developed by LLNL and can be found |
146 | on sourceforge (http://sourceforge.net/projects/npfs). The currently | 142 | at http://code.google.com/p/diod/ |
147 | maintained version is the single-threaded version of the server (named spfs) | ||
148 | available from the same SVN repository. | ||
149 | 143 | ||
150 | There are user and developer mailing lists available through the v9fs project | 144 | There are user and developer mailing lists available through the v9fs project |
151 | on sourceforge (http://sourceforge.net/projects/v9fs). | 145 | on sourceforge (http://sourceforge.net/projects/v9fs). |
152 | 146 | ||
153 | A stand-alone version of the module (which should build for any 2.6 kernel) | 147 | News and other information is maintained on a Wiki. |
154 | is available via (http://github.com/ericvh/9p-sac/tree/master) | 148 | (http://sf.net/apps/mediawiki/v9fs/index.php). |
155 | |||
156 | News and other information is maintained on SWiK (http://swik.net/v9fs) | ||
157 | and the Wiki (http://sf.net/apps/mediawiki/v9fs/index.php). | ||
158 | 149 | ||
159 | Bug reports may be issued through the kernel.org bugzilla | 150 | Bug reports may be issued through the kernel.org bugzilla |
160 | (http://bugzilla.kernel.org) | 151 | (http://bugzilla.kernel.org) |
diff --git a/fs/9p/Kconfig b/fs/9p/Kconfig index 814ac4e213a8..0a93dc1cb4ac 100644 --- a/fs/9p/Kconfig +++ b/fs/9p/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config 9P_FS | 1 | config 9P_FS |
2 | tristate "Plan 9 Resource Sharing Support (9P2000) (Experimental)" | 2 | tristate "Plan 9 Resource Sharing Support (9P2000)" |
3 | depends on INET && NET_9P && EXPERIMENTAL | 3 | depends on INET && NET_9P |
4 | help | 4 | help |
5 | If you say Y here, you will get experimental support for | 5 | If you say Y here, you will get experimental support for |
6 | Plan 9 resource sharing via the 9P2000 protocol. | 6 | Plan 9 resource sharing via the 9P2000 protocol. |
@@ -10,7 +10,6 @@ config 9P_FS | |||
10 | If unsure, say N. | 10 | If unsure, say N. |
11 | 11 | ||
12 | if 9P_FS | 12 | if 9P_FS |
13 | |||
14 | config 9P_FSCACHE | 13 | config 9P_FSCACHE |
15 | bool "Enable 9P client caching support (EXPERIMENTAL)" | 14 | bool "Enable 9P client caching support (EXPERIMENTAL)" |
16 | depends on EXPERIMENTAL | 15 | depends on EXPERIMENTAL |
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index 82a7c38ddad0..691c78f58bef 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c | |||
@@ -259,7 +259,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
259 | if (IS_ERR(inode_fid)) { | 259 | if (IS_ERR(inode_fid)) { |
260 | err = PTR_ERR(inode_fid); | 260 | err = PTR_ERR(inode_fid); |
261 | mutex_unlock(&v9inode->v_mutex); | 261 | mutex_unlock(&v9inode->v_mutex); |
262 | goto error; | 262 | goto err_clunk_old_fid; |
263 | } | 263 | } |
264 | v9inode->writeback_fid = (void *) inode_fid; | 264 | v9inode->writeback_fid = (void *) inode_fid; |
265 | } | 265 | } |
@@ -267,8 +267,8 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
267 | /* Since we are opening a file, assign the open fid to the file */ | 267 | /* Since we are opening a file, assign the open fid to the file */ |
268 | filp = lookup_instantiate_filp(nd, dentry, generic_file_open); | 268 | filp = lookup_instantiate_filp(nd, dentry, generic_file_open); |
269 | if (IS_ERR(filp)) { | 269 | if (IS_ERR(filp)) { |
270 | p9_client_clunk(ofid); | 270 | err = PTR_ERR(filp); |
271 | return PTR_ERR(filp); | 271 | goto err_clunk_old_fid; |
272 | } | 272 | } |
273 | filp->private_data = ofid; | 273 | filp->private_data = ofid; |
274 | #ifdef CONFIG_9P_FSCACHE | 274 | #ifdef CONFIG_9P_FSCACHE |
@@ -278,10 +278,11 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
278 | return 0; | 278 | return 0; |
279 | 279 | ||
280 | error: | 280 | error: |
281 | if (ofid) | ||
282 | p9_client_clunk(ofid); | ||
283 | if (fid) | 281 | if (fid) |
284 | p9_client_clunk(fid); | 282 | p9_client_clunk(fid); |
283 | err_clunk_old_fid: | ||
284 | if (ofid) | ||
285 | p9_client_clunk(ofid); | ||
285 | return err; | 286 | return err; |
286 | } | 287 | } |
287 | 288 | ||
diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h index d2df55b0c213..008711e8e78f 100644 --- a/include/net/9p/9p.h +++ b/include/net/9p/9p.h | |||
@@ -241,10 +241,10 @@ enum p9_open_mode_t { | |||
241 | 241 | ||
242 | /** | 242 | /** |
243 | * enum p9_perm_t - 9P permissions | 243 | * enum p9_perm_t - 9P permissions |
244 | * @P9_DMDIR: mode bite for directories | 244 | * @P9_DMDIR: mode bit for directories |
245 | * @P9_DMAPPEND: mode bit for is append-only | 245 | * @P9_DMAPPEND: mode bit for is append-only |
246 | * @P9_DMEXCL: mode bit for excluse use (only one open handle allowed) | 246 | * @P9_DMEXCL: mode bit for excluse use (only one open handle allowed) |
247 | * @P9_DMMOUNT: mode bite for mount points | 247 | * @P9_DMMOUNT: mode bit for mount points |
248 | * @P9_DMAUTH: mode bit for authentication file | 248 | * @P9_DMAUTH: mode bit for authentication file |
249 | * @P9_DMTMP: mode bit for non-backed-up files | 249 | * @P9_DMTMP: mode bit for non-backed-up files |
250 | * @P9_DMSYMLINK: mode bit for symbolic links (9P2000.u) | 250 | * @P9_DMSYMLINK: mode bit for symbolic links (9P2000.u) |
@@ -362,7 +362,7 @@ struct p9_qid { | |||
362 | }; | 362 | }; |
363 | 363 | ||
364 | /** | 364 | /** |
365 | * struct p9_stat - file system metadata information | 365 | * struct p9_wstat - file system metadata information |
366 | * @size: length prefix for this stat structure instance | 366 | * @size: length prefix for this stat structure instance |
367 | * @type: the type of the server (equivalent to a major number) | 367 | * @type: the type of the server (equivalent to a major number) |
368 | * @dev: the sub-type of the server (equivalent to a minor number) | 368 | * @dev: the sub-type of the server (equivalent to a minor number) |
@@ -687,10 +687,10 @@ struct p9_rwstat { | |||
687 | * @size: prefixed length of the structure | 687 | * @size: prefixed length of the structure |
688 | * @id: protocol operating identifier of type &p9_msg_t | 688 | * @id: protocol operating identifier of type &p9_msg_t |
689 | * @tag: transaction id of the request | 689 | * @tag: transaction id of the request |
690 | * @offset: used by marshalling routines to track currentposition in buffer | 690 | * @offset: used by marshalling routines to track current position in buffer |
691 | * @capacity: used by marshalling routines to track total malloc'd capacity | 691 | * @capacity: used by marshalling routines to track total malloc'd capacity |
692 | * @pubuf: Payload user buffer given by the caller | 692 | * @pubuf: Payload user buffer given by the caller |
693 | * @pubuf: Payload kernel buffer given by the caller | 693 | * @pkbuf: Payload kernel buffer given by the caller |
694 | * @pbuf_size: pubuf/pkbuf(only one will be !NULL) size to be read/write. | 694 | * @pbuf_size: pubuf/pkbuf(only one will be !NULL) size to be read/write. |
695 | * @private: For transport layer's use. | 695 | * @private: For transport layer's use. |
696 | * @sdata: payload | 696 | * @sdata: payload |
@@ -714,7 +714,7 @@ struct p9_fcall { | |||
714 | size_t pbuf_size; | 714 | size_t pbuf_size; |
715 | void *private; | 715 | void *private; |
716 | 716 | ||
717 | uint8_t *sdata; | 717 | u8 *sdata; |
718 | }; | 718 | }; |
719 | 719 | ||
720 | struct p9_idpool; | 720 | struct p9_idpool; |
@@ -728,7 +728,6 @@ void p9_idpool_put(int id, struct p9_idpool *p); | |||
728 | int p9_idpool_check(int id, struct p9_idpool *p); | 728 | int p9_idpool_check(int id, struct p9_idpool *p); |
729 | 729 | ||
730 | int p9_error_init(void); | 730 | int p9_error_init(void); |
731 | int p9_errstr2errno(char *, int); | ||
732 | int p9_trans_fd_init(void); | 731 | int p9_trans_fd_init(void); |
733 | void p9_trans_fd_exit(void); | 732 | void p9_trans_fd_exit(void); |
734 | #endif /* NET_9P_H */ | 733 | #endif /* NET_9P_H */ |
diff --git a/include/net/9p/client.h b/include/net/9p/client.h index 051a99f79769..d26d5e98a173 100644 --- a/include/net/9p/client.h +++ b/include/net/9p/client.h | |||
@@ -60,7 +60,7 @@ enum p9_trans_status { | |||
60 | }; | 60 | }; |
61 | 61 | ||
62 | /** | 62 | /** |
63 | * enum p9_req_status_t - virtio request status | 63 | * enum p9_req_status_t - status of a request |
64 | * @REQ_STATUS_IDLE: request slot unused | 64 | * @REQ_STATUS_IDLE: request slot unused |
65 | * @REQ_STATUS_ALLOC: request has been allocated but not sent | 65 | * @REQ_STATUS_ALLOC: request has been allocated but not sent |
66 | * @REQ_STATUS_UNSENT: request waiting to be sent | 66 | * @REQ_STATUS_UNSENT: request waiting to be sent |
diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h index 8f08c736c4c3..d8549fb9c742 100644 --- a/include/net/9p/transport.h +++ b/include/net/9p/transport.h | |||
@@ -41,6 +41,7 @@ | |||
41 | * @pref: Preferences of this transport | 41 | * @pref: Preferences of this transport |
42 | * @def: set if this transport should be considered the default | 42 | * @def: set if this transport should be considered the default |
43 | * @create: member function to create a new connection on this transport | 43 | * @create: member function to create a new connection on this transport |
44 | * @close: member function to discard a connection on this transport | ||
44 | * @request: member function to issue a request to the transport | 45 | * @request: member function to issue a request to the transport |
45 | * @cancel: member function to cancel a request (if it hasn't been sent) | 46 | * @cancel: member function to cancel a request (if it hasn't been sent) |
46 | * | 47 | * |
@@ -48,7 +49,7 @@ | |||
48 | * transport module with the 9P core network module and used by the client | 49 | * transport module with the 9P core network module and used by the client |
49 | * to instantiate a new connection on a transport. | 50 | * to instantiate a new connection on a transport. |
50 | * | 51 | * |
51 | * BUGS: the transport module list isn't protected. | 52 | * The transport module list is protected by v9fs_trans_lock. |
52 | */ | 53 | */ |
53 | 54 | ||
54 | struct p9_trans_module { | 55 | struct p9_trans_module { |
diff --git a/net/9p/Kconfig b/net/9p/Kconfig index 7ed75c7bd5d1..d9ea09b11cf8 100644 --- a/net/9p/Kconfig +++ b/net/9p/Kconfig | |||
@@ -3,8 +3,8 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | menuconfig NET_9P | 5 | menuconfig NET_9P |
6 | depends on NET && EXPERIMENTAL | 6 | depends on NET |
7 | tristate "Plan 9 Resource Sharing Support (9P2000) (Experimental)" | 7 | tristate "Plan 9 Resource Sharing Support (9P2000)" |
8 | help | 8 | help |
9 | If you say Y here, you will get experimental support for | 9 | If you say Y here, you will get experimental support for |
10 | Plan 9 resource sharing via the 9P2000 protocol. | 10 | Plan 9 resource sharing via the 9P2000 protocol. |
@@ -16,8 +16,8 @@ menuconfig NET_9P | |||
16 | if NET_9P | 16 | if NET_9P |
17 | 17 | ||
18 | config NET_9P_VIRTIO | 18 | config NET_9P_VIRTIO |
19 | depends on EXPERIMENTAL && VIRTIO | 19 | depends on VIRTIO |
20 | tristate "9P Virtio Transport (Experimental)" | 20 | tristate "9P Virtio Transport" |
21 | help | 21 | help |
22 | This builds support for a transports between | 22 | This builds support for a transports between |
23 | guest partitions and a host partition. | 23 | guest partitions and a host partition. |
diff --git a/net/9p/client.c b/net/9p/client.c index ceab943dfc49..9e3b0e640da1 100644 --- a/net/9p/client.c +++ b/net/9p/client.c | |||
@@ -92,9 +92,6 @@ static int get_protocol_version(const substring_t *name) | |||
92 | return version; | 92 | return version; |
93 | } | 93 | } |
94 | 94 | ||
95 | static struct p9_req_t * | ||
96 | p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...); | ||
97 | |||
98 | /** | 95 | /** |
99 | * parse_options - parse mount options into client structure | 96 | * parse_options - parse mount options into client structure |
100 | * @opts: options string passed from mount | 97 | * @opts: options string passed from mount |
@@ -307,12 +304,13 @@ static int p9_tag_init(struct p9_client *c) | |||
307 | c->tagpool = p9_idpool_create(); | 304 | c->tagpool = p9_idpool_create(); |
308 | if (IS_ERR(c->tagpool)) { | 305 | if (IS_ERR(c->tagpool)) { |
309 | err = PTR_ERR(c->tagpool); | 306 | err = PTR_ERR(c->tagpool); |
310 | c->tagpool = NULL; | ||
311 | goto error; | 307 | goto error; |
312 | } | 308 | } |
313 | 309 | err = p9_idpool_get(c->tagpool); /* reserve tag 0 */ | |
314 | p9_idpool_get(c->tagpool); /* reserve tag 0 */ | 310 | if (err < 0) { |
315 | 311 | p9_idpool_destroy(c->tagpool); | |
312 | goto error; | ||
313 | } | ||
316 | c->max_tag = 0; | 314 | c->max_tag = 0; |
317 | error: | 315 | error: |
318 | return err; | 316 | return err; |
@@ -518,12 +516,15 @@ out_err: | |||
518 | return err; | 516 | return err; |
519 | } | 517 | } |
520 | 518 | ||
519 | static struct p9_req_t * | ||
520 | p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...); | ||
521 | |||
521 | /** | 522 | /** |
522 | * p9_client_flush - flush (cancel) a request | 523 | * p9_client_flush - flush (cancel) a request |
523 | * @c: client state | 524 | * @c: client state |
524 | * @oldreq: request to cancel | 525 | * @oldreq: request to cancel |
525 | * | 526 | * |
526 | * This sents a flush for a particular requests and links | 527 | * This sents a flush for a particular request and links |
527 | * the flush request to the original request. The current | 528 | * the flush request to the original request. The current |
528 | * code only supports a single flush request although the protocol | 529 | * code only supports a single flush request although the protocol |
529 | * allows for multiple flush requests to be sent for a single request. | 530 | * allows for multiple flush requests to be sent for a single request. |
@@ -789,11 +790,13 @@ struct p9_client *p9_client_create(const char *dev_name, char *options) | |||
789 | spin_lock_init(&clnt->lock); | 790 | spin_lock_init(&clnt->lock); |
790 | INIT_LIST_HEAD(&clnt->fidlist); | 791 | INIT_LIST_HEAD(&clnt->fidlist); |
791 | 792 | ||
792 | p9_tag_init(clnt); | 793 | err = p9_tag_init(clnt); |
794 | if (err < 0) | ||
795 | goto free_client; | ||
793 | 796 | ||
794 | err = parse_opts(options, clnt); | 797 | err = parse_opts(options, clnt); |
795 | if (err < 0) | 798 | if (err < 0) |
796 | goto free_client; | 799 | goto destroy_tagpool; |
797 | 800 | ||
798 | if (!clnt->trans_mod) | 801 | if (!clnt->trans_mod) |
799 | clnt->trans_mod = v9fs_get_default_trans(); | 802 | clnt->trans_mod = v9fs_get_default_trans(); |
@@ -802,13 +805,12 @@ struct p9_client *p9_client_create(const char *dev_name, char *options) | |||
802 | err = -EPROTONOSUPPORT; | 805 | err = -EPROTONOSUPPORT; |
803 | P9_DPRINTK(P9_DEBUG_ERROR, | 806 | P9_DPRINTK(P9_DEBUG_ERROR, |
804 | "No transport defined or default transport\n"); | 807 | "No transport defined or default transport\n"); |
805 | goto free_client; | 808 | goto destroy_tagpool; |
806 | } | 809 | } |
807 | 810 | ||
808 | clnt->fidpool = p9_idpool_create(); | 811 | clnt->fidpool = p9_idpool_create(); |
809 | if (IS_ERR(clnt->fidpool)) { | 812 | if (IS_ERR(clnt->fidpool)) { |
810 | err = PTR_ERR(clnt->fidpool); | 813 | err = PTR_ERR(clnt->fidpool); |
811 | clnt->fidpool = NULL; | ||
812 | goto put_trans; | 814 | goto put_trans; |
813 | } | 815 | } |
814 | 816 | ||
@@ -834,6 +836,8 @@ destroy_fidpool: | |||
834 | p9_idpool_destroy(clnt->fidpool); | 836 | p9_idpool_destroy(clnt->fidpool); |
835 | put_trans: | 837 | put_trans: |
836 | v9fs_put_trans(clnt->trans_mod); | 838 | v9fs_put_trans(clnt->trans_mod); |
839 | destroy_tagpool: | ||
840 | p9_idpool_destroy(clnt->tagpool); | ||
837 | free_client: | 841 | free_client: |
838 | kfree(clnt); | 842 | kfree(clnt); |
839 | return ERR_PTR(err); | 843 | return ERR_PTR(err); |
@@ -1298,7 +1302,7 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset, | |||
1298 | if (count < rsize) | 1302 | if (count < rsize) |
1299 | rsize = count; | 1303 | rsize = count; |
1300 | 1304 | ||
1301 | /* Don't bother zerocopy form small IO (< 1024) */ | 1305 | /* Don't bother zerocopy for small IO (< 1024) */ |
1302 | if (((clnt->trans_mod->pref & P9_TRANS_PREF_PAYLOAD_MASK) == | 1306 | if (((clnt->trans_mod->pref & P9_TRANS_PREF_PAYLOAD_MASK) == |
1303 | P9_TRANS_PREF_PAYLOAD_SEP) && (rsize > 1024)) { | 1307 | P9_TRANS_PREF_PAYLOAD_SEP) && (rsize > 1024)) { |
1304 | req = p9_client_rpc(clnt, P9_TREAD, "dqE", fid->fid, offset, | 1308 | req = p9_client_rpc(clnt, P9_TREAD, "dqE", fid->fid, offset, |
diff --git a/net/9p/mod.c b/net/9p/mod.c index cf8a4128cd5c..72c398275051 100644 --- a/net/9p/mod.c +++ b/net/9p/mod.c | |||
@@ -139,7 +139,7 @@ void v9fs_put_trans(struct p9_trans_module *m) | |||
139 | } | 139 | } |
140 | 140 | ||
141 | /** | 141 | /** |
142 | * v9fs_init - Initialize module | 142 | * init_p9 - Initialize module |
143 | * | 143 | * |
144 | */ | 144 | */ |
145 | static int __init init_p9(void) | 145 | static int __init init_p9(void) |
@@ -154,7 +154,7 @@ static int __init init_p9(void) | |||
154 | } | 154 | } |
155 | 155 | ||
156 | /** | 156 | /** |
157 | * v9fs_init - shutdown module | 157 | * exit_p9 - shutdown module |
158 | * | 158 | * |
159 | */ | 159 | */ |
160 | 160 | ||
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index 4a9084395d35..fdfdb5747f63 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c | |||
@@ -916,8 +916,8 @@ p9_fd_create_tcp(struct p9_client *client, const char *addr, char *args) | |||
916 | sin_server.sin_family = AF_INET; | 916 | sin_server.sin_family = AF_INET; |
917 | sin_server.sin_addr.s_addr = in_aton(addr); | 917 | sin_server.sin_addr.s_addr = in_aton(addr); |
918 | sin_server.sin_port = htons(opts.port); | 918 | sin_server.sin_port = htons(opts.port); |
919 | err = sock_create_kern(PF_INET, SOCK_STREAM, IPPROTO_TCP, &csocket); | 919 | err = __sock_create(read_pnet(¤t->nsproxy->net_ns), PF_INET, |
920 | 920 | SOCK_STREAM, IPPROTO_TCP, &csocket, 1); | |
921 | if (err) { | 921 | if (err) { |
922 | P9_EPRINTK(KERN_ERR, "p9_trans_tcp: problem creating socket\n"); | 922 | P9_EPRINTK(KERN_ERR, "p9_trans_tcp: problem creating socket\n"); |
923 | return err; | 923 | return err; |
@@ -954,7 +954,8 @@ p9_fd_create_unix(struct p9_client *client, const char *addr, char *args) | |||
954 | 954 | ||
955 | sun_server.sun_family = PF_UNIX; | 955 | sun_server.sun_family = PF_UNIX; |
956 | strcpy(sun_server.sun_path, addr); | 956 | strcpy(sun_server.sun_path, addr); |
957 | err = sock_create_kern(PF_UNIX, SOCK_STREAM, 0, &csocket); | 957 | err = __sock_create(read_pnet(¤t->nsproxy->net_ns), PF_UNIX, |
958 | SOCK_STREAM, 0, &csocket, 1); | ||
958 | if (err < 0) { | 959 | if (err < 0) { |
959 | P9_EPRINTK(KERN_ERR, "p9_trans_unix: problem creating socket\n"); | 960 | P9_EPRINTK(KERN_ERR, "p9_trans_unix: problem creating socket\n"); |
960 | return err; | 961 | return err; |
diff --git a/net/9p/util.c b/net/9p/util.c index da6af81e59d9..9c1c9348ac35 100644 --- a/net/9p/util.c +++ b/net/9p/util.c | |||
@@ -93,7 +93,7 @@ int p9_idpool_get(struct p9_idpool *p) | |||
93 | 93 | ||
94 | retry: | 94 | retry: |
95 | if (idr_pre_get(&p->pool, GFP_NOFS) == 0) | 95 | if (idr_pre_get(&p->pool, GFP_NOFS) == 0) |
96 | return 0; | 96 | return -1; |
97 | 97 | ||
98 | spin_lock_irqsave(&p->lock, flags); | 98 | spin_lock_irqsave(&p->lock, flags); |
99 | 99 | ||