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 /net | |
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.
Diffstat (limited to 'net')
-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 |
5 files changed, 28 insertions, 23 deletions
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 | ||