
From: Ulrich Drepper <drepper@redhat.com>

Opening a non-existing block device currently yields an ENXIO error.  Doing
the same for char devices produces the correct error ENODEV.


---

 25-akpm/fs/block_dev.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)

diff -puN fs/block_dev.c~blockdev-open-retval-fix fs/block_dev.c
--- 25/fs/block_dev.c~blockdev-open-retval-fix	2004-03-21 00:00:57.298949288 -0800
+++ 25-akpm/fs/block_dev.c	2004-03-21 00:00:57.300948984 -0800
@@ -550,7 +550,7 @@ static int do_open(struct block_device *
 {
 	struct module *owner = NULL;
 	struct gendisk *disk;
-	int ret = -ENXIO;
+	int ret = -ENODEV;
 	int part;
 
 	file->f_mapping = bdev->bd_inode->i_mapping;
@@ -563,6 +563,7 @@ static int do_open(struct block_device *
 	}
 	owner = disk->fops->owner;
 
+	ret = -ENXIO;
 	down(&bdev->bd_sem);
 	if (!bdev->bd_openers) {
 		bdev->bd_disk = disk;

_
