aboutsummaryrefslogtreecommitdiffstats
path: root/net/9p
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2010-02-15 12:27:02 -0500
committerEric Van Hensbergen <ericvh@gmail.com>2010-03-05 16:04:41 -0500
commitc1a7c2262035e83a8f70ebe1328b3451702cf51b (patch)
treee5bdb780478c839c20099cc3b5f6ecce7f88c0ea /net/9p
parent37c1209d413242d9560e343c040777049a8dd869 (diff)
net/9p: Handle mount errors correctly.
With this patch we have # mount -t 9p -o trans=virtio virtio2 /mnt/ # mount -t 9p -o trans=virtio virtio2 /mnt/ mount: virtio2 already mounted or /mnt/ busy mount: according to mtab, virtio2 is already mounted on /mnt # mount -t 9p -o trans=virtio virtio3 /mnt/ -o debug=0xfff mount: special device virtio3 does not exist Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'net/9p')
-rw-r--r--net/9p/trans_virtio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 05918d3cb40d..0aaed4819379 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -279,6 +279,7 @@ static int
279p9_virtio_create(struct p9_client *client, const char *devname, char *args) 279p9_virtio_create(struct p9_client *client, const char *devname, char *args)
280{ 280{
281 struct virtio_chan *chan; 281 struct virtio_chan *chan;
282 int ret = -ENOENT;
282 int found = 0; 283 int found = 0;
283 284
284 mutex_lock(&virtio_9p_lock); 285 mutex_lock(&virtio_9p_lock);
@@ -289,13 +290,14 @@ p9_virtio_create(struct p9_client *client, const char *devname, char *args)
289 found = 1; 290 found = 1;
290 break; 291 break;
291 } 292 }
293 ret = -EBUSY;
292 } 294 }
293 } 295 }
294 mutex_unlock(&virtio_9p_lock); 296 mutex_unlock(&virtio_9p_lock);
295 297
296 if (!found) { 298 if (!found) {
297 printk(KERN_ERR "9p: no channels available\n"); 299 printk(KERN_ERR "9p: no channels available\n");
298 return -ENODEV; 300 return ret;
299 } 301 }
300 302
301 client->trans = (void *)chan; 303 client->trans = (void *)chan;