From: Ulrich Drepper 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; _