diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2010-02-15 12:27:02 -0500 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2010-03-05 16:04:41 -0500 |
commit | c1a7c2262035e83a8f70ebe1328b3451702cf51b (patch) | |
tree | e5bdb780478c839c20099cc3b5f6ecce7f88c0ea /net/9p | |
parent | 37c1209d413242d9560e343c040777049a8dd869 (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.c | 4 |
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 | |||
279 | p9_virtio_create(struct p9_client *client, const char *devname, char *args) | 279 | p9_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; |